MySQL系列(一) MySQL體系結構概述

  • 1 MySQL 的體系結構

    • 鏈接池組件
    • 管理服務和工具組件
    • SQL接口組件
    • 查詢分析器組件
    • 優化器組件
    • 緩衝組件
    • 插件式存儲引擎(體系結構的核心)
    • 物理文件
  • 2 InnoDB 概述

    • InnoDB存儲引擎支持事務,設計目標主要面向在線事務處理OLTP的應用,其特色是行鎖設計,支持外鍵,並支持相似於Oracle的非鎖定讀,即默認讀取操做不會產生鎖,5.58後成爲默認引擎
    • InnoDB使用MVCC(多版本併發)控制來得到高併發性,而且實現了SQL標準的4種隔離級別
    • InnoDB還提供了插入緩衝,二次寫,自適應哈希索引,預讀等實用功能
    • InnoDB採用彙集索引的方式,每張表的存儲都是按照主鍵的順序進行存放
    • 最有效利用以及使用內存的cpu 的存儲引擎,好性能,高擴展,高可用
  • 3 其餘存儲引擎概述

    • MyISAM :面向 OLAP,不支持事務
      • MyISAM不支持事務,表鎖設計,支持全文索引,主要面向一些OLAP數據庫應用。
      • 緩衝池只緩存索引文件,而不緩衝數據。
    • DNB: 集羣存儲引擎
      • 集羣存儲引擎
      • 數據所有放在內存中(5.1後能夠在磁盤上存非索引數據),主鍵查找速度極快而且能夠經過添加NDB數據存儲節點能夠線形提升數據庫性能,是高性能高可用的集羣系統。
      • 不過NDB的鏈接操做是在MySQL數據庫層完成的,若是解決了這個問題,NDB的的市場是很是巨大的。
    • Memory: 數據存放內存
      • 以前稱之爲HEAP引擎,將數據存放在內存中,適合存儲臨時數據的臨時表,以及數據倉庫中的維度表
      • 使用哈希索引,而不是B+樹
      • 併發性較差,存儲變長字段是按照定長處理的,比較浪費內存
  • 4 InnoDB 體系結構

    • 多個內存塊組成一個內存池,主要功能:
      • 緩存磁盤上的數據
      • 重作日誌緩衝
      • 維護全部進程/線程須要訪問的內部數據結構
    • 多線程模型
      • Master Thread:核心線程,主要負責將緩存池中數據異步刷新到磁盤
      • IO Thread: 處理IO請求,負責這些IO請求的毀掉函數處理
      • Purge Thread: 回收已經使用並分配的undo(重作日誌)頁
      • Page Cleaner Thread: 處理髒頁的刷新操做。
相關文章
相關標籤/搜索