`

事务对数据库的重要性(转)

阅读更多

事务对数据库的重要性

所谓事务是用户定义的一个操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。

  事务的开始与结束可以由用户显式控制。如果用户没有显式地定义事务,则由DBMS按缺省规定自动划分事务。在SQL语言中,定义事务的语句有三 条:

   BEGIN TRANSACTION

   COMMIT

   ROLLBACK

      事务通常是以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。COMMIT表示提交,即提交事务的所有操作。具体地说就是将事务中所有对数据库的 更新写回到磁盘上的物理数据库中去,事务正常结束。ROLLBACK表示回滚,即在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数 据库的所有已完成的操作全部撤消,滚回到事务开始时的状态。这里的操作指对数据库的更新操作。

 

  一. 事务的特性

  事务具有四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持续性 (Durability)。这个四个特性也简称为ACID特性。

  1.原子性

  事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。

  2.一致性

   事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据库 系统运行中发生故障,有些事务尚未完成就被迫中断,系统将事务中对数据库的所有已完成的操作全部撤消,滚回到事务开始时的一致状态。

  3.隔离性

  一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。

  4.持续性

  持续性也称永久性(Permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其 执行结果有任何影响。

事务是恢复和并发控制的基本单位。保证事务ACID特性是事务处理的重要任务。事务ACID特性可能遭到破坏的因素有:

  多个事务并行运行时,不同事务的操作交叉执行。

  事务在运行过程中被强行停止。

  在第一种情况下,数据库管理系统必须保证多个事务的交叉运行不影响这些事务的原子性。在第二种情况下,数据库管理系统必须保证被强行终止的事务 对数据库和其它事务没有任何影响。

  这些就是数据库管理系统中恢复机制和并发控制机制的责任。

 

  二.SQL 事务处理模型

  事务有三种模型:

  1.隐式事务是指每一条数据操作语句都自动地成为一个事物,每个事务都有显式的开始和结束标记。

  2.显式事务是指有显式的开始和结束标记的事物,事务的开始是隐式的,事务的结束有明确的标记。

  3.自动事务是系统自动默认的,开始和结束不用标记

  三.并发控制

  1. 数据库系统一个明显的特点是多个用户共享数据库资源,尤其是多个用户可以同时存取相同数据。

  串行控制:如果事务是顺序执行的,即一个事务完成之后,再开始另一个事务

  并行控制:如果DBMS可以同时接受多个事务,并且这些事务在时间上可以重叠执行。

  2.并发控制概述

  事务是并发控制的基本单位,保证事务ACID的特性是事务处理的重要任务,而并发操作有可能会破坏其ACID特性。

   DBMS并发控制机制的责任:

  对并发操作进行正确调度,保证事务的隔离性更一般,确保数据库的一致性。

  如果没有锁定且多个用户同时访问一个数据库,则当他们的事务同时使用相同的数据时可能会发生问题。由于并发操作带来的数据不一致性包括:丢失数 据修改、读”脏”数据(脏读)、不可重复读、产生幽灵数据。

(1)丢失数据修改

  当两个或多个事务选择同一行,然后基于最初选定的值更新该行时,会发生丢失更新问题。每个事务都不知道其它事务的存在。最后的更新将重写由其它 事务所做的更新,这将导致数据丢失。如上例。

   再例如,两个编辑人员制作了同一文档的电子复本。每个编辑人员独立地更改其复本,然后保存更改后的复本,这样就覆盖了原始文档。最后保存其更改复本的编 辑人员覆盖了第一个编辑人员所做的更改。如果在第一个编辑人员完成之后第二个编辑人员才能进行更改,则可以避免该问题。

  (2)读“脏”数据(脏读)

  读“脏”数据是指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被除撤消,而此时T1把已修改过的数据又恢 复原值,T2读到的数据与数据库的数据不一致,则T2读到的数据就为“脏”数据,即不正确的数据。

   例如:一个编辑人员正在更改电子文档。在更改过程中,另一个编辑人员复制了该文档(该复本包含到目前为止所做的全部更改)并将其分发给预期的用户。此 后,第一个编辑人员认为目前所做的更改是错误的,于是删除了所做的编辑并保存了文档。分发给用户的文档包含不再存在的编辑内容,并且这些编辑内容应认为从 未存在过。如果在第一个编辑人员确定最终更改前任何人都不能读取更改的文档,则可以避免该问题。

  ( 3)不可重复读

  指事务T1读取数据后,事务T2执行更新操作,使T1无法读取前一次结果。不可重复读包括三种情况:

  事务T1读取某一数据后,T2对其做了修改,当T1再次读该数据后,得到与前一不同的值。

  (4)产生幽灵数据

  按一定条件从数据库中读取了某些记录后,T2删除了其中部分记录,当T1再次按相同条件读取数据时,发现某些记录消失

   T1按一定条件从数据库中读取某些数据记录后,T2插入了一些记录,当T1再次按相同条件读取数据时,发现多了一些记录。

  例如:一个编辑人员两次读取同一文档,但在两次读取之间,作者重写了该文档。当编辑人员第二次读取文档时,文档已更改。原始读取不可重复。如果 只有在作者全部完成编写后编辑人员才可以读取文档,则可以避题。

  产生这些数据的不致性的主要原因是并发操作破坏了事务的隔离性。

  文章来源: http://songtao87.blog.51cto.com/380457/94720

分享到:
评论

相关推荐

    事务对数据库的重要性

    所谓事务是用户定义的一个操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。

    数据库之事务调优

    数据库之事务调优是数据库管理中的一个重要环节,它关乎到系统的性能、稳定性和并发处理能力。事务是数据库操作的基本单位,确保数据的一致性、完整性和可靠性。在高并发、大数据量的环境下,有效的事务调优能显著...

    数据库事务应用

    #### 事务处理的重要性与ACID特性 事务处理是现代数据库管理系统(DBMS)中不可或缺的一部分,尤其对于那些涉及复杂业务逻辑、需要确保数据一致性和完整性的应用来说更是如此。事务处理的核心目标是维护数据的ACID...

    数据库与事务处理

    事务处理是数据库系统中的关键概念,它是确保数据一致性、完整性和可靠性的重要机制。 首先,我们需要了解什么是数据库。数据库是一个结构化的数据集合,它可以存储各种类型的信息,如文本、数字、图像等。常见的...

    数据库 事务

    数据库事务是数据库操作的核心概念,它是数据库管理系统执行过程中的一个逻辑工作单位,包含了对数据库的一系列操作。在数据库系统中,事务确保数据的一致性和完整性,使得即使在系统出现故障或者并发操作的情况下,...

    C#数据库事务原理及实践

    数据库事务是数据库操作的核心概念,尤其在C#编程中,理解并熟练运用数据库事务对于确保数据的完整性和一致性至关重要。数据库事务确保了在多步骤操作中,如果其中一个步骤失败,整个事务可以被回滚,从而避免了数据...

    数据库事务处理ppt

    通过对事务的管理和恢复策略的实施,数据库系统能够在各种异常情况下维持其正常运行,保证数据的一致性和完整性。在实际的数据库设计中,需要根据系统的具体需求和性能要求,选择合适的并发控制和恢复策略。

    数据库中事务和锁.ppt

    在数据库管理系统中,事务和锁是两个至关重要的概念,它们主要用于保证数据的一致性和完整性,以及在多用户环境下的并发访问控制。 事务是数据库操作的基本单位,它封装了一组数据库操作,这些操作要么全部执行,...

    数据库事务管理数据库事务管理.ppt

    数据库事务管理是数据库系统中确保数据一致性的重要机制。在数据库环境中,事务是一个逻辑工作单元,它包含了一系列数据库操作,这些操作要么全部执行,要么全部不执行。事务是动态的,与静止的程序不同,它是程序...

    sql数据库事务机制详解

    事务机制是SQL数据库中确保数据一致性和完整性的重要手段。通过对事务的ACID属性的理解和应用,可以有效地管理复杂的数据更新过程,避免数据不一致的情况发生。在实际开发中,合理地使用事务不仅可以提高数据的安全...

    C#中的事务处理,数据库编程中常用

    在IT领域,尤其是在数据库编程中,事务处理是一个至关重要的概念,尤其在使用C#进行开发时。事务确保了数据的一致性和完整性,是数据库操作的基本单位。本篇将深入探讨C#中的事务处理,以及如何在实践中应用这些知识...

    事务管理与数据库安全性.ppt

    再者,持久性意味着一旦事务提交,其对数据库的更改就会永久保存,即使系统发生故障,也能够在恢复后保持这些更改。数据库管理系统通常通过日志记录和检查点机制来保证持久性。 在实际应用中,如网上购书的例子,当...

    SQL与Oracle对数据库事务处理的差异性.docx

    数据库事务是确保数据库操作一致性、可靠性和完整性的关键机制。SQL和Oracle,作为两种主流的数据库管理系统,它们在处理事务时有一些重要的差异。本文将详细探讨这些差异,并着重讲解SQL Server 2008和Oracle数据库...

    第9章 事务管理与数据库安全性.docx

    并发控制是数据库系统的重要组成部分,通过并发控制机制,可以保证多个事务并发执行后,数据库的状态与这些事务串行执行的结果等价。事务有两种状态:已提交(Committed)和中止(Aborted)。已提交事务的所有更改...

    db转mysql数据库转换

    5. **事务处理**:在大量数据迁移时,为了保证数据一致性,可能需要使用事务来确保所有更改要么全部成功,要么全部回滚。 6. **性能优化**:对于大型数据库,转换可能需要考虑性能优化,如分批导入、优化SQL语句等...

    数据库的事务处理方法

    数据库的事务处理是确保数据完整性、一致性和可靠性的核心机制,尤其在多用户并发环境下,事务扮演了至关重要的角色。事务处理确保多个SQL语句作为一个单一的工作单元执行,以达到以下两个关键特性: 1. 一致性:...

    数据库与事务处理-(大师之作)

    数据库与事务处理是IT领域中的核心概念,尤其在企业级应用和互联网服务中扮演着至关重要的角色。数据库是存储和管理结构化数据的系统,而事务处理是确保这些数据一致性和完整性的关键技术。 数据库,简单来说,是一...

    创建隐式事务管理数据库更新

    本篇文章将深入探讨如何创建隐式事务管理数据库更新,以及其在实际应用中的重要性。 首先,我们需要理解什么是事务。事务是一系列数据库操作的集合,这些操作要么全部执行,要么全部不执行。在事务内部,如果有一个...

    数据库在信息系统中的重要性.pptx

    数据库在信息系统中的重要性 数据库是现代信息系统的核心组成部分,它在收集、存储、管理和分析企业数据方面发挥着至关重要的作用。信息系统的构成包括输入、处理、输出、控制和存储等要素,而数据库作为存储环节的...

Global site tag (gtag.js) - Google Analytics