L. *_*sio 5 mysql performance storage-engines
我目前正在针对MyISAM表运行一些密集的SELECT查询.该表大约100 MiB(800,000行),它永远不会改变.
我需要提高我的脚本的性能,所以我正在考虑将表从MyISAM移动到MEMORY存储引擎,所以我可以将它完全加载到内存中.
除了MEMORY存储引擎,我有什么选择将100 MiB表加载到内存中?
无论您使用什么存储引擎,具有 800k 行的表对于 mysql 来说都不应该有任何问题。大小为 100 MB 的完整表(数据和键)应位于内存中(mysql 键缓存、操作系统文件缓存或两者)。
首先,您检查索引。在大多数情况下,优化索引可以为您带来最佳的性能提升。除非您非常确定它们状况良好,否则不要做任何其他事情。使用以下命令调用查询EXPLAIN
并观察未使用索引或使用错误索引的情况。这应该使用真实世界的数据来完成,而不是在具有测试数据的服务器上完成。
优化索引后,查询应该会在不到一秒的时间内完成。如果查询仍然太慢,那么请尝试通过在应用程序中使用缓存(memcached 等)来避免运行它们。鉴于表中的数据永远不会改变,旧的缓存数据等不应该有任何问题。
归档时间: |
|
查看次数: |
4939 次 |
最近记录: |