综合事务的处理及隔离级别
Posted 乔不思
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了综合事务的处理及隔离级别相关的知识,希望对你有一定的参考价值。
事务的隔离级别:
先说说 (通俗说)
1. 脏读:是一个事务读取了 其他事务没有提交的数据。
2.不可重复度:就是第一次读和第二次读,两次读到的 数据不一致,原因是:在此期间有其他的事务修改了数据。
3.幻读:就是第一次读和第二次读,两次读到的 数据不一致,
原因是:在此期间有事务插入了新的数据(区别于不可重复读:不可重复读是 对于修改操作而言,幻读对插入造作而言)
事务的隔离级别有:read-uncommite(读没提交),read-commite(读已提交),none-repeatedRead(不可重复度),serializable(序列化,顺序化)
一般的 数据库都不存在 第一种read-uncommite的情况。
一般数据库都有自己默认的事务隔离级别;一般情况是 read-commite,这个解决了脏读的问题,并且效率高 。
人们为了让 数据库的效率高并且可以隔离级别高,就出来了 “乐观锁”和“悲观锁”的思想。
简单理解:乐观锁:当一个事务读取数据后,要进行操作,在操作前 为数据加一个版本信息(version),当在操作期间有其他事物对改数据进行了操作,那么版本信息就会变
化,这样当改事务执行结束后判断一下版本信息,如果没变,那么提交事务,如果改变了,那么重复执行上述操作---这就是乐观锁的思想,很多地方用到这个思想,比如安卓的
数据库sqlite就又到了version。
悲观锁:是当一个事务对 数据进行操作的时候对数据加“锁”,在此事务没有提交之前,其他事务是不能操作该数据的,只有这个事务结束提交后,其他事物才能对它进行操作。
当然,很明显,乐观锁的性能要优于悲观锁。。。
写给有需要的人。。
以上是关于综合事务的处理及隔离级别的主要内容,如果未能解决你的问题,请参考以下文章