MySQL 临时表

阅读更多

我们会在一些SQL查询中分析出现 Using temporary 的状态,这意味着查询过程中需要创建临时表来储存中间数据,我们需要通过合理的索引来避免它。另一方面,当临时表在所难免时,我们也要尽量减少临时表本身的开销,通过 mysqlreport 报告中的 Created Temp 部分,我们可以看到:


MySQL 临时表_第1张图片
MySQL 可以将临时表创建在磁盘(Disk table),内存(Table)以及临时文件(File)中,显然,在磁盘上创建临时表的开销最大,所以我们希望 MySQL 尽量不要在磁盘上创建临时表。

 

如果你在 show processlist 中看到某些查询的状态为 Copying to tmp table on disk,这也意味着 MySQL 将临时表从内存转移到磁盘中,以节省内存空间。

 

在 MySQL 的配置中,我们可以通过 tmp_table_size 选项来设置用于储存临时表的内存空间大小,一旦这个空间不够用,MySQL 将会启用磁盘来保存临时表,你可以根据 mysqlreport 的统计尽量给临时表设置较大的内存空间。

  • MySQL 临时表_第2张图片
  • 大小: 18 KB
  • 查看图片附件

你可能感兴趣的:(MySQL 临时表)