第一章:mysql存储引擎
1.innodb存储引擎
支持事务;行锁设计;支持外键;支持非锁定读。
4种事务隔离级别,默认为repeatable,同时使用next-key lock的算法避免幻读.
支持多版本并发控制,提高性能.
索引支持 btree索引,hash索引,以及全文检索功能.
2.MyISAM存储引擎
不支持事务;表锁实现;支持全文检索;存储引擎由数据文件和索引文件组成.
第二章:innodb存储引擎
1.概述:MySQL第一个支持完整的acid事物的存储引擎,特点是行级锁,多版本控制,支持外键,提供一致性非锁定读,并且更高效的利用cpu.
2.体系结构:
后台线程 操作innodb存储引擎缓冲池 与文件进行更新.
3.内存池结构:
4.事务持久性的要求的保障:采用的write ahead log策略.即,在事务提交时,先对重做日志进行更新,再修改页数据.当发生宕机时,可通过重做日志回复数据.
5.innodb的关键特性:
①插入缓存(提高性能):对于非聚集索引的插入或者更新操作并不是马上进行更新到索引页,而是先判断缓冲池中是否有该数据,有则直接更改,没有则先插入到缓冲区,再以一定的频率刷新.
②两次写(提高可靠性);对脏页进行刷新时,先写到doublewriter buffer缓冲中,在刷新到磁盘中.
第四章:表
1.innodb表结构
2.约束
数据完整性:①实体完整性,通过主键或unique约束。②数据完整性,通过触发器完成.③域完整性,通过not null , int 等来约束.
约束和索引的区别:约束是逻辑概念,索引是一种数据结构,索引是实现约束的一种方式.
第五章:索引
btree索引和hash索引,以及全文检索
1.hash索引是自适应的,根据表的使用情况自动生成,不能人为干预.
2.btree索引
2.1 btree索引并不是根据给定键值找到