mysql tmp_table_size和max_heap_table_size大小配置
針對16G內(nèi)存的配置
tmp_table_size = 64M
先說下tmp_table_size吧:
它規(guī)定了內(nèi)部內(nèi)存臨時表的最大值,每個線程都要分配。(實(shí)際起限制作用的是tmp_table_size和max_heap_table_size的最小值。)如果內(nèi)存臨時表超出了限制,MySQL就會自動地把它轉(zhuǎn)化為基于磁盤的MyISAM表,存儲在指定的tmpdir目錄下,默認(rèn):
mysql> show variables like "tmpdir";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| tmpdir | /tmp/ |
+---------------+-------+
優(yōu)化查詢語句的時候,要避免使用臨時表,如果實(shí)在避免不了的話,要保證這些臨時表是存在內(nèi)存中的。如果需要的話并且你有很多group by語句,并且你有很多內(nèi)存,增大tmp_table_size(和max_heap_table_size)的值。這個變量不適用與用戶創(chuàng)建的內(nèi)存表(memory table).
你可以比較內(nèi)部基于磁盤的臨時表的總數(shù)和創(chuàng)建在內(nèi)存中的臨時表的總數(shù)(Created_tmp_disk_tables和Created_tmp_tables),一般的比例關(guān)系是:
Created_tmp_disk_tables/Created_tmp_tables<5%
這個變量定義了用戶可以創(chuàng)建的內(nèi)存表(memory table)的大小.這個值用來計算內(nèi)存表的最大行數(shù)值。這個變量支持動態(tài)改變,即set @max_heap_table_size=#
,但是對于已經(jīng)存在的內(nèi)存表就沒有什么用了,除非這個表被重新創(chuàng)建(create table)或者修改(alter table)或者truncate table。服務(wù)重啟也會設(shè)置已經(jīng)存在的內(nèi)存表為全局max_heap_table_size的值。
這個變量和tmp_table_size一起限制了內(nèi)部內(nèi)存表的大小。
如果想知道更詳細(xì)的信息,請參考“MySQL是怎樣使用內(nèi)部臨時表的?”和“內(nèi)存存儲引擎”
相關(guān)文章
讓MySQL數(shù)據(jù)庫跑的更快 為數(shù)據(jù)減肥
在MySQL數(shù)據(jù)庫優(yōu)化工作中,使數(shù)據(jù)盡可能的小,使表在硬盤上占據(jù)的空間盡可能的小,這是最常用、也是最有效的手段之一。2011-03-03mac安裝mysql數(shù)據(jù)庫及配置環(huán)境變量的圖文教程
本文主要介紹了mac安裝mysql數(shù)據(jù)庫及配置環(huán)境變量,文中通過圖文代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08mysql提示[Warning] Invalid (old?) table or database name問題的解決方
今天一個朋友的上服務(wù)器出現(xiàn)[Warning] Invalid (old?) table or database name問題,通過分析binlog日志發(fā)現(xiàn),在以下sql語句中出現(xiàn)問題,由于涉及敏感內(nèi)容,用sql語法表示2012-07-07Mysql主從三種復(fù)制模式(異步復(fù)制,半同步復(fù)制,組復(fù)制)
這篇文章主要介紹了Mysql主從三種復(fù)制模式(異步復(fù)制,半同步復(fù)制,組復(fù)制),MySQL異步復(fù)制是主從復(fù)制過程中默認(rèn)的復(fù)制模式,下文簡單介紹,感興趣的朋友可以參考一下2022-08-08