1.ACID:原子性、一致性、隔离性、持久性
2.事务:显示,隐士事物
3.不一致性:
更新丢失(覆盖了)、脏读(读取到了未提交的数据)、不可重复读(两次读取的结果不一致)
4.
四个隔离级别:--主要保证查询时最新的
READ UNCOMMITTED --不申请X锁与S锁
READ COMMITTED --申请S锁
REPEATABLE READ --锁定查询结果,这样其他事务不可以更新查询到的结果数据
SERIALIZABLE --数据集上放置一个范围锁
七个传播属性:--保证事物异常回滚
propagation_required 支持当前没有开启一个新事物
propagation_support 支持当前没有就无事物运行
propagation_new_required 开启新事物
propagation_mondatory 必须有事物,没事物抛异常
propagation_never 不要事物,有则异常
propagation_not_support 非事物运行,有则挂起事物
===================================================
重要:
事物的隔离级别针对的是查询的场景
事物的传播属性针对的回滚或者提交的场景
================================================
读取和写入共享的变量,理论上都应该加锁,保证原子性(操作数据的仅仅只有一个线程,不会出现多个同时修改)和可见性(多个线程看的共享数据都是一致的)
本质就是对于资源进行控制访问(也就是PV操作)