MySQL的MEMORY存储引擎的替代品

L. *_*sio 5 mysql performance storage-engines

我目前正在针对MyISAM表运行一些密集的SELECT查询.该表大约100 MiB(800,000行),它永远不会改变.

我需要提高我的脚本的性能,所以我正在考虑将表从MyISAM移动到MEMORY存储引擎,所以我可以将它完全加载到内存中.

除了MEMORY存储引擎,我有什么选择将100 MiB表加载到内存中?

Uwe*_*cke 4

无论您使用什么存储引擎,具有 800k 行的表对于 mysql 来说都不应该有任何问题。大小为 100 MB 的完整表(数据和键)应位于内存中(mysql 键缓存、操作系统文件缓存或两者)。

首先,您检查索引。在大多数情况下,优化索引可以为您带来最佳的性能提升。除非您非常确定它们状况良好,否则不要做任何其他事情。使用以下命令调用查询EXPLAIN并观察未使用索引或使用错误索引的情况。这应该使用真实世界的数据来完成,而不是在具有测试数据的服务器上完成。

优化索引后,查询应该会在不到一秒的时间内完成。如果查询仍然太慢,那么请尝试通过在应用程序中使用缓存(memcached 等)来避免运行它们。鉴于表中的数据永远不会改变,旧的缓存数据等不应该有任何问题。