本节内容主要关于mysql体系结构和InnoDB存储引擎的体系架构(包括后台线程和内存结构)。InnoDB关键特性。checkpoint机制,以及刷脏磁盘的不同时机和方式。最后是在mysql客户端通过命令行建表,进行简单的增删查改操作。
Mysql体系结构
Mysql体系结构由:连接池组件,管理服务和工具组件,sql接口组件,查询分析器组件,优化器组件,缓冲组件,插件式存储引擎,物理文件组成。
InnoDB存储引擎体系架构
InnoDB是多线程模型,多个不同的后台线程负责处理不同任务。主要了解到这四类:
Master Thread,主要负责将缓冲池中的数据异步刷新到磁盘,保证数据的一致性。
IO Thread,主要负责IO请求的回调处理。
Purge Thread,用来回收已经使用并分配的undo页。
Page Cleaner Thread,将脏页的刷新操作放入到此单独线程中完成,减轻原Master Thread的工作以及对于用户查询线程的阻塞。
观察后台IO线程:mysql>show engine innodbstatus\G
可以看到一共十个线程,其中四个读线程,四个写线程,一个insert buffer thread和一个log thread。
查看purge线程:
InnoDB内存数据对象
InnoDB基于磁盘存储,其中的记录按照页的方式进行管理。
缓冲池内存速度弥补磁盘速度较慢对数据库操作的影响。
Checkpoint机制刷脏。当数据库宕机,数据库不需要重做所有日志,因为checkpoint之前的页都已经刷新回磁盘,数据库只需要对checkpoint后的重做日志进行恢复。
InnoDB关键特性
- 插入缓冲 提高插入操作性能
- 两次写· 可靠性
- 自适应哈希索引 监控各索引页的查询
- 异步IO 提高磁盘操作性能
- 刷新邻接页 检测脏页所在区的所有页
命令行中建表操作
建表:
插入数据:
修改和删除: