TPC事务处理语音(四大特征) 事务隔离级别
事务transaction
1.事务可以理解为是让数据库做事情
2.有些时候做事情不止一条sql,存在多个组成单元
3.一件事情中所有的操作应该是统一的
要么都成功,要么多失败
4.事务的本质 可以理解为
多线程并发操作同一张表格可能带来的安全问题
事务的四大特性(ACID)
Atomicity 原子性
一个事务中的所有操作是一个整体,不可在分割
事务中的所有操作要么都成功,要么都失败
Consistency 一致性
一个用户操作数据,提交以后
另一个用户看到的数据是之前用户看到的效果是一致的
Isolation 隔离性
指的多个用户并发访问数据库时
一个用户操作数据,另一个用户不能让有所干涉
多个用户之间的数据事务操作要相互隔离
Durability 持久性
指的是一个用户操作数据的事务一旦被提交(缓存–>文件)
他对数据库底层真实的改变是永久性的 不可放回的
mysql数据事务管理默认的效果更改
一般我们不会修改这个
1.开启一个事务
每次执行的一条sql语句之前都会默认得开启 degin 或 start transaction
2.执行操作
insert update delete select 可能不止一条语句 那就需要手动 开启一个事务
3.事务的处理
提交 / 回滚 / 保存还原点
mysql数据库会默认的执行提交事务
事务的隔离级别
Serializabel 最高级别 可以避免出现以下所有的问题 性能比较慢
Repeatable Read 可重复读 (避免脏读,不可重复读)
Read Committde 读取已提交 (避免脏读)
Read UnCommitted 读取为提交(所有效果都无法保证)
MySQL数据默认提供的隔离级别是 Repeatable Read
Oracle数据库提供默认的隔离级别 Read Committed
事务的隔离可能会产生多线程并发操作同一个数据库表格的问题 会带来数据安全隐患
1.脏读
一个人读到了另一个人还没有提交的数据
A B在操作同一张表格
A修改了数据,还没有提交,B就读取到了
A不提交了,回滚回来了B刚刚读取到的那些数据就是无用的 脏数据
现在我们用 Read Committed 的事务隔离来避免脏读我问题
2.不可重复读
A B在操作同一个表格
A先读取了一些数据,B此时将数据做了修改或删除
A再按照之前的条件重新读一遍,与第一个读取的不一致
避免 不可重复的效果就是 修改事务的隔离性 为 repeatable read
3.幻读
A B在操作用一个表格
A先读取了一些数据,B此时将数据做了新增
A在按照之前的条件重新读一遍,与第一次读取的不一致