高效MySQL讀書總結篇(一)

鈴鐺噹噹發表於2017-05-07

       根據計劃,第一次週三打卡剛看了27頁,看了Explain的介紹以及一部分的建立高效能的索引部分。到週日為止,看完了150頁,主要完成了第五章建立高效能的索引和第六章查詢效能優化,以及看了一點擴充套件內容Sphinx全文索引引擎的內容。


       這一部分我還沒有整理成部落格,所以瞭解還是很深入。不過,不論是索引還是優化,都是相當大的部分,這兩部分的內容非常多。從基礎的索引知識介紹,索引型別有哪些,BTree和雜湊,以及全文索引。到索引的優化,加快查詢效率。以及一些高效能的索引都有哪些策略,如多列索引,索引的順序選擇,以及覆蓋索引等。並且通過案例學習,深入瞭解索引。而且介紹索引有利有弊,使用索引可能會造成表損壞,以及因為用索引產生的資料碎片,該如何修復表以及如何清除碎片問題都做了詳細說明。不過即使說了這麼多,感覺運用到專案中還是有些難度。

       而查詢效能優化,同樣有很多內容。從分析為什麼查詢速度會變慢,到如何優化,並提出幾種問題,如重構查詢的方式,是一個複雜的查詢,還是多個簡單的查詢。同時介紹了MySQL在處理一個SQL語句時,都做了哪些處理。從客戶端傳送SQL請求,到伺服器層的查詢快取,優化處理(包括解析,建立解析書,優化器建立執行計劃),到儲存引擎層的呼叫API執行執行計劃。最終將查詢結果給客戶端,若有快取設定,則同時將結果快取。還分析了MySQL的優化處理中的優化器的侷限性,主要是關聯子查詢和Union的限制。所以可以用優化器的提示(hint),來做一些我們想讓優化器做的事。並且對於優化特定型別的查詢,主要是count()和關聯查詢和子查詢,進行了特定的分析。

       而sphinx類似於一個輔助工具,可以緩解MySQL在大型操作這部分的瓶頸。以上就是我第二次打卡的內容了。

       以上只是我打卡的內容,真正的部落格,慢慢寫吧,內容太多不知從何下手好!

相關文章