首页
学习
活动
专区
圈层
工具
发布

MySQL 临时数据空间不足导致SQL被killed 的问题与扩展

一般来说在MySQL在运行中有很多的cache来支持相关的语句执行的工作,临时表在MySQL 中有重要的作用,如 tmp_table_size max_heap_table_size max_tmp_tables...这些参数制定在内存中存储的临时表的最大的大小,tmp_table_size 直接制定在内存中存储的临时表的最大值, max_heap_table_size 指定在heap存储引擎的最大临时表的大小,...一般来说在8 -16MB,不建议MySQL数据库超过这个值,基本触发tmp_table_size 产生的情况为语句中有group by ,order by 等语句导致数据需要进行收集后的排序导致的,使用...tmp_table_size = 8 * 1024 * 1024; 另外再进行语句操作中sort_buffer_size 是另一个控制语句中数据排序操作的缓冲区的设置,设置较大的缓冲区有助于排序的操作。...[mysqld] tmp_table_size = 16M sort_buffer_size = 2M 这里在调整了tmp_table_size 参数后,将原有数据库的参数调整为现有参数的3倍后,问题解决

87610
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL8.0中消失又回来的磁盘临时表

    但是,使用pt-query-digest分析完慢SQL,我就有点蒙了,慢SQL执行的平均时间、最长执行时间都不足1秒,关于临时表的参数max_heap_table_size设置为32M,tmp_table_size...由于生产环境不能随意操作,我在本地搭建了相同版本的数据库,为了复现磁盘临时表的使用,设置参数tmp_table_size为1024,同时也构造了几个大表关联,中间结果集超过2M的查询,然而也没有让Created_tmp_disk_tables...和max_heap_table_size的较小值,就会转换为磁盘临时表,而我的tmp_table_size设置为了1024,小于访问INNODB_TABLES所需要的内存空间。...The tmp_table_size variable does not apply to user-created MEMORY tables....为了印证所想,我将tmp_table_size值调整为默认值16M,此时再访问PROCESSLIST发现Created_tmp_disk_tables计数器没有增加,基本上确认了上面的猜想。

    1.3K20

    是什么原因导致慢 SQL?问问 ChatDBA 和 DeepSeek

    交互轮次 3/3 用户根据 ChatDBA 的建议,将 tmp_table_size 参数调整为 16M,SQL 执行效率显著提升,并就性能改善的原因向 ChatDBA 进行询问。...MySQL 的 tmp_table_size 与 max_heap_table_size 决定了可以在内存中创建的最大临时表大小;当查询需要的临时表容量超过这两个参数中较小的那个值时,会落盘为 “磁盘临时表...为什么调整 tmp_table_size 会立刻见效?...当 tmp_table_size 值提高以后,原本必须落盘的临时表能够直接在内存中完成,极大减少了临时表的磁盘 I/O 开销与文件排序成本,于是 SQL 执行效率显著提升。...ChatDBA 强调检查并调整 临时表相关参数(tmp_table_size 和 max_heap_table_size),这是一个系统层优化点,正确识别了内存转磁盘临时表可能导致的性能瓶颈,这一点是

    28410
    领券