20200220 01.MySQL 架構與 SQL 執行流程

數據庫的操做方式有許多種,可是MySql的工做流程數怎樣的呢?

image.png

  1. 客戶端mysql

    執行sql語句與服務器進行鏈接
  2. 查詢緩存redis

    執行下面的語句查看MySql默認緩存是否關閉
    show variables like 'query_cache%';
    默認是關閉的,咱們在使用的通常不使用默認的緩存,都是使用一些專門的緩存器,如 redis,還有Mybatis的一級緩存之類的;
    咱們不是用MySql默認的緩存主要是由於sql語句改變或者任意一條數據發生變化都直接失效了;
  3. 解析器和預處理sql

    咱們在查詢的時候爲何sql語句出現語法的錯誤時候會報錯呢?
    這就是依靠解析器和預處理器來進行處理解析的
    解析器:會對一個完整的sql語句進行打碎,獲得一個個單詞,獲得的是什麼類型的語句
        預處理器:根據MySql的語句規則,對sql進行語法的解析,生成數據結構,獲得一個解析樹;

    image.png

  4. 查詢優化器數據庫

    咱們所使用的sql語句到mysql服務器中不是最終結果,而優化器會對解析器生成的解析樹生成不一樣的執行計劃,選擇最優的執行計劃,而mysql中使用的優化器是基於開銷的優化器,咱們要選用開銷最小的優化器;
    在使用sql語句的時候能夠使用 EXPLAIN關鍵字加在語句的最前面查看執行計劃;
  5. 存儲引擎緩存

    咱們的數據存儲的數據庫中,對於不一樣的存儲引擎對於不一樣的需求進行而建立的;
    `show table status from `tableName`;`
    使用上述語句能夠查看使用的存儲引擎

2020-02-20_192756.png

若是對數據一致性要求比較高,須要事務支持,能夠選擇 InnoDB。 若是數據查詢多更新少,對查詢性能要求比較高,能夠選MyISAM。 若是須要一個用於查詢的臨時表,能夠選擇 Memory。
相關文章
相關標籤/搜索