MySQL 安裝後重要的效能調優和設定
在本文中,我們將學習和討論一些 MySQL 的重要效能調優設定,這些設定需要在 MySQL 安裝後實施,以獲得更好、更快的效能。
先決條件
假設我們已經安裝了 MySQL,在開始瞭解 MySQL 的效能調優設定之前,我提供一些提示。
即使經驗豐富的 IT 人員也可能會犯一些錯誤,這會導致許多問題,因此,在我們應用本文中顯示的任何建議之前,我們將牢記以下事項,以避免出現問題或故障。
我們將一次只應用一個設定,以便我們能夠以有益的方式估算更改。
幾乎所有更改都可以在執行時級別使用“SET GLOBAL”進行更改,這非常簡單,並允許我們恢復應用的更改以及建立的任何問題。最後,我們可以透過在配置檔案中設定來應用永久更改。
如果即使在服務重啟(MySQL)後也沒有應用配置更改,這可能是由於配置檔案不正確?或者設定是否應用於正確的部分?
MySQL 不允許重複設定。如果我們想跟蹤更改,建議使用版本控制。
一些 MySQL 效能調優設定
以下是在 [mysqld] 部分中的一些效能調優設定,我們可以從中瞭解一些效能調優設定。始終建議僅在安裝時更改這些設定。
innodb_buffer_pool_size − 這是使用 InnoDB 後立即檢視的一個非常重要的設定。InnoDB 是緩衝池,資料在其中被索引和快取,它具有非常大的可能大小,這將確保並使用記憶體而不是磁碟空間來進行大多數讀寫操作,通常,對於 8GB 記憶體,InnoDB 值的大小為 5-6GB。
innodb_log_file_size − 此設定用於重做日誌。重做日誌確保即使在崩潰恢復時讀寫也快速且持久,在早期版本的 MySQL 5.1 中,進行調整非常困難,因為我們需要一個非常大的重做日誌才能獲得更好的效能,而一個小的重做日誌則非常適合快速崩潰恢復 MySQL。在 MySQL 5.5 版本之後,崩潰恢復效能得到了改進。MySQL 重做日誌大小的限制在 MySQL 5.5 中限制為 4GB,現在在 MySQL 5.6 中已刪除了重做日誌大小的限制。
max_connections − 為避免“連線過多”錯誤,我們必須增加 max_connections,預設連線數為 151,max_connections 高值的主要缺點是,如果連線數過多且活動事務過多,則會使伺服器無響應。
Innodb_log_buffer_size − 此設定是尚未提交的事務的緩衝區大小。預設值為 1MB,由於我們有包含文字/blob 欄位的大型事務,因此緩衝區大小將很快填滿並觸發額外的輸入和輸出負載,我們可以增加 innodb_log_buffer_size。
Innodb_flush_method − 此設定用於控制日誌和資料如何重新整理到磁碟。當我們擁有具有寫回快取和資料同步的 RAID 控制器硬體以及大多數場景時,最佳值為 O_DIRECT。Sysbench 是一個很好的工具,可以幫助您選擇值。
query_cache_size − 此設定眾所周知是瓶頸,即使我們擁有中等級別的併發性,我們也會看到。最佳選擇是從一開始就停用它,要停用它,我們需要傳送 query_cache_size=0,如果我們使用的是 MySQL 5.6 版本,則預設情況下它已被停用。我們還有其他方法可以使用 Memcache 或 Redis 來加速索引。如果我們已經使用啟用的查詢快取配置了應用程式並且沒有遇到任何問題,那麼查詢快取很有用,我們需要非常謹慎地停用查詢快取。
log_bin − 如果我們想將伺服器用作複製主伺服器,此設定非常有用。當我們想要能夠執行(點在時間恢復)恢復最新備份並應用二進位制日誌時,它對於單個伺服器也很有用。啟用後,log_bin 日誌將永遠保留,我們需要清理舊日誌以節省伺服器上的磁碟空間,我們可以透過設定 PURGE BINARY LOGS 或透過設定 expire_logs_days 設定來執行此操作,方法是指定在多少天后自動刪除 log_bin 日誌。
skip_name_resolve − 當客戶端連線到 MySQL 伺服器時,此設定將被完全使用。伺服器將執行主機名解析,當 DNS 緩慢時,連線也將變得非常緩慢,因此建議使用 skip_name_resolve 啟動伺服器以停用 DNS 查詢,因此,當我們使用 GRANT 語句時,必須使用 IP 地址而不是主機名,因此,在將此設定新增到現有應用程式配置時要小心。
在上面的文章中,我們學習瞭如何調整 MySQL 以獲得更好的效能,並透過更改 log_bins、skip_name_resolve、query_cache_size、innodb_log_buffer_size、max_connections、innodb_log_file_size、innodb_buffer_pool_size 來加快 MySQL 的讀寫級別。
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP