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: 處理髒頁的刷新操做。
歡迎關注本站公眾號,獲取更多信息