zoukankan      html  css  js  c++  java
  • 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。
  • 相关阅读:
    Coding styles, code review
    Some links haven't take a look(C++, JS, IE9)
    前端学习,找到一下一些问题的答案
    Browser judgement
    Theme of Google
    Browser Time Line
    迷茫在10点左右……
    WebPageTest 检测web站点性能网站测试工具
    Invoke IFrame/window in cross domain in IE&FF notes
    [解决]多线程中出现由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达
  • 原文地址:https://www.cnblogs.com/zhouwanchun/p/13152668.html
Copyright © 2011-2022 走看看