• RDS上,MySQL实例中某张表数据小于tmp_table_size,但有查询时会报错临时空间满 The table '/data/mysql/zst/tmp/#sql_13975_23' is full. 原因可能是什么?


    RDS上,MySQL实例中某张表数据小于tmp_table_size,但有查询时会报错临时空间满 The table '/data/mysql/zst/tmp/#sql_13975_23' is full. 原因可能是什么?
    
    
    一、可能有下面几种情况:
        1、在SQL中执行group byorder bydistinctunion、多表update、子查询、多表JOIN等情况下,可能需要生成内部临时表,当内部临时表超过tmp-table-size时,就会产生磁盘临时表。
        2、接上,若查询包含BLOB、TEXT类型字段时,MySQL会直接使用磁盘临时表。
        3、云数据库购买的磁盘空间,是包括数据库文件、日志文件(binlog、relay log、error log等)、临时文件&临时表(关注 Created_tmp_disk_tables、Created_tmp_tables、Binlog_cache_disk_use、Binlog_stmt_cache_disk_use等指标)所消耗占用的磁盘空间。
        4、发生table...is full报错,说明可能生成磁盘临时表太多,超过云数据库购买的空间限制。
    
    
    二、解决办法可以有:
        1、关注slow query log,或者查看processlist,及时发现需要用到临时文件、临时表的SQL,尽快优化。
        2、调高 tmp_table_size 参数值来调高内存临时表的上限。
        3、调高参数loose_rds_max_tmp_disk_space值,可设置为当前空闲空间的80%(阿里云RDS专属参数)。
        4、优化表DDL设计,尽量避免使用BLOB、TEXT类型字段,并且在SQL中减少对这些大字段的访问。
        5、优化查询逻辑,避免使用UNION或者需要中间数据集的子查询等SQL。
  • 相关阅读:
    ubuntu 搜索文件方法(find命令)
    tomcat ip访问
    Linux下tomcat 的启动 关闭 kill
    Hibernate 之 使用
    tar 用法
    ubuntu下配置django+apache+mysql+mod_python+Python
    Windows Mobile Ping 命令实现(转)
    C#异步方法调用(四大方法详解)
    HTML基础(一):HTML简介
    windows2003系统的iis不能下载exe文件
  • 原文地址:https://www.cnblogs.com/zhouwanchun/p/13152668.html
Copyright © 2020-2023  润新知