mysql 体系结构和存储引擎
数据库:物理操作系统文件或者其他形式的文件
实例:mysql数据库由一个共享内存区和后台进程组成
启动mysql实例时,会读取配置文件,安装以下顺序
mysql体系结构
mysql插件式的一个存储引擎可以根据业务需求来更换更加适合的存储引擎
需要注意的是存储引擎是基于表的,而不是数据库的
各种存储引擎的区别可以在网上或者书籍中查到资料这里就不在一 一对比了
如何连接mysql
mysql采用的是c/s架构,也就是说我们在client端输入命令,要通过一些方式连接到server端
不同主机的话,tcp/ip连接比较常见, 如果是本机的话,可以用命名管道,和共享内存,unix套接字
等进程间通信方式
innodb线程和Master Threaed工作方式
innodb线程有
master thread,IOthread, Purge thread, page cleaner page
缓冲区
怎么对这些页进行管理呢,我们有LRU,但是这个lru是升级版的,free_list, flush_list
redo log buffer
默认能存放1s内事务日志即可
何时刷新
额外内存池
就是为数据结构本身分配内存,如果不够的话,要向缓冲池拿
checkpoint技术
Master thread工作伪代码
innodb_io_capcity可以人为调整,然后这下的页数就根据这个值来定
innodb关键特性
insertbuffer
1.insertBuffer针对不唯一的辅助索引,物理和逻辑上的割裂做的一个优化 。就是对该索引的插入不是每一次都插入到索引页中,而是先放到insert buffer页中,然后在合适的情况下与辅助索引的子节点做merge,大大提高了性能(因为不唯一,所以我们不要再原来的索引里查找)
innodb1.0.x开始了changbuffer
有了insert buffer。 delete buffer(), purgebuffer
insertbuffer实现
合并
双写
自适应哈希
异步io
刷临接页
innodb恢复
innodb文件
innodb的表
TODO