数据库原理
一、数据库三大范式:
1、列不可再分。
2、属性依赖于主键。
3、属性直接依赖于主键,不依赖其他属性。
二、数据库事务的四大特性:(ACID)
1、原子性:一个事务的所有操作要么全部完成,要么全部失败回滚。
2、一致性:事务提交前后,数据库整体保持一致性状态。如A、B之间转账后,总金额不变。
3、隔离性:并发事务间不能互相干扰,应保持隔离。
4、持久性:事务成功提交后,对数据库的改变应该是永久性的。
三、事务不隔离产生的问题:
1、脏读:一个事务读取了另一个事务还没有提交的数据。
2、不可重复读:一个事务读取时,另一个事务修改并提交了数据。(update、delete)
3、幻读:一个事务读取时,另一个事务新增并提交了数据。(insert)
四、数据库事务隔离级别:
1、Serializable(串行化):可避免脏读、不可重复读、幻读。
2、Repeatable read(可重复读):可避免脏读、不可重复读。
3、Read committed(读已提交):可避免脏读。
4、Read uncommitted(读未提交):最低级别,无法保证。
mysql默认事务隔离级别为:Repeatable read(可重复读)
sqlserver默认事务隔离级别为:Read committed(读已提交)
spring的@Transaction默认使用数据库的隔离级别