DBMS中的隔离

作品简介:

隔离是一种数据库级特性,它控制如何以及何时进行修改,以及修改是否对其他用户、系统和其他数据库可见。隔离的目的之一是允许许多事务并发运行,而不会干扰它们的执行。

隔离是数据库事务性属性的需要。它是确保数据一致性和准确性的第三个ACID(原子性、一致性、隔离性和持久性)标准属性。

酸:

为了维护数据库一致性,在事务之前和之后都遵循“ACID属性”。

  1. 原子性:
    术语原子性与DBMS中的ACID属性有关,它指的是数据保持原子性的概念。
    这意味着对数据所做的任何操作都必须完全完成,或者根本不完成。它还建议,该行动不应停止或半途而废。在处理事务时,操作应该完全完成,而不是部分完成。
    如果任何操作未完成,事务将被取消。当另一个操作以更高的优先级进入时,可能会执行当前操作。这将终止当前操作并使其中止。
  2. 一致性:
    此ACID属性将确保列车上剩余座位的总和加上用户已预订的座位数量等于列车上的总座位数量。每个事务都以一致性测试结束,以确保不会出错。
  3. 耐用性:
    与DBMS相关的术语“持久性”是指如果操作成功完成,数据库将永远保留在磁盘中。数据库的弹性应该允许它在系统发生故障或崩溃时继续运行。
    恢复管理器负责在数据库丢失的情况下保证数据库的长期生存能力。每次进行更改时,都必须使用COMMIT命令提交值。
  4. 隔离:
    隔离是指一种分离的状态。DBMS的隔离特性确保多个事务可以同时发生,并且一个数据库的数据不会对另一个数据库产生影响。换句话说,数据库第二个状态的进程将在第一个状态的操作完成后启动。

定义隔离级别的现象:

  • 读取尚未提交的数据的事务称为执行了A“脏读”。想象一下,当事务2接收到修改后的行时,事务1修改了该行,并使其未提交。如果事务1撤销更改,事务2将读取从未打算存在的数据。
  • 不可重复读当事务两次读取同一行并每次接收不同的值时发生。假设事务T1读取数据。由于并发性,另一个事务T2修改并提交相同的数据。如果事务T1第二次读取相同的数据,它将获得不同的值。
  • 当运行两个相同的查询,但是两个查询返回的行不同时,这种现象被称为a“幻像读。”假设事务T1接收到满足某些搜索条件的记录集合。事务T2现在创建了一些符合事务T1搜索条件的新数据。如果事务T1重新执行读取这些行的语句,它将获得一组不同的行。

SQL标准根据这些现象定义了四种隔离级别:

隔离级别:

隔离分为四个阶段。更高的隔离限制了用户并发访问相同数据的能力。隔离程度越高,需要的系统资源就越多,数据库事务相互阻塞的可能性也就越大。

  • 可串行化的,最高级别,表示一个事务必须在另一个事务开始之前完成。
  • 可重复读取允许在事务开始之后访问它们,即使它们还没有完成。这个级别支持虚读或感知插入或删除的行,即使对现有行的更改是不可读的。
  • 读过承诺允许您仅在信息提交到数据库之后才能访问它。
  • 读未提交是最低级别的隔离,允许在执行修改之前访问数据。

用户更容易遇到诸如未提交依赖(通常称为脏读)之类的读取现象,即从已被另一个用户修改但尚未提交到数据库的行读取数据,并且隔离级别越低。







Youtube">
       <span class=视频加入我们的Youtube频道:现在加入

反馈


帮助别人,请分享

脸谱网"></a>
      <a rel=推特"></a>
      <a rel=pinterest"></a>
      <ins class=

学习最新教程