標籤:
前言
在安裝完MySQL之後,肯定是需要對MySQL的各種參數選項進行一些最佳化調整的。雖然MySQL系統的伸縮性很強,既可以在有很充足的硬體資源環境下 高效的運行,也可以在極少資源環境下很好的運行,但不管怎樣,儘可能充足的硬體資源對MySQL的效能提升總是有協助的。
日誌產生的效能影響
由於日誌的記錄帶來的直接效能損耗就是資料庫系統中最為昂貴的IO資源。
在之前介紹的章節中,我們已經瞭解到了MySQL的日誌包括錯誤記錄檔(ErrorLog),二進位日誌(Binlog),查詢日誌(QueryLog),慢查詢日誌(SlowQueryLog)等。
在預設情況下,系統僅僅開啟錯誤記錄檔,關閉了其他所有日誌,以達到儘可能減少IO損耗提高系統效能的目的。但是在一般稍微重要一點的實際應用情境中,都至少需要開啟二進位日誌,因為這是MySQL很多儲存引擎進行增量備份的基礎,也是MySQL實現複製的基本條件。有時候為了進一步的效能最佳化,定位執行較慢的SQL語句,很多系統也會開啟慢查詢日誌來記錄執行時間超過特定數值(由我們自行設定)的SQL語句。
一般情況下,在生產系統中很少有系統會開啟查詢日誌。因為查詢日誌開啟之後會將MySQL中執行的每一條Query都記錄到日誌中,會該系統帶來比 較大的IO負擔,而帶來的實際效益卻並不是非常大。一般只有在開發測試環境中,為了定位某些功能具體使用了哪些SQL語句的時候,才會在短時間段內開啟該日誌來做相應的分析。所以,在MySQL系統中,會對效能產生影響的MySQL日誌(不包括各儲存引擎自己的日誌)主要就是Binlog了。
Binlog 相關參數及最佳化策略
我們首先看看Binlog的相關參數,通過執行如下命令可以獲得關於Binlog的相關參數。當然,其中也顯示出了“innodb_locks_unsafe_for_binlog”這個Innodb儲存引擎特有的與Binlog相關的參數:
mysql> show variables like ‘%binlog%‘;+-----------------------------------------+----------------------+| Variable_name | Value |+-----------------------------------------+----------------------+| binlog_cache_size | 32768 || binlog_direct_non_transactional_updates | OFF || binlog_format | MIXED || binlog_stmt_cache_size | 32768 || innodb_locks_unsafe_for_binlog | OFF || max_binlog_cache_size | 18446744073709547520 || max_binlog_size | 1073741824 || max_binlog_stmt_cache_size | 18446744073709547520 || sync_binlog | 0 |+-----------------------------------------+----------------------+
MySQL日誌設定最佳化