首页 > 代码库 > mysql事务

mysql事务

我是老师的好学生,毕业了自然不能带走老师的知识,所以在面试官问到mysql事务的时候,我表现的干净利索,感觉上是知道的,但是想不起来,就是这样一个懵逼的状态。。回来补充一下。

事务是数据库执行的一系列操作。

  • 事务最主要的是ACID四个特性:
  • 原子性-事务要么全部执行,要么全不执行
  • 一致性-一个事务的执行不应该破坏数据库的完整性约束
  • 隔离性-事务之间相互隔离,互不影响,这又涉及到了四个隔离等级
  1. * 未提交读:还没提交你就读,那必然存在脏读 RU
  2. * 提交读:提交之后你再读,乖 RC
  3. * 可重复读:不提交你来读,提交你仍来读,这是个幻读的问题,好在mysql有间隙锁,解决了幻读的问题,但是可能会死锁,RR
  4. * 可串行化:事务串行执行,性能最差 S
  • 持久性:事务提交后需要将提交的事务持久化到磁盘,这样及时系统崩溃,提交的事务也不会丢失

 

再说一个mysql的数据存储结构应该是B+树,B+树的特性就是将所有数据都在叶子节点,其他节点放的都是索引,那么为啥要用B+树呢,这就是因为树的深度比较短,搜索路径短,性能自然就优化了。

mysql事务