MySql改善性能建議

                                                                                                                                                                                  —— 摘自MySql必知必會

 首先,MySQL(與所有DBMS一樣)具有特定的硬件建議。在學習和研究MySQL時,使用任何舊的計算機作爲服務器都可以。但對用於生產的服務器來說,應該堅持遵循這些硬件建議。

 一般來說,關鍵的生產DBMS應該運行在自己的專用服務器上。

 MySQL是用一系列的默認設置預先配置的,從這些設置開始通常 是很好的。但過一段時間後你可能需要調整內存分配、緩衝區大小等。(爲查看當前設置,可使用SHOW VARIABLES;和SHOW STATUS;。)

 MySQL一個多用戶多線程的DBMS,換言之,它經常同時執行多個任務。如果這些任務中的某一個執行緩慢,則所有請求都會執行緩慢。如果你遇到顯著的性能不良,可使用SHOW PROCESSLIST 顯示所有活動進程(以及它們的線程ID和執行時間)。你還可以用KILL命令終結某個特定的進程(使用這個命令需要作爲管理員登錄)。

 總是有不止一種方法編寫同一條SELECT語句。應該試驗聯結、並、子查詢等,找出最佳的方法。

 使用EXPLAIN語句讓MySQL解釋它將如何執行一條SELECT語句。

 一般來說,存儲過程執行得比一條一條地執行其中的各條MySQL 語句快。

 應該總是使用正確的數據類型。

 決不要檢索比需求還要多的數據。換言之,不要用SELECT *(除 非你真正需要每個列)。

 有的操作(包括INSERT)支持一個可選的DELAYED關鍵字,如果使用它,將把控制立即返回給調用程序,並且一旦有可能就實際執行該操作。

 在導入數據時,應該關閉自動提交。你可能還想刪除索引(包括 FULLTEXT索引),然後在導入完成後再重建它們。

 必須索引數據庫表以改善數據檢索的性能。確定索引什麼不是一件微不足道的任務,需要分析使用的SELECT語句以找出重複的 WHERE和ORDER BY子句。如果一個簡單的WHERE子句返回結果所花的時間太長,則可以斷定其中使用的列(或幾個列)就是需要索 引的對象。

 你的SELECT語句中有一系列複雜的OR條件嗎?通過使用多條 SELECT語句和連接它們的UNION語句,你能看到極大的性能改進。

 索引改善數據檢索的性能,但損害數據插入、刪除和更新的性能。 如果你有一些表,它們收集數據且不經常被搜索,則在有必要之前不要索引它們。(索引可根據需要添加和刪除。)

 LIKE很慢。一般來說,最好是使用FULLTEXT而不是LIKE。

 數據庫是不斷變化的實體。一組優化良好的表一會兒後可能就面目全非了。由於表的使用和內容的更改,理想的優化和配置也會 改變。

 最重要的規則就是,每條規則在某些條件下都會被打破。

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