mysql 参数调优(10)之 tmp

https://dev.mysql.com/doc/refman/8.0/en/internal-temporary-tables.html

tmp_table_size默认16M。tmp_table_size如果过小,存不下了就会存到磁盘上。对于group by会有性能影响。

下面的sql EXPLAIN 如下,出现了Using temporary。表示查询会利用临时表。

在默认tmp_table_size大小16M下执行:

查看临时表统计信息,Created_tmp_disk_tables 为0,Created_tmp_tables 为1表示上诉sql执行后生产了一张内存里的临时表。

将tmp_table_size 调从16M调整为16K

再次执行,查询时间从4变成了18秒

重新统计

再次查看status,这次有在磁盘上创建1个临时表。

设置为32M

Percona Server中的临时表信息会记录到慢查询日志
由于MySQL慢查询日志里没有使用临时表的信息,这就给我们诊断性能问题带来了一些不便,第三方的版本如Percona Server,在慢查询里可以有更详细的信息,将会记录临时表使用的情况,从而有助于我们诊断和调优。

mysql8中对临时表有较大的优化
临时表引擎使用innodb(default 磁盘)和temptable(default 内存)



扩展阅读:mysql分页查询limit ... mysql qps ... 索尼s&q功能是什么 ... mysql数据库连接参数 ... jvm调优 ... mysql sql优化 ... mysql 配置参数调优 ... mysql调优的几种方式 ... mysql ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网