1.事务:业务动作无法通过一条独立的SQL完成;(事务这个概念是被抽象出来的);
2.事务四大特性:
- 一致性:最重要的;就是数据A和数据B之间有一定的约束;(俩个角色保证事务的一致性:应用程序的编写者+DB的实现者);
- 原子性:由DB的实现者保证;
- 持久性:由DB的实现者保证;
- 隔离性:由DB的实现者保证;(串行执行,隔离性最强,并发性最弱)
3.四种隔离级别
- 读未提交:读未提交的数据(脏读)
- 读已提交:可以读到同时并发的B事务中已经提交的修改(不可重复读)
- 可重复读:(幻读:A事务在执行过程中,可以同时读到并发的B事务中的提交修改和删除的数据);
- 序列化(可串行化):
- 不可重复读:事务A首先读取了一条数据,然后执行逻辑的时候,事务B将这条数据改变了,然后事务A再次读取的时候,发现数据不匹配了,就是所谓的不可重复读了。也就是说,当前事务先进行了一次数据读取,然后再次读取到的数据是别的事务修改成功的数据,导致两次读取到的数据不匹配,也就照应了不可重复读的语义。幻读:事务A首先根据条件索引得到N条数据,然后事务B改变了这N条数据之外的M条或者增添了M条符合事务A搜索条件的数据,导致事务A再次搜索发现有N+M条数据了,就产生了幻读。也就是说,当前事务读第一次取到的数据比后来读取到数据条目少。
4.设计数据库的几个原则
- 1.减少冗余性;
- 2.数据类型合理;
- 3.表之间的关系 —— 三大关系范式(1.字段足够独立,2.字段和主键之间有直接关系,3.字段和全部主键有关系(一般指示联合主键));
- 4.善用索引;