抄书之《MySQL技术内幕:InnoDB存储引擎》

版权声明: https://blog.csdn.net/ph3636/article/details/88418268

1. 表的分区本质上还是一张表,只不过存储的地方分为了多个,使用上也和没分区一样,但是分区总要根据一种模式,比如根据id进行分区,这个时候根据id进行查询时,会先根据分区算法选出存储的区域,然后在该分区中查找即可,然而如果根据该表的其他key查询时,则该查询语句的执行就需要在每个分区中查找,多了很多次io查找,因为每个分区都需要遍历一遍。感觉这个分区和表的分表类似,分表时每个表名不同,没有数据库中间件的话操作起来比较麻烦,好在是单独存储,并发量会提高,但是类似的查找问题也是存在的。

2. 多版本并发控制MVCC,在RC和RR事务隔离级别下使用非锁定的一致性读,也就是读的快照文件,RC下读取锁定行的最新一份快照数据,RR下总是读取事务开始时的行数据版本,这样可以达到可重复读。

3. SELECT ... FROR UPDATE 对读取的行记录加一个X锁,其他事务想在这些行上加任何锁都会被阻塞,SELECT ... LOCK IN SHARE MODE 对记录的行记录加一个S锁,其他事务可以向被锁定的记录加S锁,但是对于加X锁,则会被阻塞。

4. Record Lock单个行记录上的锁。Gap Lock间隙锁,锁定一个范围,但不包含记录本身。Next-Key Lock是前两者之和,锁定一个范围,并且锁定记录本身。

5. 在RR模式下,Next-Key Lock算法是默认的行记录锁定算法。

6. 脏读是指一个事务可以读到另一个事务中未提交的数据。不可重复读是指在一个事务内多次读同一数据,中间有别的事务的修改操作,导致两次读取结果不一致。这两个的区别是:脏读是读到未提交的数据,而不可重复读读到的确实是已经提交的数据,但是其违反了数据库事务一致性的要求。

7. 在InnoDB存储引擎中,通过Next-Key Lock算法来避免不可重复读的问题,在MySQL官方文档中,将不可重复读定义为Phantom Problem幻想问题,在Next-Key Lock算法下,对于索引的扫描,不仅仅是锁住扫描的索引,而且还锁住这些索引覆盖的范围gap,因此对于这个范围内的插入都是不允许的,这样就避免了另外的事务在这个范围内插入数据导致的不可重复的问题,因此,InnoDB存储引擎的默认事务隔离级别是READ REPEATABLE,采用Next-Key Lock算法就可以避免幻读的现象

8. 原子性(atomicity)一致性(consistency)隔离性(isolation)持久性(durability),隔离性由锁来实现,其他通过数据库的redo和undo来完成

9. 主从同步的二进制日志复制方式为ROW(每行记录的改变日志)和STATEMENT(SQL命令形式)

10. 数据库应用分类:OLTP(Online Transaction Processing)在线事务处理,多用在日常的事务处理应用中,如银行交易、在线商品交易、blog、网络游戏等应用,数据库容量较小。OLAP(Online Analytical Processing)在线分析处理,多用于数据仓库中,一般需要执行复杂的SQL语句来进行查询。

11. 磁盘组合方式:RAID0一个磁盘的内容分为多个。RAID1一个磁盘的内容分为多个并且同时备份一份即镜像。RAID5采用硬盘分区技术,把数据和相对应的奇偶校验信息存储到组成的各个磁盘上,两者分别存储到不同的磁盘上,所以其中一个磁盘损坏可以恢复。RAID10为RAID0和RAID1两者的结合,理论上最优,就是耗费磁盘比较多。

扫描二维码关注公众号,回复: 5954288 查看本文章

12. Innodb的默认数据结构是聚簇索引,而MyIsam是非聚簇索引。 Innodb是通过主键来聚集数据的,就是“被索引的列就是主键”。如果一张表没有主键,那就会通过某一唯一列来聚集数据,没有唯一列的时候,就会隐式的生成一个id,通过这个id来聚集数据。在Myisam引擎索引和数据是分开存储的,而Innodb是索引和数据是一起以idb文件的形式进行存储的。在访问速度上,聚簇索引比非聚簇索引快。非聚簇索引需要先查询一遍索引文件,得到索引,跟据索引获取数据。而聚簇索引的索引树的叶子节点的直接指向要查找的数据行。 在使用二级索引进行查询的时候,Innodb首先通过二级索引B+Tree得到数据行的主键索引,然后再通过主键索引树查询数据。所以在二级索引,Innodb的性能消耗比较大。 但是,这种情况在innodb中有一定的优化,不是认为控制的,而是引擎实现的,通过二级索引查询多了,innodb会生成自适应的哈希索引。

猜你喜欢

转载自blog.csdn.net/ph3636/article/details/88418268
今日推荐