mysql參數總結

1.query_cache_size
select 查詢mysql後,會把查詢結構緩存爲sql文本,當同樣的sql再次查詢時,直接從緩存中取數據返回。
Qcache_lowmem_prunes的值非常大,則表明經常出現緩衝不夠的情況,同時Qcache_hits的值非常大,則表明查詢緩衝使用非常頻繁,此時需要增加緩衝大小Qcache_hits的值不大,則表明你的查詢重複率很低,這種情況下使用查詢緩衝反而會影響效率,那麼可以考慮不用查詢緩衝
缺陷:
 mysql在利用query_cache工作時,要求該語句涉及的表這段時間內沒有發生變化。假如數據有更新,首先會把所有的query_cache設爲失效,然後更新。
如果query_cache_size過大,查詢比較多,失效也會很慢,更新或insert也會慢。
2.key_buffer_size
只對myisam表起作用
key_buffer_size指定索引緩衝區的大小,它決定索引處理的速度,尤其是索引讀的速度。
通過檢查狀態值Key_read_requests和Key_reads,可以知道key_buffer_size設置是否合理
key_read_requests總的讀取請求,key_keys爲磁盤請求次數,也就是 key_read_requests/key_reads越小越好
3.table_open_cache(5.1以前版本爲table_cache)
table_open_cache指定表高速緩存的大小。每當MySQL訪問一個表時,如果在表緩衝區中還有空間,該表就被打開並放入其中,這樣可以更快地訪問表內容

通過檢查峯值時間的狀態值Open_tables和Opened_tables,可以決定是否需要增加table_open_cache的值。如果你發現open_tables等於table_open_cache,並且opened_tables在不斷增長,那麼你就需要增加table_open_cache的值了

4.log_bin
二進制日誌,從庫可以 關閉,關閉掉大概能提高1%的性能。

5.max_connections
最大連接數
6.back_bog
back_log值指出在MySQL暫時停止回答新請求之前的短時間內多少個請求可以被存在堆棧中。只有如果期望在一個短時間內有很多連接,你需要增加它,換句話說,這值對到來的TCP/IP連接的偵聽隊列的大小.
7.thread_cache
mySQL裏面爲了提高客戶端請求創建連接過程的性能,提供了一個連接池也就是Thread_Cache池,將空閒的連接線程放在連接池中,而不是立即銷燬.這樣的好處就是,當又有一個新的請求的時候,mysql不會立即去創建連接線程,而是先去Thread_Cache中去查找空閒的連接線程,如果存在則直接使用,不存在才創建新的連接線程.
thread_cache_size
Thread_Cache中存放的最大連接線程數.在短連接的應用中Thread_Cache的功效非常明顯
thread_stack
每個連接被創建的時候,mysql分配給它的內存.這個值一般認爲默認就可以應用於大部分場景了
thread_cache命中率計算
show variables like 'thread%';show status like '%connections%';show status like '%thread%'

公式爲:thread_cache_hit=(connections-thread_create)/connections*100%

8.log-slave-update
主從架構時,從庫需要保持和主庫相同的二進制時使用(默認從庫是不需要開啓二進制日誌)
9。sync_binlog
如果爲正,當每個sync_binlog寫入該二進制日誌後,MySQL服務器將它的二進制日誌同步到硬盤上
爲0不與硬盤同步,爲1與硬盤同步,mysql崩潰最多丟失一個語句或事務。
10.記錄慢日誌,分析
slow-query-log-file
long-query-time
設置時間爲1s即可
通過explain分析
語法:explain [extended] select ... from ...where
如果使用了extended ,那麼在執行完explain語句後,可以使用show warnings語句查詢相應的優化信息。
type: ALL 代表全表掃描
key: NULL 沒有用到索引
Extra: Using where; Using filesort 沒有使用索引排序
-----------------------------
type: range說明沒有全表掃描
Extra: Using where 說明沒有文件排序


10.鎖
show status like 'table%';
Table_locks_immediate表示立即釋放表鎖數,Table_locks_waited表示需要等待的表鎖數
如果Table_locks_waited的值比較高,則說明存在着較嚴重的表級鎖爭用情況。這時,需要我們對應用做進一步的檢查,來確定問題所在

11.innodb_buffer_pool_size
緩衝innodb數據和索引的內存緩衝區大小,這個值越高,需要的磁盤i/o越少

12.innodb_flush_log_at_trx_commit
0:表示每秒將日誌緩衝寫入到日誌文件,並且將日誌文件刷新到磁盤。
1:每個事務提交時,日誌緩衝寫入日誌文件,刷新到磁盤
2:每個提交,日誌緩存寫入日誌文件,但部隊日誌文件做到磁盤刷新
默認爲1,也是最安全的
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章