一些常用命令:
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