本帖最后由 堡塔运维小林 于 2023-7-13 09:54 编辑
您好,对于MySQL创建临时表到磁盘的负载,您可以调整MySQL配置参数tmp_table_size和max_heap_table_size,或者优化您项目的SQL查询语句,看您上面给mysql的最大内存是145916M,临时表缓存设置个20480就可以了,在配置文件中设置一下,重启mysql再看一下,确保配置生效
- tmp_table_size = 20480M
- max_heap_table_size = 20480M
复制代码如果如果增加了tmp_table_size值之后,临时表仍然频繁地被写入到磁盘,可能有以下几个原因导致: 数据量过大:如果临时表的数据量非常大,超过了tmp_table_size设置的内存限制,MySQL会将临时表写入磁盘。在这种情况下,你可以考虑优化查询或调整应用逻辑,减少临时表的数据量。 查询复杂度高:某些查询可能会导致临时表频繁地被创建和写入磁盘。你可以对这些查询进行优化,例如通过索引、更有效的查询语句或分解查询,以减少临时表的使用。 硬件磁盘性能限制:如果磁盘的读写速度较慢,即使临时表的数据量较小,也可能导致写入磁盘的负载高。在这种情况下,你可以考虑通过更快速的磁盘或使用SSD来改善磁盘性能。 查询缓存:如果你启用了MySQL的查询缓存,临时表的查询结果可能无法被缓存,从而导致频繁的写入磁盘。你可以考虑禁用查询缓存,或在应用程序中根据实际情况进行缓存控制来试试看能否降低这个负载
|