最近在学习极客时间上的mysql课程,对mysql数据库有了更多了解,本篇文章是想总结一些mysql的基础知识。目的是加深自己的记忆,也可以提升对mysql设计原理的了解。
关键字
名词
transaction:事物
view:视图
consistentreadview:一致性视图
redolog:重做日志,物理日志,记录数据页上做的什么修改
binlog:归档日志,逻辑日志,记录语句的原始逻辑,即sql语句
WAL:writeaheadlogging,更新数据时先写redolog后写磁盘
crash-safe:程序异常时不丢数据
B+树:innodb的索引存储方式,索引不仅存在内存,而且还存在磁盘
clusteredindex:聚簇索引,就是主键索引
secondaryindex:非主键索引,基于非主键索引查询需要多查一次主键索引树,即回表。
覆盖索引:比如以一个索引为where条件查ID,这个索引树上就有id,不需要查主键索引树回表。
索引最左前缀:联合索引最左面开始的n个字节优先索引
索引下推:联合索引ab上可以优先判断b是否满足然后再去回表,提高效率,降低回表次数
前缀索引:不能用到覆盖索引,即需要回表
页分裂:插入数据时,索引上的数据页满了,需要新申请数据页
Auto_Increment:自增主键,有序插入避免了页分裂,提高效率降低空间使用率。
ACID:atomicity原子性,consistency一致性,isolation隔离性,durability持久性
dirtyread:脏读
non-repeatableread:不可重复读
phantomread:幻读
幻读:同一个事物,前后两次读同一个范围得到的结果不同,因为后一次有新插入导致。
readun