Mysql高級 | 【一】存儲引擎和SQL的讀取順序

轉載本文章請標明作者和出處
本文出自《Darwin的程序空間》

在這裏插入圖片描述

努力終將得到回報,你要始終堅信這一點

Mysql整體分層

  • 連接層
    • 與客戶端進行連接的服務
    • 主要完成一些類似連接的處理,授權認證及相關的安全方案
  • 服務層
    • 提供和新的服務功能
    • 會對sql進行一些優化
    • 所有跨存儲引擎層的功能都在這一層
    • 查詢內存緩存的服務,提升系統性能
  • 引擎層
    • 真正負責Mysql的數據的存儲和提取
    • 不同的存儲引擎提供不同的功能,可以根據自己的實際需求來選取
  • 存儲層
    • 數據存儲在計算機文件系統之上,並完成與存儲引擎的交互

在這裏插入圖片描述

存儲引擎

概念

  • Mysql中的數據使用各種不同的技術存儲在文件(或者內存中);
  • 這些技術中每一種技術都使用不同的存儲機制、索引技巧、鎖定水平並且最終提供廣泛的不同的功能和能力;
  • 通過選擇不同的技術,你能夠獲得額外的速度或者功能,從而改善你的應用的整體功能;
  • 這些不同的技術以及配套的相關功能在Mysql中被稱之爲存儲引擎;

查看存儲引擎

show ENGINES;

在這裏插入圖片描述

查看當前使用的存儲引擎

show  table status from JD(數據庫名稱) where name = "表名"; 

在這裏插入圖片描述

MyISAM和InnoDB的區別

  • 主外鍵
    • InnoDB支持
    • MyISAM 不支持
  • 事務
    • InnoDB 支持
    • MyISAM 不支持
  • 行表鎖
    • InnoDB 行鎖
    • MyISAM 表鎖
  • 緩存
    • InnoDB 索引和數據均緩存,對內存要求比較高,而且內存的大小有決定性的影響
    • MyISAM 表鎖
  • 表空間
    • InnoDB 小
    • MyISAM 小
  • 關注點
    • InnoDB 事務
    • MyISAM 性能
  • 默認安裝
    • InnoDB 默認支持,並且新建表默認使用
    • MyISAM 默認支持
  • 文件結構
    • InnoDB 事務
      • b.frm:描述表結構的文件,字段長度類型等
      • b.ibd:存儲數據信息和索引信息
    • MyISAM 性能
      • b.frm:描述表結構的文件,字段長度類型等
      • b.MYD:數據信息文件,存儲數據信息文件
      • b.MYI:索引信息文件

SQL讀取的順序

  • 寫sql的順序和mysql執行sql的順序:

    平常我們寫sql的時候順序大概是這個樣子的:
    在這裏插入圖片描述

    但是sql讀取的時候順序是這個樣子的:
    在這裏插入圖片描述

  • 整體執行過程:

    • 先對多表進行關係,然後再根據連接條件查找符合條件的記錄
    • 在符合條件的基礎上再進行where條件篩選
    • 對篩選出來的內容進行分組操作
    • 分組完成之後使用having語句再次篩選出滿足條件的記錄
    • 取所有滿足條件的記錄
    • 對取出的記錄進行排序
    • 最終從取出的記錄獲取limit中指定的記錄
  • mysql不支持全連接
    mysql默認不支持全連接,大那是可以使用左連接union右連接的結果


喜歡的朋友可以加我的個人微信,我們一起進步
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章