MySQL Status Created_tmp_disk_tables 数据库状态作用意思及如何正确
本站中文解释
:
Created_tmp_disk_tables是MySQL status变量之一,它代表着MySQL自建构建的临时物理文件次数。MySQL会根据计算,将每次需要被排序的数据量大于max_heap_table_size的排序操作所需的临时空间(sort_buffer_size)拆成一个个小内存表,然后将内存表中的数据,拆分成各小块数据,暂存到磁盘中,再将拆分后的数据进行重新排序。如果出现 Created_tmp_disk_tables较高,表示改查询产生了大量的暂存文件,可能由于物理磁盘的读写性能不够,导致排序的时间变长。
要设置Created_tmp_disk_tables变量,可以通过如下步骤:
1、登录MySQL服务器,执行set global @@max_heap_table_size=0; 设置max_heap_table_size为0,即全部使用辅助内存;
2、登录MySQL服务器,执行set global @@sort_buffer_size=XXX; 指定之sort_buffer_size 最大值;
3、登录MySQL服务器,执行set global @@tmp_table_size=YYY; 指定之tmp_table_size 为尽可能小,以控制Created_tmp_disk_tables的值;
4、登录MySQL服务器,执行show status like ‘created_tmp_disk_tables’ 查看是否有该值,若有,可调整配置;
5、将MySQL服务器的磁盘写入性能尽可能的提高,如将磁盘阵列、更换为SSD磁盘。
上述步骤中,只有步骤1和步骤5是重要的,分别可以控制MySQL查询使用多大的辅助内存空间,以及提升磁盘的写入性能。此外,应该合理配置sort_buffer_size和tmp_table_size的大小,便于合理控制Created_tmp_disk_tables的值,减少暂存表的使用,从而提高数据库的查询性能。