mysql引擎接口_MySQL存储引擎

Mysql体系结构

663cdd7edaf4af8dae75ad2cdb9f4de0.png

连接池、服务与工具管理、SQL接口、查询分析组件,优化器,缓存/缓冲、插入式引擎、物理文件。

Mysql 引擎

仅比较主流的MyISAM和InnoDB

InnoDB:

支持事务,外键,行级锁,支持裸设备(row disk)建立表空间,事务默认隔离级别为REAPTABLE,使用next-key lock算法来避免幻读(Phantom),提供插入缓冲(insert buffer),二次写(double write),自适应哈希索引(adaptive hash index),预读(read head)等。

不支持FullText索引,不保存具体行数。

表中的数据采用聚集(clustered)方式存储,即按主键顺序存放,若没有显示声明主键,则自动生成6字节的ROWID作为主键。

注:一张表只能有一个聚集索引,可以有多个非聚集索引。

MyISAM:

支持FullText索引;只缓存索引,不缓存数据

不支持事务,表锁

MyISAM适用于多读少写;Innodb适用于与事务,高并发。

附上一个比较:

b0aa8fbbe3be9be685a4fc809b32cf5b.png

MYSQL连接

使用TCP/IP套接字连接:mysql -h 192.168.0.1 -u rookie -p

则会连接ip为192.168.0.1下的mysql实例。rookie为用户名。

缓冲

innodb基于磁盘存储,降低io与cpu的差距,引入了缓冲池(一块内存区域)。

缓冲池主要包含:数据页,索引页,undo页,插入缓冲,锁信息,自适应哈希索引等。结构图如下:

dbbcbb11a4f0332299e7c71e96a9a244.png

现在的innodb引擎支持设置多个缓冲池,该字段为innodb_buffer_pool_instance默认为1。

CheckPoint技术

主要是用户在宕机时,快速恢复,不用重做所有的日志,只需恢复checkpoint后的日志进行恢复。

checkpoint的作用就是把脏页刷回磁盘。(脏页:即缓冲池中修改过的数据页)

两种刷回策略

Sharp CheckPoint:数据库关闭时全部刷回,默认开启。

Fuzzy CheckPoint:部分刷回。 fuzzy:毛茸茸的,模糊的。

innoDB关键特性

插入缓冲,两次写,自适应哈希索引,异步IO,刷新临界脏页。

这里只是简单介绍,如果有需要,可以去查看《MYSQL技术内幕 第2版》原书第2章第6小节。

插入缓存

使用条件:

索引是非聚集索引

索引不唯一

两次写

通过保存一个页的副本,在写入失效(如宕机)时,先重页的副本来恢复,再进行重做日志。提高数据页的可靠性。

自适应哈希索引(AHI:Adaptive Hash Index)

定义:自动观察,若建立哈希能提供性能,则建立哈希索引。

InnoDB会自动根据访问频率和模式为访问热点建立哈希索引。

异步IO

AIO作用可以进行IO Merge(IO合并),如访问页(end,start)为:(8,6),(8,7),(8,8)。这3次IO会合并为(8,6)一次IO。

刷新临近页

当刷新一个脏页时,会检测该页所在区(extent)的其他页。如果是脏页,也一起一并刷回。该字段为innodb_flush_neighbors。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值