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
。
发表回复