關於MySQL的學習及相關調優
記錄一下MySQL相關的學習歷程
MySQL簡單看分成三層,client、server、儲存引擎
-
使用者從client端傳送一個請求到server端,
-
server端會建立一個連線資訊【驗證使用者名稱密碼等資訊】
-
然後將使用者傳送的sql請求進行分析【經過分析器】,將sql的關鍵字等資訊進行提取分析,
-
然後將sql語句進行優化【優化器,MySQL自帶sql優化】
-
後面經過執行器,執行器將和儲存引擎進行互動(經過儲存引擎從磁碟讀取資料,即IO)
優化分兩種:RBO、CBO
-
RBO:基於規則的優化
-
CBO:基於成本的優化(大部分採用這種)
紅黑(Red-black)樹 是一種自平衡二叉查詢樹,1972年由Rudolf Bayer發明,它與AVL樹類似,都在插入和刪除操作時能通過旋轉操作保持二叉查詢樹的平衡,以便能獲得高效的查詢效能。它可以在 O(logn) 時間內做查詢,插入和刪除等操作。紅黑樹是2-3-4樹的一種等同,但有些紅黑樹設定只能左邊是紅樹,這種情況就是2-3樹的一種等同了。對於AVL樹來說,紅黑樹犧牲了部分平衡性以換取插入/刪除操作時少量的旋轉操作,整體來說效能要優於AVL樹。 特點: 節點是紅色或黑色。 根節點是黑色。 每個葉節點(NIL節點)是黑色的。 每個紅色節點的兩個子節點都為黑色。(從每個葉子到根的所有路徑上不能有兩個連續的紅色節點) 從任一節點到其每個葉子的所有路徑都包含相同數目的黑色節點。 最長路徑不超過最短路徑的2倍 |
左旋: 逆時針旋轉,父節點被自己的右孩子取代,而自己成為自己的左孩子
右旋:順時針旋轉,父節點被做孩子取代,而自己成為自己的右孩子
行專列: 分割槽表:日誌儲存及作用 Redo log:innodb儲存引擎的日誌檔案 當傳送資料修改的時候,innodb引擎會先將記錄寫到redo log中,並更新記憶體,此時更新算是完成了,同時innodb引擎會在合適的時候將記錄寫入到磁碟中 Redo log是固定大小的,迴圈寫的過程 有了Redo log,innodb保證了即使資料庫發生異常重啟,之前的記錄也不會丟失,叫做crash-safe
Undo log:innodb儲存引擎日誌 binlog:服務端的日誌檔案 資料更新的流程 兩階段提交:寫入redo,prepare階段;寫入binlog,commit階段;資料和日誌分離
意向共享鎖、意向排他鎖、間隙鎖、自增鎖
innodb 讀寫鎖
select lock in share mode
select for update
相關點要多使用多練習