萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> mysql The table‘xxxx’is full 設置臨時表大小

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

在mysql中臨時表就出現xxx is full我們只要對my.ini中tmp_table_size與max_heap_table_size參數進行修改即可。

tmp_table_size 如果內存內的臨時表超過該值,MySQL自動將它轉換為硬盤上的MyISAM表。如果你執行許多高級GROUP BY查詢並且有大量內存,則可以增加tmp_table_size的值。 max_heap_table_size 該變量設置MEMORY (HEAP)表可以增長到的最大空間大小

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

此方法最大的缺點,是一旦重啟,一切恢復默認值

方法二,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

個人建義,如果你有服務器的管理權限推薦使用第一種方法,後兩種方法只要重啟mysql服務器一切還原到以前的配置,所以只有修改my.ini最好了。

copyright © 萬盛學電腦網 all rights reserved