zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

数据库事务的隔离级别

数据库事务 级别 隔离
2023-09-11 14:19:44 时间
隔离级别都与问题相对应,数据库操作常见的问题: 1 脏读:   一个事务可以读取另一个事务未提交的数据 2 不可重复读: 一个事务连续两次执行某个读操作,返回的结果不一致,被修改了 3 虚读 :一个事务连续两次执行某个读操作,返回的结果不一致,返回的纪录数目有改变 不可重复读 与 虚读 的区别: 不可重复读,强调的是,第二次返回的结果中,某个条目被修改过,比如某些字段被修改 虚读,强调的是,第二次返回结果中,属于第一次返回结果的条目没有任何变化,但是返回条目的数目会变化 数据库事务隔离级别 1 read uncommitted  脏读的那个级别 2 read committed  解决脏读问题,提交了才能被其它事务读到  (大多数数据库的默认事务等级) 3 repeatable read 可重复读,如何实现:规定一个事务不能修改被其它事务读但是未提交的事务 4 serializable 最高的事务隔离级别  如何实现:所有的事务都串行执行 repeatable read是如何实现? 规定一个事务不能修改其它事务读但是未提交的事务 这样就保证了一个事务中第二次读到的数据都是没有被修改过得 为什么repeatable read隔离级别,虚读问题没有被解决掉? 只对修改作了限制,如果两次读之间进行了插入或者删除操作,满足没有修改其它事务读但未提交的事务,结果,两次读的结果还是会不一致,所以虚读问题没有被解决 虚读问题解决,serializable隔离级别? 串行化执行,很容易理解,我在一个事务中,执行两次读操作,在此期间,没有其它事务在执行,必须等我执行完以后才会被执行,因为是串行,大家排队,所以结果不可能不一致。 最新内容请见作者的GitHub页:http://qaseven.github.io/
事务的隔离级别 事务是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作,是一组不可再分割的操作集合。这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行。
数据库领域中的事务指的是一系列对数据库的操作集合,是数据库管理系统(DBMS)定义的一个执行单位。事务的作用体现在两个方面: 在并发访问数据库的场景中,利用事务来隔离多个应用程序的操作,避免多个操作彼此之间相互影响 提供一种从失败中恢复到正常状态的方法,同时提供数据库即使在异常状态仍能保持一致性的方法 当然以上两条是事务理论上应该持有的特性,但是实际应用过程中,由于业务需求的不同或配置方式不同,事务对以上两个方面的满足程度也不尽相同。