mysql的引數調優和方法

2021-07-22 03:00:24 字數 3073 閱讀 2618

一、tmp_table_size和max_heap_table_size:

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),一般的比例關係是:

mysql> show global status like 'created_tmp%';

+-------------------------+-------+

| variable_name           | value |

+-------------------------+-------+

| created_tmp_disk_tables | 129   |

| created_tmp_files       | 38    |

| created_tmp_tables      | 654   |

+-------------------------+-------+

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是怎樣使用內部臨時表的?」和「記憶體儲存引擎」

二、binlog_cache_size和binlog_stmt_cache_size

binlog_cache_size快取

mysql> show global status like 'binlog_cache%';

+-----------------------+---------+

| variable_name         | value   |

+-----------------------+---------+

| binlog_cache_disk_use | 1       |

| binlog_cache_use      | 4180204 |

+-----------------------+---------+

2 rows in set

如果binlog_cache_disk_use相當binlog_cache_use大於5%,就應該調binlog_cache_size了。

binlog_stmt_cache_size快取非事務語句。每個執行緒都會分配。該應該調多大,應該參考以下兩個值:

mysql> show global status like 'binlog_stmt_cache%';

+----------------------------+-------+

| variable_name              | value |

+----------------------------+-------+

| binlog_stmt_cache_disk_use | 0     |

| binlog_stmt_cache_use      | 0     |

+----------------------------+-------+

2 rows in set

如果binlog_stmt_cache_disk_use相當binlog_stmt_cache_use大於5%,就應該調binlog_cache_size了。

MySQL引數調優

l 通用類 key buffer size 含義 用於索引塊的緩衝區大小,增加它可得到更好處理的索引 對所有讀和多重寫 影響 對於myisam 表的影響不是很大,myisam 會使用系統的快取來儲存資料,所以大量使用 myisam 表的機器記憶體很快就會耗盡。但是,如果你將該值設得過大 例如,大於總...

mysql引數調優

l max connect errors max connect errors預設值為10,也即mysqld執行緒沒重新啟動過,一台物理伺服器只要連線 異常中斷累計超過10次,就再也無法連線上mysqld服務,為此建議大家設定此值至少大於等於10w 若異常中斷累計超過引數設定的值,有二種解決辦法,執...

mysql引數調優

優化之前我們需要知道什麼 業務相關的情況 mysql相關的配置 伺服器上需要關注那些 作業系統版本 是否為穩定版 cpu 網絡卡節電模式 建議資料庫應用的伺服器,關閉節電模式 伺服器numa設定 raid卡快取 磁碟排程策略 write back 回寫 宕機的話cache中資料,如果沒有刷入磁碟,可...