【MySQL】值得關注的參數

可用性

back_log

如果同一時間連接的線程超過了max_connections,超出的部分並不會立即拒絕連接,而是被放入到一個等待主線程處理的堆棧中,超出back_log數量的連接將會直接被拒絕。

max_connections

有些時候實例被大量連接堵住,新的進不來。這個時候一般不用調大這個參數,而是考慮看看風暴連接產生的原因,再看看有沒有長期睡眠狀態的連接,殺掉這些連接

wait_timeout

這個對應上面睡眠連接的最大時長,一般把這個縮短會可以比較好的解決上面的問題,但是也要實際業務情況。不能貿然修改的很小

max_user_connection

單用戶同時可以連接的最大線程數

innodb_file_per_table

每個表單獨存放爲一個文件,這個對備份或者恢復都比較方便,一定要開啓

安全

skip_name_resolve

生產環境中使用純IP連接時,啓用此參數或許可以減少域名解析的開銷或者延時。而且這種情況下,使用域名或者主機名創建的用戶可能無法連接

性能

no-auto-rehash

mysql客戶端連接時不主動獲取實例的庫表等元信息,獲取庫表元信息是個比較慢,而且有開銷和阻塞風險的操作

innodb_io_capacity

告訴MySQL實例本機硬盤的性能情況,實例會根據此參數調整刷盤的某些策略

innodb_max_dirty_pages_pct

髒頁比,用於控制未落盤數據在IBP中的比例,如果DML語句比較頻繁的話,這裏適當提高,可以某種程度上提高性能,畢竟刷磁盤是個很慢的操作

innodb_lock_wait_timeout

鎖等待超時,這個可以適當減小,以避免垃圾事務的長時間持有數據鎖,阻塞其他請求線程

innodb_rollback_on_timeout

鎖等待超時後是否是否回滾掉整個事務,這裏建議開啓,默認只回滾掉事務中的最後一條語句,我認爲這樣可以減少鎖爭用。

internal_tmp_disk_storage_engine

內部臨時表的類型,這裏建議制定爲InnoDB,這個參數可以覆蓋掉默認引擎的對臨時表的染色。

innodb_stats_on_metadata

建議關掉,關掉之後不對內部元數據表的表信息進行統計收集。當然了,隱含條件是內部元數據信息表不落盤。

innodb_log_file_size

這個是指代內部重做日誌文件的大小,如果對實例重啓的時間有要求,那麼這個文件要設置的小一點。

IBP相關

這個就老生常談了,就是IBP大小,IBP實例,還有UPDATE_BUFFER,INSERT_BUFFER一類的,適當調大就可以了

innodb_autoinc_lock_mode

自增鎖模式,對於load data(包括:INSERT … SELECT, REPLACE … SELECT)場景下會使用自增表鎖,這樣會則可能導致應用在併發導入數據出現死鎖。建議將參數設置改爲2,則表示所有情況插入都使用輕量級別的mutex鎖(只針對row模式),這樣就可以避免auto_inc的死鎖,同時在INSERT … SELECT 的場景下會提升很大的性能(注意該參數設置爲2,binlog的格式需要設置爲row)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章