MySQL存储引擎

Mysql体系结构


连接池、服务与工具治理、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实用于与事务,高并发。

附上一个比拟:

MYSQL连贯

应用TCP/IP套接字连贯:mysql -h 192.168.0.1 -u rookie -p
则会连贯ip为192.168.0.1下的mysql实例。rookie为用户名。

缓冲

innodb基于磁盘存储,升高io与cpu的差距,引入了缓冲池(一块内存区域)。
缓冲池次要蕴含:数据页,索引页,undo页,插入缓冲,锁信息,自适应哈希索引等。结构图如下:

当初的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

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理