大数据库表和繁忙站点上的ajax自动完成查询的有效方法
Posted
技术标签:
【中文标题】大数据库表和繁忙站点上的ajax自动完成查询的有效方法【英文标题】:Effcient method for ajax autocomplete query on big db table and busy site 【发布时间】:2011-05-02 17:16:12 【问题描述】:我们都熟悉 SO 上的自动完成标记设置。
我想知道在这种情况下查询标签表最有效的方法是什么。
有许多用户使用自动完成功能标记离开的繁忙网站需要大量查询。假设任何时候有 100 个用户平均输入 10 个字符来查找/创建他们的标签。这似乎是对单个表的大量查询,而这只是繁忙站点的一个方面。
那么,这只是确保您在发出请求之前在客户端有合理的延迟,还是对数据表进行智能索引,还是定期将数据卸载到更高效的服务器端查找存储?
如果有任何提示,我将不胜感激。
【问题讨论】:
不确定这是否是重复的,但我认为这对 SO 来说是一个很好的问题;与许多新程序员相关的一个。 【参考方案1】:将所有自动完成选项存储在内存中。您可以使用 Trie 快速过滤选项(例如this Java implementation)。无论 Trie 中有多少选项,它都将保持O(1)
效率。
【讨论】:
+1 ;每当网站用户在页面上的框中键入字符时,一想到服务器上的数据库连接就会抖动,我不寒而栗!【参考方案2】:嗯,你不应该问。这应该被缓存。像这样想。假设 SO 上有 28,000 个标签。假设每个标签是 128 字节(不是)。那只是 3,584,000 字节(基本上没有)。有许多内存中的数据结构可以非常快速地搜索这些数据。
【讨论】:
好的,将选项存储在内存中是有意义的。但我认为这并不意味着一个常规数组,因为每次发出请求时都需要从查询中填充它。内存解决方案有哪些? 我猜是 APC,因为我可以用它来缓存数据库结果,它也可以处理 PHP 脚本缓存。以上是关于大数据库表和繁忙站点上的ajax自动完成查询的有效方法的主要内容,如果未能解决你的问题,请参考以下文章