事务是数据库执行的一系列操作。
- 事务最主要的是ACID四个特性:
- 原子性-事务要么全部执行,要么全不执行
- 一致性-一个事务的执行不应该破坏数据库的完整性约束
- 隔离性-事务之间相互隔离,互不影响,这又涉及到了四个隔离等级
- * 未提交读:还没提交你就读,那必然存在脏读 RU
- * 提交读:提交之后你再读,乖 RC
- * 可重复读:不提交你来读,提交你仍来读,这是个幻读的问题,好在mysql有间隙锁,解决了幻读的问题,但是可能会死锁,RR
- * 可串行化:事务串行执行,性能最差 S
- 持久性:事务提交后需要将提交的事务持久化到磁盘,这样及时系统崩溃,提交的事务也不会丢失
再说一个mysql的数据存储结构应该是B+树,B+树的特性就是将所有数据都在叶子节点,其他节点放的都是索引,那么为啥要用B+树呢,这就是因为树的深度比较短,搜索路径短,性能自然就优化了。