<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">最近遇到一个问题,在一台MySQL上进行大量的load data, create temporary table, join update等等操作,整个流程下来需要20个小时。这是一个用mysql进行大数据处理的例子,虽说大数据,但实际数据量停留在千万的级别上,这样效率已经特别低了。</span>
随手查了下系统变量: show global variables. 发现key_buffer_size 等等参数最大不过16M, 一查机器配置,64GB内存的REHL5, 2.6.18的内核。。。
那么问题来了,如何配置一台内存64GB的MySQL Server呢?以下是自己大体估算,修改的一份配置文件:
[mysqld]
....
key_buffer_size = 10240M
max_allowed_packet = 8M
table_open_cache = 512
sort_buffer_size = 512M
read_buffer_size = 256M
read_rnd_buffer_size = 256M
myisam_sort_buffer_size = 512M
thread_concurrency = 16
max_connections = 3000
query_cache_limit = 2M
query_cache_size = 256M
tmp_table_size = 4096M
max_heap_table_size = 4096M
join_buffer_size = 4096M
重启服务器后,再次运行整个流程,这次时间只用了3个小时。看来参数设置对MySQL Server性能的影响是比较大的。
SDE大都对数据库系统有一定了解,但能够特别深入的比较少,我自己也属于这种情况。因此趁此机会,利用可以接下来的假期一点点研究下MySQL的各类参数对性能的影响,参数的优化等等