Mysql

一.MyISAM 和 Inoodb的区别

MyISAM Innodb
不支持 支持事务
不支持 支持外键
非聚簇索引 聚簇索引
只有表锁 支持行锁(默认)和表锁

二.B-树和B+树

1.B-树

 

 2.B+树

 

 

b+树中间没有卫星数据,所以同样大小的磁盘页可以容纳更多元素

B-树在树里面的查询次数其实跟二叉树的次数是一样的,但是B+树的磁盘IO却减少了。

三.锁的类型

读锁  |  读锁是共享的,这时只能读不能写        |

写锁  |  写锁是排他的,它会阻塞其他的写锁和读锁 |

表锁 行锁
锁定整张表并且阻塞其他用户对该表的所有读写操作

行锁又可以分为乐观锁悲观锁,悲观锁可以通过

for update实现,乐观锁则通过版本号实现。

四.事务基本特性和隔离级别

1.事务基本特性 ACID

原子性 一个事务中的操作要么全部成功,要么全部失败
隔离性 一个事务的修改在最终提交前,对其他事务是不可见的
一致性 数据库总是从一个一致性的状态转换到另外一个一致性的状态
持久性 一旦事务提交,所做的修改就会永久保存到数据库中

 

 

2.事务的并发问题

脏读(Drity Read):某个事务已更新一份数据,另一个事务在此时读取了同一份数据,由于某些原因,前一个RollBack了操作,则后一个事务所读取的数据就会是不正确的。(一个对数进行修改,但还没提交,此时另一个来读取);

不可重复读(Non-repeatable read):在一个事务的两次查询之中数据不一致,这可能是两次查询过程中间插入了一个事务更新的原有的数据。(强调修改);

幻读(Phantom Read):在一个事务的两次查询中数据笔数不一致,例如有一个事务查询了几列(Row)数据,而另一个事务却在此时插入了新的几列数据,先前的事务在接下来的查询中,就会发现有几列数据是它先前所没有的。(在随后的查询中,第一个事务(T1)就会发现多了一些原本不存在的记录,就好像发生了幻觉一样,所以称为幻读。);

更新丢失:两个人一起提交修改,有一个必失败。

五.MVCC

 

posted @ 2020-10-27 23:59  拿着放大镜看世界  阅读(52)  评论(0编辑  收藏  举报