MySQL 是一個流行的開源關聯式資料庫管理站群系統,知道如何最佳化它是必不可少的。緩慢的資料庫效能會嚴重影響您的網站訪問速度和多使用者體驗感; 一個設計不當的 SQL 查詢可能會產生很大的影響。
最佳化 MySQL 資料庫不是一個簡單的過程,但它對於維護應用程式效能和服務交付至關重要。在本文中,我們將介紹如何提高 MySQL 資料庫效能的一些技巧。
  平衡四大主要硬體資源
  硬碟
如果您使用的是傳統硬碟驅動器 (HDD),您可以升級到固態驅動器 (SSD) 以提高效能。
可以使用類似的工具 iotop 或 SAR 從 SYSSTAT 包來監控您的磁碟輸入/輸出率。如果磁碟使用率遠高於其他資源的使用率,請考慮新增更多硬碟或升級到更快的硬碟。
  CPU
CPU 通常被認為是衡量站群系統速度的指標。使用 Linux 命令詳細瞭解您的資源是如何使用的。注意 MySQL 程式及其所需的處理器使用百分比。推薦閱讀:《淺議 MySQL 資料庫的強大功用》
CPU 升級成本比較高,但如果您的 CPU 是一個問題,建議您可以選擇租用站群伺服器升級 CPU 以減少您的成本。
提升網站速度之 MySQL 資料庫最佳化
記憶體
記憶體表示 MySQL 資料庫儲存站群伺服器中的 RAM 總量。您可以調整記憶體快取 (稍後會詳細介紹) 以提高效能。如果您沒有足夠的記憶體,或者如果現有的記憶體沒有最佳化,則最終可能會損害效能而不是提高效能。
與其他問題一樣,如果您的站群伺服器記憶體不足,您可以透過新增更多記憶體進行升級。如果記憶體不足,您的站群伺服器將快取資料儲存 (如硬碟驅動器) 以充當記憶體。資料庫快取會降低您的效能。
網路
網路對您的網站至關重要,在租用主機時選擇合適的寬頻也是很重要的。
網路過載會導致延遲、丟包,甚至站群伺服器中斷。確保您有足夠的網路頻寬來容納正常級別的資料庫流量。
  MySQL 軟體效能調優
  避免在 SELECT 子句中使用*
在資料庫中最常用的語句是查詢語句,避免在使用查詢語句時,查詢全表,在查詢時不要使用 “SELECT *”,而是始終在 SELECT 子句中指定表以提高 MySQL 效能。因為不必要的表會導致資料庫的額外負載,降低其效能以及整個站群系統過程。
避免在查詢資料的開頭使用萬用字元 (%)
例如 LIKE’%abc’ 導致全表掃描。
SELECT * FROM TABLE1 WHERE COL1 LIKE ‘%ABC’
在大多數情況下,這種萬用字元使用會帶來主要的效能限制。
  儘量使用內連線,而不是外連線—-JOIN, WHERE, UNION, DISTINCT
僅在必要時使用外連線。不必要地使用它不僅會限制資料庫效能,還會限制 MySQL 查詢最佳化選項,導致 SQL 語句執行速度變慢。
在適當的地方使用索引查詢,例如:
SELECT … WHERE
  適當使用 ORDER BY
ORDER BY 表示式按指定的列對結果進行排序。它可用於一次按兩列排序。這些應該以相同的順序排序,升序或降序。
如果您嘗試以不同的順序對不同的列進行排序,則會降低效能。您可以將其與索引結合使用以加快排序。
  GROUP BY 而不是 SELECT DISTINCT
SELECT DISTINCT 試圖擺脫重複值的查詢時就派上用場了。但是,該語句需要大量的處理能力。
儘可能避免使用 SELECT DISTINCT,因為它非常低效且有時令人困惑。
  Mysql 查詢快取
衡量效能的最重要方面之一是快取內容。 MySQL 提供資料庫查詢快取,它快取 SELECT 語句文字和檢索到的結果。因此,每當您建立重複資料庫時,您都會呼叫 MySQL 查詢快取,它會響應您並顯示快取中的結果,並且不會重複解析呼叫。透過這種方式,您可以最大化 MySQL 快取最佳化過程。推薦閱讀:《WP 虛擬主機 cPanel 如何匯入 Mysql 資料庫》
要設定 MySQL 查詢快取,您必須向 MySQL 新增一些設定。首先,您必須使用以下命令檢查查詢快取是否可用:
mysql> SHOW VARIABLES LIKE ‘have_query_cache’ ;
使用命令後會顯示結果,YES 意味著 MySQL 快取工作正常。
Variable_name | Value |
| have_query_cache | YES |
現在,您可以設定 MySQL 查詢快取大小和型別。請記住,最小預設大小為 40KB 。最大大小可以是 32MB 。您可以使用以下命令設定 MySQL query_cache_size:
mysql> SET GLOBAL query_cache_size = 40000;
查詢快取型別可以決定所有連線的行為。您還可以禁用查詢快取,例如:
mysql> SET SESSION query_cache_type = OFF;
同時,您也可以選擇啟用 Redis 快取進行提速
提升網站速度的一個重要方面是最佳化 MySQL 資料庫。透過採取上述步驟,您可以確保您的 MySQL 資料庫效能得到最佳化,從而使您能夠更高效地完成工作並確保您的業務服務和應用程式保持可用。推薦相關閱讀:《WordPress 站群后臺 Mysql 上傳資料庫過程》