数据科学工作负载的MySQL配置?

数据科学工作负载的MySQL配置?,mysql,performance,Mysql,Performance,我在web上找到的所有关于调优MySQL以提高性能的建议都涉及到具有大量连接和许多重复查询的生产数据库。这不是我的工作负载,相反,我正在使用MySQL进行数据调查,我是MySQL的唯一用户,数据不会经常更改(仅限批量导入),并且在任何给定时间我可能拥有的连接数都小于20。我拥有的数据比较大(几百gig,表中有5000万行,其中有一堆字符串),但我编写的查询很少每次运行超过几次 我有一本关于MySQL的O'Reilly Schwartz等人的书,对于理解如何让一些东西(比如索引)发挥我的优势来说,

我在web上找到的所有关于调优MySQL以提高性能的建议都涉及到具有大量连接和许多重复查询的生产数据库。这不是我的工作负载,相反,我正在使用MySQL进行数据调查,我是MySQL的唯一用户,数据不会经常更改(仅限批量导入),并且在任何给定时间我可能拥有的连接数都小于20。我拥有的数据比较大(几百gig,表中有5000万行,其中有一堆字符串),但我编写的查询很少每次运行超过几次

我有一本关于MySQL的O'Reilly Schwartz等人的书,对于理解如何让一些东西(比如索引)发挥我的优势来说,这是天赐良机。然而,我对这种工作负载的服务器参数感到不太舒服,因为我在web上几乎找不到示例。以下是我运行时使用的非库存(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
我的服务器是一个32GB的多核内存机器(四核,似乎浪费在MySQL上,但有时我会一次查询几个问题)。现在看来MySQL的内存限制在12GB,可能是因为innodb\u buffer\u池的大小。我把
tmp_table_size
heap size
设置得非常好,因为我一直在做一些查询,其中存储了大量内存


有什么好的资源可以让MySQL适应这种工作负载吗?有没有关于我应该为innodb设置哪些参数的建议?

我想你不必再调整innodb引擎的性能了。真正的性能提升将体现在您构造表和编写查询的方式上。确保对您选择的列进行了索引,选择了合理的主键,等等。只要您有一个好的主键,具有50M行的表就不会有问题

如果您还没有遇到任何性能瓶颈,那么我认为没有理由担心