我有一些非常大的数据库(一些高达 150M 行)我正在使用&在最初插入数据之后没有太多INSERT's
事情发生;只是很多SELECT's
& 的用法JOINS
。
我一直在使用 InfoBright(社区版本),虽然我相信它是一个很好的引擎,但我个人在让它按应有的方式运行(快速)方面遇到了一些问题。
所以我想知道是否有人可以为 MySQL 推荐任何其他快速免费的存储引擎?
我现在才退房tokudb
;还有什么要检查的吗?
我有一些非常大的数据库(一些高达 150M 行)我正在使用&在最初插入数据之后没有太多INSERT's
事情发生;只是很多SELECT's
& 的用法JOINS
。
我一直在使用 InfoBright(社区版本),虽然我相信它是一个很好的引擎,但我个人在让它按应有的方式运行(快速)方面遇到了一些问题。
所以我想知道是否有人可以为 MySQL 推荐任何其他快速免费的存储引擎?
我现在才退房tokudb
;还有什么要检查的吗?
你也应该看看InfiniDB。http://infinidb.org/(最快的之一)
在对任何引擎进行基准测试之前,您需要考虑很多因素。多核处理器、内存、配置等硬件。设计与您的架构等相关的东西,以及所有这些如何影响引擎性能。
请查看此博客以了解他们如何对引擎进行基准测试(它命名了其他引擎类型) - http://www.mysqlperformanceblog.com/2010/01/07/star-schema-bechmark-infobright-infinidb-and-luciddb/
请注意,此比较适用于星型模式设计。如果柱状数据库引擎不符合您的要求,您可以查看XtraDB,它是 InnoDB 的扩展版本(不是最快的,但符合 ACID)。
ps - 始终跟踪每个引擎的属性(对您很重要) - 例如引用完整性检查、ACID 合规性等。与查询性能提高 10% 相比,有时这些限制可能会成为更大的交易破坏者
除了考虑您使用的 DBMS 之外,您还应该专注于优化您的表、索引和查询。每当您有多个连接时,首先连接最具选择性的关系,然后再连接不太选择性的关系。分析您的查询执行计划。在 QEP 中经常被命中的列上创建索引。
你有没有看过狮身人面像?虽然它是一个搜索引擎,但它也支持无查询搜索,这类似于带有索引的标准 SELECT 查询。我发现它在处理大型数据集时有很大帮助。它的速度非常快,并且在拥有数百万(或数亿)帖子的高流量论坛中被大量使用。
还有一个名为 SphinxSE 的 MySQL 插件,它允许它充当 MySQL 存储引擎,这使得集成非常容易设置。您通过向索引器程序提供查询来构建索引,然后一旦设置完成,您就可以像查询普通表一样查询它。
http://sphinxsearch.com/docs/2.0.1/sphinxse-overview.html(注意,自 1.0 之前的版本以来我并没有使用太多)
Brett - 使用 Infobright 时,您可以通过以下方式获得最佳性能提升:1) 尽可能多地利用知识网格 2) 减少连接 3) 创建“查找”
由于知识网格是在内存中的,因此您只需添加额外的过滤器就可以减少大量查询时间。此外,请考虑使用嵌套选择而不是连接。通过这样做,您可以使用已经创建的知识节点(而不是动态生成一个包到包节点)。
如果您有一些您认为应该更快的查询,请发布它们,我可以帮助您修改查询以使其运行得更快。
干杯,
杰夫