综合事务的处理及隔离级别

Posted 乔不思

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了综合事务的处理及隔离级别相关的知识,希望对你有一定的参考价值。

事务的隔离级别:

先说说 (通俗说) 

1. 脏读:是一个事务读取了  其他事务没有提交的数据。

2.不可重复度:就是第一次读和第二次读,两次读到的 数据不一致,原因是:在此期间有其他的事务修改了数据。

3.幻读:就是第一次读和第二次读,两次读到的 数据不一致,

原因是:在此期间有事务插入了新的数据(区别于不可重复读:不可重复读是  对于修改操作而言,幻读对插入造作而言)

事务的隔离级别有:read-uncommite(读没提交),read-commite(读已提交),none-repeatedRead(不可重复度),serializable(序列化,顺序化)

一般的  数据库都不存在  第一种read-uncommite的情况。


一般数据库都有自己默认的事务隔离级别;一般情况是  read-commite,这个解决了脏读的问题,并且效率高 。

人们为了让  数据库的效率高并且可以隔离级别高,就出来了  “乐观锁”和“悲观锁”的思想。


简单理解:乐观锁:当一个事务读取数据后,要进行操作,在操作前  为数据加一个版本信息(version),当在操作期间有其他事物对改数据进行了操作,那么版本信息就会变

化,这样当改事务执行结束后判断一下版本信息,如果没变,那么提交事务,如果改变了,那么重复执行上述操作---这就是乐观锁的思想,很多地方用到这个思想,比如安卓的

数据库sqlite就又到了version。

悲观锁是当一个事务对  数据进行操作的时候对数据加“锁”,在此事务没有提交之前,其他事务是不能操作该数据的,只有这个事务结束提交后,其他事物才能对它进行操作。


当然,很明显,乐观锁的性能要优于悲观锁。。。



写给有需要的人。。

以上是关于综合事务的处理及隔离级别的主要内容,如果未能解决你的问题,请参考以下文章

mysql 的事务隔离级别 及各个隔离级别应用场景,详细

JDBC处理事务和事务的隔离级别

MySQL事物隔离级别及搜索引擎

事务-并发事务演示及隔离级别

Linux命令:MySQL系列之九--MySQL隔离级别及设置

[数据库基础]事务及隔离级别的概念