数据库事务和锁(二)

数据|数据库

事务的工作原理图

事务确保数据的一致性和可恢复性。事务的工作原理如图1所示。

图1   事务的工作原理图

    事务开始之后,事务所有的操作都陆续写到事务日志中。写到日志中的操作,一般有两种:一种是针对数据的操作,一种是针对任务的操作。针对数据的操作,例如插入、删除和修改,这是典型的事务操作,这些操作的对象是大量的数据。有些操作是针对任务的,例如创建索引,这些任务操作在事务日志中记录一个标志,用于表示执行了这种操作。当取消这种事务时,系统自动执行这种操作的反操作,保证系统的一致性。系统自动生成一个检查点机制,这个检查点周期地发生。检查点的周期是系统根据用户定义的时间间隔和系统活动的频度由系统自动计算出来的时间间隔。检查点周期地检查事务日志,如果在事务日志中,事务全部完成,那么检查点将事务日志中的事务提交到数据库中,并且在事务日志中做一个检查点提交标记。如果在事务日志中,事务没有完成,那么检查点将事务日志中的事务不提交到数据库中,并且在事务日志中做一个检查点未提交标记。事务的恢复以及检查点保护系统的完整和可恢复,可以使用如图2所示的示例说明。

 

图2   事务恢复和检查点示例

    在这个示例图中,有五个事务:事务1、事务2、事务3、事务4和事务5。方框表示事务的开始和完成提交。水平方向表示时间。检查点表示在某一时间点发生检查点机制,系统失败表示在某一时间点由于断电、系统软件失败等原因而发生的系统失败。事务1的完成发生在检查点发生之间,所以事务1被提交到数据库中。事务2和事务4的完成发生在系统失败之前,所以这两个事务可以被系统向前滚动提交到数据库中。事务3和事务5由于系统失败而没有完成,所以这两个事务被取消。

时间: 2024-09-17 03:05:06

数据库事务和锁(二)的相关文章

数据库事务和锁(一)

数据|数据库 简述     关系型数据库有四个显著的特征,即安全性.完整性.并发性和监测性.数据库的安全性就是要保证数据库中数据的安全,防止未授权用户随意修改数据库中的数据,确保数据的安全.在大多数数据库管理系统中,主要是通过许可来保证数据库的安全性.完整性是数据库的一个重要特征,也是保证数据库中的数据切实有效.防止错误.实现商业规则的一种重要机制.在数据库中,区别所保存的数据是无用的垃圾还是有价值的信息,主要是依据数据库的完整性是否健全.在SQL Server 7.0中,数据的完整性是通过一系

数据库事务和锁(四)

数据|数据库 空间管理     锁是防止其他事务访问指定的资源控制.实现并发控制的一种主要手段.为了提高系统的性能,加快事务的处理速度,缩短事务的等待时间,应该使锁定的资源最小化.为了控制锁定的资源,应该首先了解系统的空间管理.在SQL Server系统中,最小的空间管理单位是页,一个页有8K.所有的数据.日志.索引都存放在页上.另外,使用页有一个限制,这就是表中的一行数据必须在同一个页上,不能跨页.页上面的空间管理单位是簇,一个簇是8个连续的页.表和索引的最小占用单位是簇.数据库是由一个或者多

数据库事务和锁(五)

数据|数据库 死锁问题 死锁是一个很重要的话题.在事务和锁的使用过程中,死锁是一个不可避免的现象.在两种情况下,可以发生死锁.第一种情况是,当两个事务分别锁定了两个单独的对象,这时每一个事务都要求在另外一个事务锁定的对象上获得一个锁,因此每一个事务都必须等待另外一个事务释放占有的锁,这时,就发生了死锁.这种死锁是最典型的死锁形式.在同一时间内有两个事务A和B,事务A有两个操作:锁定表part和请求访问表supplier:事务B也有两个操作:锁定表supplier和请求访问表part.结果,事务A

数据库事务和锁(三)

数据|数据库 使用事务的考虑 在使用事务时,原则上应该使事务尽可能得短并且要避免事务嵌套.事务应该尽可能得短,这是因为比较长的事务增加了事务占用数据的时间,使其它必须等待访问该事务锁定数据的事务,延长了等待访问数据的时间.在使用事务时,为了使事务尽可能得短,应该采取一些相应的方法.为了最小化时间,在使用一些Transact-SQL语句时,一定要非常小心.例如,当使用循环语句WHILE时,一定要事先确认循环的长度和占用的时间,使这种循环在完成相应的功能之前,一定要确保循环尽可能得短.在开始事务之前

spring学习笔记(20)数据库事务并发与锁详解

多事务运行并发问题 在实际应用中,往往是一台(或多台)服务器向无数客户程序提供服务,当服务器查询数据库获取数据时,如果没有采用必要的隔离机制,可能会存在数据库事务的并发问题,下面是一些常见的并发问题分类: 1. 第一类丢失更新:撤销一个事务,其他事务已提交的更新数据覆盖 2. 第二类丢失更新:一个事务覆盖另一个事务已提交的更新数据 3. 脏读:一个事务读到另一个事务未提交的数据 4. 虚读:一个事物读到另一个已提交的新插入数据 5. 不可重复读:事务读到另一个事务已提交的更新数据 下面对这几类并

MSSQL与Oracle数据库事务隔离级别与锁机制对比_oracle

一,事务的4个基本特征 Atomic(原子性): 事务中包含的操作被看做一个逻辑单元,这个逻辑单元中的操作要 么全部成功,要么全部失败. Consistency(一致性): 只有合法的数据可以被写入数据库,否则事务应该将其回滚到最初 状态. Isolation(隔离性): 事务允许多个用户对同一个数据进行并发访问,而不破坏数据的正 确性和完整性.同时,并行事务的修改必须与其他并行事务的修改 相互独立. Durability(持久性): 事务结束后,事务处理的结果必须能够得到固化. 以上属于废话

MS SQL Server数据库事务锁机制分析

server|数据|数据库 锁是网络数据库中的一个非常重要的概念,它主要用于多用户环境下保证数据库完整性和一致性.各种大型数据库所采用的锁的基本理论是一致的,但在具体实现上各有差别.目前,大多数数据库管理系统都或多或少具有自我调节.自我管理的功能,因此很多用户实际上不清楚锁的理论和所用数据库中锁的具体实现. Microsoft SQL Server(以下简称SQL Server)作为一种中小型数据库管理系统,已经得到了广泛的应用,该系统更强调由系统来管理锁.在用户有SQL请求时,系统分析请求,自

浅谈sqlserver中的事务和锁

昨日"拜读"<sqlserver2005高级程序设计>和<SQL Server 2008编程入门经典(第3版)>这两本翻译后的中文版书籍.竟然发现目录结构大致一样,其讲解的内容几乎差不多.有抄袭的嫌疑.看到"事务和锁"那一张中,发现连举的小例子.表格都一模一样.哈哈...对这类书籍,真不想做太多评论了.国内那些翻译版的书籍嘛.说真的,大部分翻译得有点生硬.而那些"原创著作"嘛.大多是相互抄袭,空谈.就微软技术体系而言,如果

SQL基础--&amp;gt;数据库事务(TRANSACTION)

--====================== --SQL基础-->数据库事务 --======================   一.数据库事务     数据库事务是指作为单个逻辑工作单元执行的一系列操作,可以认为事务就是一组不可分割的SQL语句     二.数据库事务的ACID属性     原子性(atomic)     事务必须是原子工作单元:对于其数据修改,要么全都执行,要么全都不执行.       一致性(consistent)     事务在完成时,必须使所有的数据都保持一致状态