叨叨两句
- ~
事务的四大特性
1.原子性:事务是一组不可分割的操作单元,这组单元要么同时成功要么同时失败.
2.一致性:事务前后的数据完整性要保持一致。
3.隔离性:多个用户的事务之间不要相互影响,要相互隔离。
4.持久性:一个事务一旦提交,那么它对数据库产生的影响就是永久的不可逆的,如果后面再回滚或者出异常,都不会影响已提交的事务。
不考虑事务的隔离性引发的情况
1.脏读:一个事务读取到了另外一个事务未提交的数据
2.不可重复读:在一个事务中,两次查询的结果不一致(针对的是 update操作)
3.虚读(幻读):在一个事务中,两次查询的结果不一致(针对的是 insert操作)
通过设置事务的隔离级别来解决脏读、不可重复读、虚读
事务的隔离级别:
1.read uncommitted; 读取到未提交,最低级别,在这种级别下,以上三种情况都会发生
2.read committed; 读取到已提交数据,可以避免脏读,但是会发生不可重复读和虚读(Oracle的默认隔离级别)
3.repeatable read; 可重复度 ,可以避免不可重复读和脏读,但是会发生虚读的情况。(MySql的默认隔离级别)
4.serializable; 序列化的,串行化的 最高的隔离级别,能够避免以上三种情况,但是效率最低。 一般银行系统使用这种隔离级别
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。