![MySQL 创建临时磁盘表](https://linux22.com/image/508115/MySQL%20%E5%88%9B%E5%BB%BA%E4%B8%B4%E6%97%B6%E7%A3%81%E7%9B%98%E8%A1%A8.png)
我正在尝试提高我们主 MySQL 服务器的性能。它是双四核 Intel X5450,配有 8GB RAM。它是专用的 MySQL 盒。我才刚刚开始配置它,所以我的起点比较低。
我注意到这个Created_tmp_disk_tables
值非常高,达到 330k。 Created_tmp_tables
只有 380k。这可能还不算太糟,只是因为 MySQL 是在不到 4 小时前重新启动的。
我已设置以下内容:
15:31:15 (9) > show global variables like '%table_size%';
+---------------------+------------+
| Variable_name | Value |
+---------------------+------------+
| max_heap_table_size | 1073741824 |
| tmp_table_size | 1073741824 |
+---------------------+------------+
这一页这表明两个值中较小的一个决定了临时表何时变为基于磁盘的表。我认为(个人而言) 1GB 足以处理我们要创建的任何大小的临时表,但显然我错了。
有人可以建议其他方法来减少基于磁盘的临时表的数量吗?
答案1
如果临时表被过度利用,我首先想到的是使用该数据库的应用程序需要查询优化。