MySQL調優篇 | 邏輯架構解讀(1)
【前言】
經常有一些朋友向我諮詢,如何寫出高效的SQL,這不是三言兩語能說得清的,索性認真來寫一下,增刪查改方面的知識我不再贅述,如果有基礎薄弱的同學,可以好好的補一補再來看。
以MySQL為基礎,MySQL調優篇內容主要包含MySQL邏輯架構、索引知識、表關聯演算法、explain執行計劃解讀及SQL調優實戰等。
文章受眾主要為兩類人:
第一類人是工作中不可避免的會接觸到MySQL的人,比如說一些專案人員、開發人員、測試人員等。
第二類人是專職DBA。
其實不管是專職的還是非專職的,就我接觸到的情況而言,很多DBA平時維護MySQL看起來沒什麼問題,但其實沒有很好的理論支撐,知其然而不知其所以然,解釋一個簡單的問題就能問倒一大部分的人。
比如說:MySQL的邏輯架構,分析當前業務架構優缺點?SQL工作原理是什麼樣的?
而且很多公司招聘面試的時候,考驗的也是背後的原理居多,基本上沒有機試。面試官問一個問題,即便你會解決但就是說不出原理,那麼你肯定要不了高薪。
理論+實戰=高薪
文章能夠讓大家有所收穫、有所借鑑那是最好的。
【MySQL邏輯架構】
1、整體架構圖
MySQL的架構不同於其他資料庫,它的外掛式的儲存引擎架構可以在多種不同場景中應用併發揮良好作用。這種架構可以根據業務的需求和實際需要選擇合適的儲存引擎。
各層介紹:
1.1 連線層
最上層是客戶端,包含本地sock通訊和大多數基於客戶端/服務端工具實現的類似於tcp/ip的通訊。
1.2 服務層
1.3.引擎層
儲存引擎負責MySQL中資料的儲存和提取,伺服器透過API與儲存引擎進行通訊。不同的儲存引擎具有的功能不同,這樣我們可以根據自己的實際需要進行選取。
show engines:檢視所有的資料庫引擎
show variables like ‘%engine%’ 檢視預設的資料庫引擎
MyISAM和InnoDB對比
1.4.儲存層
資料儲存層,主要是將資料儲存在執行於裸裝置的檔案系統之上,並完成與儲存引擎的互動。
2、查詢流程
MySQL的查詢流程大致是:
客戶端透過協議與DB伺服器建連線,傳送查詢語句,先檢查查詢快取,如果命中,直接返回結果,否則進行語句解析。
語法解析器和預處理:首先MySQL透過關鍵字將SQL語句進行解析,並生成一顆對應的“解析樹”。解析器將使用語法規則驗證和解析查詢;前處理器則根據一些規則進一步檢查解析數是否合法。
查詢最佳化器當解析樹被認為是合法的了,並且由最佳化器將其轉化成執行計劃。一條查詢可以有很多種執行方式,最後都返回相同的結果。最佳化器的作用就是找到這其中最好的執行計劃。
流程圖:
3、SQL的執行順序
一般SQL語法:
SQL解析:
真正執行的順序:
4、SQL效能問題
常見的幾個點:
- SQL邏輯複雜且糟糕
- 無效的索引
- 伺服器調優和各個引數的配置(緩衝,執行緒數等)
SQL邏輯複雜且糟糕,通常表現在嵌入很多子查詢,各種表關聯等。
無效的索引,通常表現為索引建立了但沒用上,索引分為單值索引和複合索引和唯一索引,所謂單值索引指的是一個索引有且只包含一個列,一個表中可以有多個單列索引。複合索引是指索引能夠同時覆蓋多個資料列;唯一索引是指索引列的值必須唯一,但可以為null。
伺服器調優一般部署MySQL階段就調整好了。
以上就是全部內容了,下一篇講索引相關的知識,希望對大家的學習或者工作具有一定的參考價值。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69997824/viewspace-2883448/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL提升筆記(1):MySQL邏輯架構MySql筆記架構
- 《MySQL 基礎篇》十:邏輯架構和儲存引擎MySql架構儲存引擎
- C-04.MySQL邏輯架構MySql架構
- MySQL調優篇 | 索引知識解讀(2)MySql索引
- 資料庫 Mysql 邏輯架構簡介資料庫MySql架構
- MySQL調優篇 | EXPLAIN執行計劃解讀(4)MySqlAI
- MySQL調優篇 | SQL調優實戰(5)MySql
- 適當調大arraysize減少邏輯讀
- 一次調整arraysize減少邏輯讀
- 入門MySQL——架構篇MySql架構
- 精通MySQL之架構篇MySql架構
- MySQL架構的優化MySql架構優化
- 賽靈思(Xilinx)BlockRam(Bram)的結構與讀邏輯解釋BloC
- 《Kafka實戰》之架構和設計邏輯Kafka架構
- 深度解讀GaussDB邏輯解碼技術原理
- iOS架構設計解耦的嘗試之VC邏輯AOP切割iOS架構解耦
- 軟體體系架構課堂測試07 –邏輯架構設計架構
- 效能調優-Mysql索引資料結構詳解與索引優化MySql索引資料結構優化
- Vue原始碼探究-資料繫結邏輯架構Vue原始碼架構
- 詳解邊緣計算系統邏輯架構:雲、邊、端協同架構
- 《微服務架構設計模式》讀書筆記 | 第5章 微服務架構中的業務邏輯設計微服務架構設計模式筆記
- 物理結構和邏輯結構更通俗解釋
- Mysql調優之profile詳解MySql
- oracle邏輯讀過程Oracle
- oracle 邏輯結構Oracle
- PostgreSQL:邏輯結構SQL
- sql優化之邏輯優化SQL優化
- 圖解MySQL邏輯備份的實現流程圖解MySql
- Adaptive AUTOSAR 學習筆記 4 - 架構 - 邏輯檢視APT筆記架構
- 新零售SaaS架構:組織管理的底層邏輯與架構設計架構
- 《底層邏輯》讀後感
- MySQL調優MySql
- Mysql之讀寫分離架構-AtlasMySql架構
- 架構-穩定性建設邏輯問題實戰總結架構
- 深入Netty邏輯架構,從Reactor執行緒模型開始Netty架構React執行緒模型
- mysql8.0 主從架構模式【0到1架構系列】MySql架構模式
- mysql 開發進階篇系列 42 邏輯備份與恢復MySql
- 使用六邊形架構解耦技術程式碼與業務邏輯 - Julien Topçu架構解耦