mysql maxtmptables_mysql的tmp_table_size和max_heap_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%
這個變量定義了用戶可以創建的內存表(memory table)的大小.這個值用來計算內存表的最大行數值。這個變量支持動態改變,即set @max_heap_table_size=#
,但是對于已經存在的內存表就沒有什么用了,除非這個表被重新創建(create table)或者修改(alter table)或者truncate table。服務重啟也會設置已經存在的內存表為全局max_heap_table_size的值。
這個變量和tmp_table_size一起限制了內部內存表的大小。
總結
以上是生活随笔為你收集整理的mysql maxtmptables_mysql的tmp_table_size和max_heap_table_size的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 分析函数_MySQL分析函数
- 下一篇: mysql源码安装配置_MySQL源码安