mysql tmp_table_size和max_heap_table_size年夜小設置裝備擺設。本站提示廣大學習愛好者:(mysql tmp_table_size和max_heap_table_size年夜小設置裝備擺設)文章只能為提供參考,不一定能成為您想要的結果。以下是mysql tmp_table_size和max_heap_table_size年夜小設置裝備擺設正文
針對16G內存的設置裝備擺設
tmp_table_size = 64M
先說下tmp_table_size吧:
它劃定了外部內存暫時表的最年夜值,每一個線程都要分派。(現實起限制造用的是tmp_table_size和max_heap_table_size的最小值。)假如內存暫時表超越了限制,MySQL就會主動地把它轉化為基於磁盤的MyISAM表,存儲在指定的tmpdir目次下,默許:
mysql> show variables like "tmpdir";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| tmpdir | /tmp/ |
+---------------+-------+
優化查詢語句的時刻,要防止應用暫時表,假如其實防止不了的話,要包管這些暫時表是存在內存中的。假如須要的話而且你有許多group by語句,而且你有許多內存,增年夜tmp_table_size(和max_heap_table_size)的值。這個變量不實用與用戶創立的內存表(memory table).
你可以比擬外部基於磁盤的暫時表的總數和創立在內存中的暫時表的總數(Created_tmp_disk_tables和Created_tmp_tables),普通的比例關系是:
Created_tmp_disk_tables/Created_tmp_tables<5%
max_heap_table_size
這個變量界說了用戶可以創立的內存表(memory table)的年夜小.這個值用來盤算內存表的最年夜行數值。這個變量支撐靜態轉變,即set @max_heap_table_size=#
,然則關於曾經存在的內存表就沒有甚麼用了,除非這個表被從新創立(create table)或許修正(alter table)或許truncate table。辦事重啟也會設置曾經存在的內存表為全局max_heap_table_size的值。
這個變量和tmp_table_size一路限制了外部內存表的年夜小。
假如想曉得更具體的信息,請參考“MySQL是如何應用外部暫時表的?”和“內存存儲引擎”