TPC事务处理语音(四大特征) 事务隔离级别

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

事务的隔离可能会产生多线程并发操作同一个数据库表格的问题 会带来数据安全隐患
1.脏读
一个人读到了另一个人还没有提交的数据
A B在操作同一张表格
A修改了数据,还没有提交,B就读取到了
A不提交了,回滚回来了B刚刚读取到的那些数据就是无用的 脏数据
TPC事务处理语音(四大特征) 事务隔离级别
现在我们用 Read Committed 的事务隔离来避免脏读我问题
TPC事务处理语音(四大特征) 事务隔离级别
2.不可重复读
A B在操作同一个表格
A先读取了一些数据,B此时将数据做了修改或删除
A再按照之前的条件重新读一遍,与第一个读取的不一致
TPC事务处理语音(四大特征) 事务隔离级别
避免 不可重复的效果就是 修改事务的隔离性 为 repeatable read
3.幻读
A B在操作用一个表格
A先读取了一些数据,B此时将数据做了新增
A在按照之前的条件重新读一遍,与第一次读取的不一致