文档章节

数据库事务

开源中国段子手
 开源中国段子手
发布于 2016/07/01 11:00
字数 1651
阅读 23
收藏 3
点赞 0
评论 0

事务(Transaction)是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。例如,银行转账工作:从一个账号扣款并使另一个账号增款,这两个操作要么都执行,要么都不执行。所以,应该把它们看成一个事务。事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性。

   针对上面的描述可以看出,事务的提出主要是为了解决并发情况下保持数据一致性的问题。

   事务具有以下4个基本特征。

● Atomic(原子性):事务中包含的操作被看做一个逻辑单元,这个逻辑单元中的操作要么全部成功,要么全部失败。

● Consistency(一致性):只有合法的数据可以被写入数据库,否则事务应该将其回滚到最初状态。

● Isolation(隔离性):事务允许多个用户对同一个数据进行并发访问,而不破坏数据的正确性和完整性。同时,并行事务的修改必须与其他并行事务的修改相互独立。

● Durability(持久性):事务结束后,事务处理的结果必须能够得到固化。

2.事务的语句  开始事物:BEGIN TRANSACTION  提交事物:COMMIT TRANSACTION  回滚事务:ROLLBACK TRANSACTION 3.事务的4个属性 ①原子性(Atomicity):事务中的所有元素作为一个整体提交或回滚,事务的个元素是不可分的,事务是一个完整操作。 ②一致性(Consistemcy):事物完成时,数据必须是一致的,也就是说,和事物开始之前,数据存储中的数据处于一致状态。保证数据的无损。 ③隔离性(Isolation):对数据进行修改的多个事务是彼此隔离的。这表明事务必须是独立的,不应该以任何方式以来于或影响其他事务。 ④持久性(Durability):事务完成之后,它对于系统的影响是永久的,该修改即使出现系统故障也将一直保留,真实的修改了数据库 4.事务的保存点 SAVE TRANSACTION 保存点名称 --自定义保存点的名称和位置 ROLLBACK TRANSACTION 保存点名称 --回滚到自定义的保存点

其他高手的一些补充:

事务的标准定义: 指作为单个逻辑工作单元执行的一系列操作,而这些逻辑工作单元需要具有原子性, 一致性,隔离性和持久性四个属性,统称为ACID特性。

所谓事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。例如,在关系数据库中,一个事务可以是一条SQL语句、一组SQL语句或整个程序。 事务和程序是两个概念。一般地讲,一个程序中包含多个事务。 事务的开始与结束可以由用户显式控制。如果用户没有显式地定义事务,则由DBMS按缺省规定自动划分事 务。在SQL语言中,定义事务的语句有三条: BEGIN TRANSACTION COMMIT ROLLBACK

同生共死。。 显示事务被用begin transaction 与 end transaction 标识起来,其中的 update 与 delete 语句或者全部执行或者全部不执行。。 如: begin transaction T1 update student set name='Tank' where id=2006010 delete from student where id=2006011 commit 简单地说,事务是一种机制,用以维护数据库的完整性。

其实现形式就是将普通的SQL语句嵌入到Begin Tran...Commit Tran 中(或完整形式 Begin Transaction...Commit Transaction),当然,必要时还可以使用RollBack Tran 回滚事务,即撤销操作。

利用事务机制,对数据库的操作要么全部执行,要么全部不执行,保证数据库的一致性。需要使用事务的SQL语句通常是更新和删除操作等。

end transaction T1

关于savepoint

用户在事务(transaction)内可以声明(declare)被称为保存点(savepoint) 的标记。保存点将一个大事务划分为较小的片断。

用户可以使用保存点(savepoint)在事务(transaction)内的任意位置作标 记。之后用户在对事务进行回滚操作(rolling back)时,就可以选择从当前 执行位置回滚到事务内的任意一个保存点。例如用户可以在一系列复杂的更 新(update)操作之间插入保存点,如果执行过程中一个语句出现错误,用 户 可以回滚到错误之前的某个保存点,而不必重新提交所有的语句。

在开发应用程序时也同样可以使用保存点(savepoint)。如果一个过程 (procedure)内包含多个函数(function),用户可以在每个函数的开始位置 创建一个保存点。当一个函数失败时, 就很容易将数据恢复到函数执行之前 的状态,回滚(roll back)后可以修改参数重新调用函数,或执行相关的错误 处理。

当事务(transaction)被回滚(rollback)到某个保存点(savepoint)后, Oracle将释放由被回滚语句使用的锁。其他等待被锁资源的事务就可以继续 执行。需要更新(update)被锁数据行的事务也可以继续执行。

将事务(transaction)回滚(roll back)到某个保存点(savepoint)的过程如 下:

  1. Oracle 回滚指定保存点之后的语句
  2. Oracle 保留指定的保存点,但其后创建的保存点都将被清除
  3. Oracle 释放此保存点后获得的表级锁(table lock)与行级锁(row lock),但之前的数据锁依然保留。

被部分回滚的事务(transaction)依然处于活动状态,可以继续执行。

一个事务(transaction)在等待其他事务的过程中,进行回滚(roll back)到 某个保存点(savepoint)的操作不会释放行级锁(row lock)。为了避免事务 因为不能获得锁而被挂起,应在执行 UPDATE 或 DELETE 操作前使用 FOR UPDATE ... NOWAIT 语句。(以上内容讲述的是回滚保存点之前所获得的 锁。而在保存点之后获得的行级锁是会被释放的,同时保存点之后执行的 SQL 语句也会被完全回滚)。

本文转载自:blog.csdn.net/zdwzzu2006/article/details/5947062

共有 人打赏支持
开源中国段子手
粉丝 43
博文 178
码字总数 95519
作品 0
南京
程序员
数据库 事务的特性ACID

