我在网上找到的关于调整 MySQL 性能的所有建议都涉及具有大量连接和许多重复查询的生产数据库。这不是我的工作量,相反,我正在使用 MySQL 进行数据调查,我是唯一的用户,数据不会经常更改(仅限批量导入),并且我在任何给定时间可能拥有的连接数是< 20. 我拥有的数据很大(数百个演出,具有 5000 万行的表,其中包含一堆字符串),但我编写的查询很少每次运行超过几次。
我有 O'Reilly Schwartz 等人。关于 MySQL 的书,它是理解如何使某些东西(如索引)对我有利的工作的天赐之物。然而,我对这种工作负载的服务器参数感觉不太舒服,因为我在网上找不到几个例子。以下是我运行时使用的非库存(MySQL 5.5、Ubuntu)参数:
max_heap_table_size=32G
tmp_table_size=32G
join_buffer_size=6G
innodb_buffer_pool_size=10G
innodb_buffer_pool_instances=2
sort_buffer_size=100M
我的服务器是一台多核(四核,似乎浪费在 MySQL 上,但有时我会同时处理几个查询)32GB RAM 机器。现在看来 MySQL 将自己限制为 12GB 的内存,可能是因为 innodb_buffer_pool
大小。我将 tmp_table_size
和 heap size
设置得非常理想,因为我一直在做一些查询,而我在内存中存储了很多内容。
是否有任何好的资源可以调整 MySQL 以适应这种工作负载?关于我应该为 innodb
设置哪些参数有什么建议吗?
最佳答案
我认为您不必再调整 InnoDB 引擎的性能了。真正的性能提升将体现在您构建表的方式和您编写的查询中。确保您选择的列已编入索引,选择了合理的主键等。只要您有一个好的主键,具有 5000 万行的表应该不是问题。
如果您还没有遇到任何性能瓶颈,那么我认为没有理由担心。
关于用于数据科学工作负载的 MySQL 配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21439392/