一些常用命令:
show engines;
show engine innodb status;
show variables like 'innodb_%';
mysql體系結構圖:
包括:
連接池組件
管理服務和工具組件
SQL接口
查詢分析器
優化器
cache組件
插件式存儲引擎(核心,包括了內存、索引,存儲管理等) 存儲引擎是基於表的,而不是數據庫
物理文件
InnoDB存儲引擎:
主要面向OLTP(事務處理類),特點:行鎖,外鍵,非鎖定讀(默認情況下,讀不好產生鎖),MVCC(多版本併發控制,提高併發速度),next-key locaking避免幻讀,
插入緩衝,二次寫,自適應哈希索引,預讀,聚簇索引(數據按主鍵順序存儲)。
MyISAM存儲引擎:
適用於OLAP類應用。不支持事務;表鎖;全文索引。對於MyISAM存儲引擎表,Mysql只緩存索引,數據文件的緩存交給操作系統。 其後續存儲引擎:Maria
InnoDB後臺線程:
IO Threads(insert buffer thread,log thread,read threads,write threads),Master thread,鎖監控線程,錯誤監控線程。
InnoDB的內存:
緩衝池(最大),redo log buffer,additional memory pool
InnoDB總是將數據庫文件按頁(16K)讀取到緩衝池,按LRU算法進行刷新,當數據庫文件需要修改,先修改緩衝池中的,再按一定頻率將髒頁刷新到數據庫
緩衝池中不僅有數據頁,索引頁,還有undo頁,插入緩衝,自適應哈希索引,InnoDB存儲的鎖信息,數據字典信息等。
Master thread:
master thread下包括幾個loop:
loop(主loop)
background loop
flush loop
suspend loop
master thread 源碼分析見讀書筆記2