事务(Transaction)是并发控制的基本单位。 所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。例如,银行转帐工作:从一个帐号扣款并使另一个帐号...

281824088
2016/05/04
0
0
脱离 Spring 实现复杂嵌套事务,之三(REQUIRES_NEW - 独立事务)

本文是<实现 Spring 的事务控制>系列文章中一篇。本文假设读者已经阅读并理解《实现 Spring 的事务控制,之一(必要的概念)》文中所涉及的概念(当前连接、引用计数),以及数据库连接的(n...

哈库纳
2014/02/14
0
0
数据库事务总结

原子性、一致性、分离性、持久性 (1) 原子性:对数据库的修改全执行或全不执行 ? 事务的原子性指的是,事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据修改操作要么全部执行,要么...

liujiest
2016/08/29
14
0
脱离 Spring 实现复杂嵌套事务,之六(NOT_SUPPORTED - 非事务方式)

本文是<实现 Spring 的事务控制>系列文章中一篇。本文假设读者已经阅读并理解《实现 Spring 的事务控制,之一(必要的概念)》文中所涉及的概念(当前连接、引用计数),以及数据库连接的(n...

哈库纳
2014/02/17
0
8
浅谈数据库事物的四大特性(ACID)以及事物的隔离级别

事物的四大特性  如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity)   原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因...

HenrySun
2016/08/20
107
0
数据仓库与事务型数据库

我们为某个程序创建的特定的数据库一般称为事务型数据库(Transaction Database), 它和Data Warehouse(DW)还是有很大差别的. 1. 事务数据库帮助人们执行活动,而数据仓库帮助人们做计划。例如...

莫问viva
2016/12/15
19
0
数据库的ACID与隔离级别随笔

数据库中事务的四大特性(ACID) 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity)   原子性是指事务包含的所有操作要么全部成功,要么全...

一只努力的码农
2017/11/07
0
0
数据库的ACID(原子性、一致性、隔离性与持久性)

ACID特性 数据库管理系统中事务(transaction)的四个特性(分析时根据首字母缩写依次解释):原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability) 所谓事...

qq_39521554
05/08
0
0
MSSQL · 最佳实践 · SQL Server三种常见备份

摘要 本期月报是SQL Server数据库备份技术系列文章的开篇,介绍三种常见的SQL Server备份方法的工作方式、使用T-SQL语句和使用SSMS IDE创建备份集三个层面,介绍SQL Server的三种常见备份的工...

阿里云RDS-数据库内核组
2017/11/04
0
0
数据库事务的四大特性以及事务的隔离级别

本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别。   如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity)  原...

1071954237
2017/10/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

eclipse SVN 项目重新定位

SVN 重新定位 1.方法一 首先:在Eclipse中选择Windows-> Show View->others 就会出现【SVN资源库/SVN Repositories】,选中后,点击确认; 然后:选中原有的地址,选择【重新定位/Relocate】...

qimh
12分钟前
0
0
Linux 第29课 ——Linux集群架构(下)

Linux集群架构(下) 八、DR模式搭建 8.1 准备工作 试验需求三台机器: 分发器,也叫调度器(简写为dir) 192.168.112.136 ying01 rs1 192.168.112.138 ying02 rs2 192.168.112.139 ying03 vip...

feng-01
17分钟前
0
0
轻松搭建svn版本管理工具+svnmanager管理客户端

前面的文章有写过svn版本管理工具的安装是基于svn的安装包进行安装,对于svn与apache的结合还得下svn和apache的模块进行结合过程比较繁琐,今天来介绍下通过centos的yum来安装svn能够快速安装...

javazyw
26分钟前
0
0
keepalived配置高可用集群

Linux集群概述 根据功能划分为两大类:高可用和负载均衡 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务 实现高可用的开源软件有:...

TaoXu
32分钟前
0
0
mysql联表批处理操作

1 概述 mysql中的单表增删改查操作,可以说是基本中的基本. 实际工作中,常常会遇到一些基本用法难以处理的数据操作,譬如遇到主从表甚至多级关联表的情况(如一些历史问题数据的批量处理),考虑到...

社哥
34分钟前
0
0
IntelliJ IDEA 详细图解最常用的配置,适合刚刚用的新人。

刚刚使用IntelliJ IDEA 编辑器的时候,会有很多设置,会方便以后的开发,磨刀不误砍柴工。 比如:设置文件字体大小,代码自动完成提示,版本管理,本地代码历史,自动导入包,修改注释,修改...

kim_o
49分钟前
0
0
Google Java编程风格指南

目录 前言 源文件基础 源文件结构 格式 命名约定 编程实践 Javadoc 后记 前言 这份文档是Google Java编程风格规范的完整定义。当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合...

niithub
51分钟前
0
0
java.net.MalformedURLException异常说明

1.异常片段 Java代码中,在进行URL url = new URL(urllink)操作时,提示以下异常信息,该类异常主要问题出在参数urllink上面。 异常片段1 java.net.MalformedURLException at java.ne...

lqlm
51分钟前
1
0
CentOS7修改mysql5.6字符集

解决办法:CentOS7下修改MySQL数据库字符编码为UTF-8,UTF-8包含全世界所有国家所需要的字符集,是国际编码。 具体操作如下: 1.进入MySQL [root@tianqi-01 ~]# mysql -uroot -p Enter passw...

河图再现
53分钟前
0
0
DevExpress v18.1新版亮点——WPF篇(一)

用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容。本文将介绍了DevExpress WPF v18.1 的新功能,快来下载试用新版本!点击下载>> Accordion Co...

Miss_Hello_World
56分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部