The table‘xxxx’is full 設置臨時表大小

tmp_table_size


如果內存內的臨時表超過該值,MySQL自動將它轉換為硬盤上的MyISAM表。如果你執行許多高級GROUP BY查詢並且有大量內存,則可以增加tmp_table_size的值。



max_heap_table_size


該變量設置MEMORY (HEAP)表可以增長到的最大空間大小。該變量用來計算MEMORY表的MAX_ROWS值。在已有的MEMORY表上設置該變量沒有效果,除非用CREATE TABLE或TRUNCATE TABLE等語句重新創建表。



如何設置:
方法一,修改my.ini或my.cnf
tmp_table_size=64M
max_heap_table_size=32M
此方法最大的缺點,是一旦mysql重啟,一切恢復默認值


方法二,mysqld命令行
mysqld_safe –key_buffer_size=512K –sort_buffer_size=16K
           –tmp_table_size=64M –max_heap_table_size=32M &


方法三,動態修改
因為tmp_table_size和max_heap_table_size,都有session作用域,所以,一般情況下,盡量這樣做吧
SET SESSION tmp_table_size=64*1024*1024
SET SESSION max_heap_table_size=32*1024*1024


修改好後如何查看:
查看服務器配置信息
SHOW VARIABLES WHERE Variable_name LIKE %tmp_table_size%


查看服務器運行信息
SHOW STATUS


如何使用JDBC獲得他們的值:
SELECT @@tmp_table_size
SELECT @@max_heap_table_size

發佈留言