解決阿里雲數據庫RDS報錯The table '/home/mysql/data3015/tmp/#sql_13975_23' is full


查詢任何一條語句都顯示


The table '/home/mysql/data3015/tmp/#sql_13975_23' is full


查看了下數據庫利用磁盤空間沒有滿,


阿里雲的處理方式:

1. 出現這個錯誤信息的原因

在SQL查詢進行 group by、order by、distinct、union、多表更新、group_concat、count(distinct)、子查詢或表連接的情況下,MySQL 有可能會使用內部臨時表。MySQL 首先在內存中創建 Memory 引擎臨時表,當臨時表的尺寸過大時,會自動轉換為磁盤上的 MyISAM 引擎臨時表(當查詢涉及到 Blob 或 Text 類型字段,MySQL 會直接使用磁盤臨時表)。

這個錯誤信息,說明磁盤上的臨時表 #sql_19472_5 的物理尺寸受到限制,已經無法再繼續擴展了。

導致這個錯誤信息的原因是查詢語句使用的內部磁盤臨時表(MyISAM 引擎表)總大小已經達到了實例參數 loose_rds_max_tmp_disk_space 指定的限制(默認 10 GB)。

2. 如何處理該錯誤信息

在控制台  參數設置中根據 RDS 實例當前空閑空間和應用空間使用情況,調高參數 loose_rds_max_tmp_disk_space 的設置,建議考慮設置為略小於當前空閑空間(保留一部分空間以便 Binlog 和 數據文件使用),以避免磁盤臨時表總占用空間過高,超過實例規格而導致實例鎖定,影響業務。該參數單位是 字節(Byte),默認 10 GB,上限 1000 GB。


減少同時使用磁盤臨時表的會話數量。因為參數 loose_rds_max_tmp_disk_space 指定的是磁盤臨時表文件的總大小,因此減少並發使用磁盤臨時表的會話數量可以避免超過該參數指定的限制。


可以通過在控制台  參數設置 中調高 tmp_table_size 參數值來調高內存臨時表的上限。
注:tmp_table_size 單位字節(Byte),默認 256 KB,最大64 MB。

在查詢中,盡量避免使用 Blog 和 Text 類型字段。

優化查詢邏輯,避免過大的中間數據集操作。


最后要提交參數



再次查詢數據庫沒有報錯了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM