【问题标题】:Fastest MySQL Engine for Extremely Large Queries用于超大型查询的最快 MySQL 引擎
【发布时间】:2014-02-02 12:55:08
【问题描述】:

我正在开发一个“搜索引擎”式的网站。在测试过程中,该站点在传统 MySQL 数据库中搜索了 40,000 个条目以获取各种不同的标准,然后根据总体排名对每个条目进行排序和显示。这种级别的数据性能非常好,平均在 2-3 秒内返回结果。

充满信心,我将数据库中的条目从 40,000 增加到大约 325,000。现在,搜索数据库大约需要 4 分钟。单次搜索使用约 2GB 的 RAM!此外,我从服务器收到了一些警告消息:)

我觉得代码已经尽可能地优化了。如果我再努力一个月,我可能会获得 1% 的性能提升。所以我的问题是,对于超大型数据集/查询,最快的开源 MySQL 引擎是什么?

我读过有关 MemSQL 的文章,它看起来很棒,但它不是免费的(甚至接近于负担得起的)。我不知道确切的美元数字,但我听说 5,000 美元/许可证/服务器。

有什么想法、建议吗?目前,我使用 MyISAM。我愿意接受任何与 MySQL 兼容的替代方案。

我意识到在某个时候我需要更强大的硬件,但目前还没有解决方案。

【问题讨论】:

  • 325,000 行并不是特别大。但是,您没有提供任何有用的信息来实际帮助提高性能。
  • 我愿意提供任何有用的信息。你需要什么?
  • 示例查询、表格架构、少量示例数据、警告消息是什么、表格上有哪些索引是一个好的开始
  • 大多数情况下,数据库运行缓慢是因为设计不当。您的架构对数百万条记录很重要,因为它会影响文件空间、内存等。为要存储的数据选择正确的字段类型,设计适当的索引等。我使用 MySQL 开发的应用程序可以存储 10 到 1 亿条记录,所以它是并不总是只是移动到不同的服务器
  • 我会在一分钟内用这些数据更新帖子。忍受我。

标签: mysql sql performance


【解决方案1】:

数据库不是搜索引擎。

试图把它哄成一个是自找麻烦。特别是考虑到数据库几乎总是在履行双重职责。因此,除了处理原子性和 ACID 合规性、检查一致性和管理事务之外,您现在还要求它成为一个搜索引擎。

您可以轻松解决您现在面临的问题(可能是添加索引和调整内存使用的情况;EXPLAIN statement 是您的朋友),因为您的数据集非常小,但很快您就会遇到更多问题。

搜索引擎不是建立在数据库之上是有原因的。

有很多选项供您选择。流行的是solr,因为它具有纯搜索和索引功能,elasticsearch 更像是一个用于大型分布式查询的平台。

在我看来,最容易理解的是 solr,它允许您创建“Google”风格的搜索——即搜索文档、创建索引、突出显示匹配项。它很容易与数据库集成。试试这个5 minute tutorial,了解它是如何工作的。它是一个开源的 Apache 项目。

【讨论】:

    猜你喜欢
    • 2011-02-18
    • 2013-07-10
    • 2023-04-05
    • 1970-01-01
    • 2016-12-27
    • 2011-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多