數據庫管理員把他們生命中的相當一部份時間花在了調整、試驗以改善dbms性能之上。在診斷應用的滯緩現象和性能問題時,性能不良的數據庫(以及數據庫查詢)通常是最常見的禍因。
可以看出,下面的內容并不能完全決定MySQL的性能。我們只是想回顧一下前面各章的重點,提供進行性能優化探討和分析的一個出發點。
以下是具體的MySQL性能優化的17個要點:
1.首先,MySQL(與所有DBMS一樣)具有特定的硬件建議。在學習和研究MySQL時,使用任何舊的計算機作為服務器都可以。但對用于生產的服務器來說,應該堅持遵循這些硬件建議。
2.一般來說,關鍵的生產DBMS應該運行在自己的專用服務器上。
3.MySQL是用一系列的默認設置預先配置的,從這些設置開始通常是很好的。但過一段時間后你可能需要調整內存分配、緩沖區大小等。(為查看當前設置,可使用 SHOW VARIABLES; 和 SHOW STATUS; 。)
4.MySQL一個多用戶多線程的DBMS,換言之,它經常同時執行多個任務。如果這些任務中的某一個執行緩慢,則所有請求都會執行緩慢。如果你遇到顯著的性能不良,可使用 SHOW PROCESSLIST顯示所有活動進程(以及它們的線程ID和執行時間)。你還可以用KILL 命令終結某個特定的進程(使用這個命令需要作為管理員登錄)。
5.總是有不止一種方法編寫同一條 SELECT 語句。應該試驗聯結、并、子查詢等,找出最佳的方法。
6.使用 EXPLAIN 語句讓MySQL解釋它將如何執行一條 SELECT 語句。
7.一般來說,存儲過程執行得比一條一條地執行其中的各條MySQL語句快。
8.應該總是使用正確的數據類型。
9.決不要檢索比需求還要多的數據。換言之,不要用 SELECT * (除非你真正需要每個列)。
10.有的操作(包括 INSERT )支持一個可選的 DELAYED 關鍵字,如果使用它,將把控制立即返回給調用程序,并且一旦有可能就實際執行該操作。
11.在導入數據時,應該關閉自動提交。你可能還想刪除索引(包括FULLTEXT 索引),然后在導入完成后再重建它們。
12.必須索引數據庫表以改善數據檢索的性能。確定索引什么不是一件微不足道的任務,需要分析使用的 SELECT 語句以找出重復的WHERE 和 ORDER BY 子句。如果一個簡單的 WHERE 子句返回結果所花的時間太長,則可以斷定其中使用的列(或幾個列)就是需要索引的對象。
13.你的 SELECT 語句中有一系列復雜的 OR 條件嗎?通過使用多條SELECT 語句和連接它們的 UNION 語句,你能看到極大的性能改進。
14.索引改善數據檢索的性能,但損害數據插入、刪除和更新的性能。如果你有一些表,它們收集數據且不經常被搜索,則在有必要之前不要索引它們。(索引可根據需要添加和刪除。)
15.LIKE 很慢。一般來說,最好是使用 FULLTEXT 而不是 LIKE 。
16.數據庫是不斷變化的實體。一組優化良好的表一會兒后可能就面目全非了。由于表的使用和內容的更改,理想的優化和配置也會改變。
17.最重要的規則就是,每條規則在某些條件下都會被打破。
【相關推薦】
1.?Mysql免費視頻教程
2.?Mysql免費視頻教程
3.?Mysql免費視頻教程
4.?Mysql免費視頻教程
5.?Mysql免費視頻教程