標籤:特定 類型 2.7 需要 隊列 select sql 檔案寫入 僵死
一.引言
通過最佳化MySQL的參數可以提高資源使用率,從而達到提高MySQL伺服器效能的目的。MySQL服務的配置參數都在my.cnf或者my.ini的檔案中。
二.參數配置2.1 key_buffer_size
key_buffer_size:表示索引緩衝的大小。索引緩衝所有的線程共用,增加索引緩衝可以得到更好的處理索引(對所有讀和多重寫)。當然,這個值也不是越大越好,它的大小取決於記憶體的大小,如果這個值太大,導致作業系統頻繁換頁,也會降低系統效能。
2.2 table_cache
table_cahce:表示同時開啟表的個數,這個值越大,能夠同時開啟的表的個數越多。這個值不是越大越好,因為同時開啟的表太多導致影響作業系統的效能。
2.3 query_cache_size
query_cache_size:表示查詢緩衝區的大小,該參數需要和query_cache_type進行配合使用。
query_cache_type:0,所有的查詢都不使用查詢緩衝區,但是query_cache_type為0,並不會導致MYSQL釋放query_cache_size所配置的緩衝區記憶體。
query_cache_type:1,所有的查詢都將使用查詢緩衝區,除非在查詢語句中指定SQL_NO_CACHE,如:select sql_no_cahce * from table1。
query_cache_type:2,只有在查詢語句中使用SQL_CACHE關鍵字,查詢才會使用查詢緩衝區。
使用查詢緩衝區可以提高查詢的速度,這種方式只適用於修改操作少且經常執行相同的查詢操作的時候。
2.4 sort_buffer_size
sort_buffer_size:表示排序緩衝區的大小,這個值越大,進行排序的速度越快。
2.5 read_buffer_size
read_buffer_size:表示每個線程連續掃描時為每個表分配的緩衝區大小(byte)。當線程從表中連續讀取記錄時需要用到這個緩衝區。
2.6 read_rnd_buffer_size
read_rnd_buffer_size:表示為每個線程保留的緩衝區的大小,與read_buffer_size相似,但主要用於儲存按特定順序讀取出來的記錄。如果需要頻繁進行多次連續掃描,可以增加該值。
2.7 innoDB_buffer_pool_size
innoDB_buffer_pool_size:表示innodb類型表和索引的最大緩衝,這個值越大,查詢的速度越快,但是這個值太大會影響作業系統的效能。
2.8 max_connections
max_connections:表示資料庫的最大串連數,這個串連數不是越大越好,因為這些串連會浪費記憶體的資源。過多的串連會導致MYSQL伺服器僵死。
2.9 innoDB_flush_log_at_trx_commit
innoDB_flush_log_at_trx_commit:表示何時將緩衝區的資料寫入記錄檔,並且將記錄檔寫入磁碟中。該參數對於innoDB引擎非常重要。該參數有三種不同的值。
0:表示每隔1秒將資料寫入日誌,並將記錄檔寫入磁碟。
1:表示每次提交事務的時候將資料寫入日誌,並將記錄檔寫入磁碟。
2:表示每次提交事務的時候將資料寫入日誌,每隔1秒將記錄檔寫入磁碟。
該參數預設為1,預設為1時,安全性最高,但是每次提交事務或事務外的指令都需要把日誌寫入磁碟,比較費時間。參數為0的話,安全性不是很好。為2時,日誌仍會每秒寫入到磁碟,所有即使出現故障,一般也不會丟失超過1~2秒的更新。
2.10 back_log
back_log:表示在MYSQL暫時停止回答新請求之前的短時間內,多少個請求可以被存在堆棧中,換句話說,該值表示對到來的TCP/IP串連的偵聽隊列的大小。只有期望在一個短時間內有很多的串連,才需要增加該參數的值。作業系統在這個隊列的大小也有限制,設定back_log高於作業系統的限制將是無效的。
2.11 interactive_timeout
interactive_timeout:表示伺服器在關閉串連前等待行動的秒數。
2.12 sort_buffer_size
sort_buffer_size:表示每個需要進行排序的線程分配的緩衝區的大小。增加這個參數的值可以提高order by 或group by 操作的速度。
2.13 thread_cache_size
thread_cache_size:表示可以複用的線程的數量,如果有很多的新的線程,為了提高效能可以增大該值。
2.14 wait_timeout
wait_timeout:表示伺服器在關閉一個串連時,等待行動的秒數。
最佳化MySQL伺服器