【发布时间】:2014-01-20 08:02:27
【问题描述】:
由于 MySql 将临时表复制到磁盘,我的网站性能非常缓慢。
增加 tmp_table_size 和 max_heap_table 大小解决了这个问题。 VPS 有 1.5 GB 内存。我可以安全地将这些变量设置多高?
【问题讨论】:
标签: mysql database-performance temp-tables
由于 MySql 将临时表复制到磁盘,我的网站性能非常缓慢。
增加 tmp_table_size 和 max_heap_table 大小解决了这个问题。 VPS 有 1.5 GB 内存。我可以安全地将这些变量设置多高?
【问题讨论】:
标签: mysql database-performance temp-tables
请记住,每个线程都可以在内存中拥有自己的临时表(如果您有极其复杂的查询,甚至可以有多个临时表),因此您可能会遇到内存使用高峰。
如果你将 tmp_table_size 和 max_heap_table_size 增加太多,你可能会迫使 mysqld 进程交换到虚拟内存,这不会比你原来临时表进入磁盘的问题更好。
您不需要使 tmp_table_size 等于您将创建的最大临时表,您只需要它足够大,以便大多数临时表保留在 RAM 中。
我建议适度增加这些配置变量,然后监视SHOW GLOBAL STATUS LIKE 'Created_tmp_disk_tables' 以查看该状态指示器的增加率是否降低。
您可以使用pt-mext 之类的工具来监控状态变量的变化率,或者使用带有Percona Monitoring Plugins 的Cacti 进行监控。
【讨论】: