ERROR 1114 (HY000): The table 'test1' 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 類型字段。
 

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

 

最後要提交參數

還有一個處理方式

清除/HOME目錄下的文件 或者移動/home下的文件到另一個目錄即可解決問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章