在mysql中臨時(shí)表就出現(xiàn)xxx is full我們只要對(duì)my.ini中tmp_table_size與max_heap_table_size參數(shù)進(jìn)行修改即可.
tmp_table_size 如果內(nèi)存內(nèi)的臨時(shí)表超過該值,MySQL自動(dòng)將它轉(zhuǎn)換為硬盤上的MyISAM表,如果你執(zhí)行許多高級(jí)GROUP BY查詢并且有大量?jī)?nèi)存,則可以增加tmp_table_size的值,max_heap_table_size 該變量設(shè)置MEMORY (HEAP)表可以增長(zhǎng)到的最大空間大小.
tmp_table_size
如果內(nèi)存內(nèi)的臨時(shí)表超過該值,MySQL自動(dòng)將它轉(zhuǎn)換為硬盤上的MyISAM表,如果你執(zhí)行許多高級(jí)GROUP BY查詢并且有大量?jī)?nèi)存,則可以增加tmp_table_size的值.
max_heap_table_size
該變量設(shè)置MEMORY (HEAP)表可以增長(zhǎng)到的最大空間大小,該變量用來計(jì)算MEMORY表的MAX_ROWS值,在已有的MEMORY表上設(shè)置該變量沒有效果,除非用CREATE TABLE或TRUNCATE TABLE等語句重新創(chuàng)建表.
方法一,修改my.ini或my.cnf,代碼如下:
tmp_table_size=64M
max_heap_table_size=32M
此方法最大的缺點(diǎn),是一旦重啟,一切恢復(fù)默認(rèn)值.
方法二,mysqld命令行,代碼如下:
mysqld_safe –key_buffer_size=512K –sort_buffer_size=16K
–tmp_table_size=64M –max_heap_table_size=32M & //Vevb.com
方法三,動(dòng)態(tài)修改
因?yàn)閠mp_table_size和max_heap_table_size,都有session作用域,所以,一般情況下,盡量這樣做吧,代碼如下:
SET SESSION tmp_table_size=64*1024*1024
SET SESSION max_heap_table_size=32*1024*1024
個(gè)人建議,如果你有服務(wù)器的管理權(quán)限推薦使用第一種方法,后兩種方法只要重啟mysql服務(wù)器一切還原到以前的配置,所以只有修改my.ini最好了.
新聞熱點(diǎn)
疑難解答
圖片精選