- 首先,Mysql(與所有DBMS一樣)具有特定的硬件建議。在學習和研究Mysql時,使用任何舊的計算機作為服務器都可以,但對用于生產的服務器來說,應該堅持遵循這些硬件建議。
- 一般來說,關鍵的生產DBMS應該運行在自己的專用服務器上。
- Mysql是用一系列的默認設置預先配置的,從這些設置開始通常是很好的。但過一段時間后你可能需要調整內存分配、緩存區大小等。(為查看當前設置,可使用SHOW VARIABLES;和SHOW STATUS)
- Mysql一個多用戶多線程的DBMS,換言之,它經常同時執行多個任務。如果這些任務中的某一個執行緩慢,則所有請求都會執行緩慢。如果你遇到顯著的性能不良,可使用SHOW PROCESS LIST顯示所有活動進程(以及它們的線程ID和執行時間)。你還可以用KILL命令終結某個特定的進程(使用這個命令需要作為管理員登錄)。
- 總是有不止一種方法編寫同一條SELECT語句。應該試驗聯結、并、子查詢等,找出最佳的方法。
- 使用EXPLAIN語句讓Mysql解釋它將如何執行一條SELECT語句。
- 一般來說,存儲過程執行得比一條一條地執行其中的各條Mysql語句快。
- 應該總是使用正確的數據類型。
- 決不要檢索比需求還要多的數據。換言之,不要用SELECT * (除非你真正需要每個列)。
- 有的操作(包括INSERT)支持一個可選的DELAYED關鍵字,如果使用它,將把控制立即返回給調用程序,并且一旦有可能就實際執行該操作。
- 在導入數據時,應該關閉自動提交。你可能還想刪除索引(包括FULLTEXT索引),然后再導入完成后再重建它們。
- 必須索引數據表以改善數據檢索的性能。確定索引什么不是一件微不足道的任務,需要分析使用的SELECT語句以找出重復的WHERE和ORDER BY 子句。如果一個簡單的WHERE子句返回結果所花的時間太長,則可以斷定其中使用的列(或幾個列)就是需要索引的對象。
- 你的SELECT語句中有一系列復雜的OR條件嗎?通過使用多條SELECT語句和連接它們的UNION語句,你能看到極大的性能改進。
- 索引改善數據檢索和性能,但損害數據插入、刪除和更新的性能。如果你有一些表,它們收集數據且不經常被搜索,則在有必要之前不要索引它們。(索引可根據需要添加和刪除)
- LIKE很慢。一般來說,最好是使用FULLTEXT而不是LIKE。
- 數據庫是不斷變化的實體。一組優化良好的表一會兒可能就面目全非了。由于表的使用和內容的更改,理想的優化和配置也會改變。
- 最重要的規則就是,每條規則在某些條件下都會被打破。
【Mysql】改善性能
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
推薦閱讀更多精彩內容
- 《高性能MySQL》&《MySQL技術內幕 InnoDB存儲引擎》筆記 第一章 MySQL架構與歷史 MySQL的...
- 接下來就討論一下可選鏈,類型屬性和類型方法,構造器 1.可選鏈是用于處理可選類型的屬性,方法和下標2.使用可選鏈代...