事务学习-概念(一)

一、什么是事务?

事务(Transaction)就是一组SQL语句,这组SQL语句是一个逻辑工作单元。可以认为事务就是一组不可分割的SQL语句,其结果就是一个整体,永久性的修改数据库的内容,或者作为一个整体取消对数据库的修改。

下面一个例子很好的说明了,什么是事务

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

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

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

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

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

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

2.事务的语句
 开始事物:BEGIN
TRANSACTION
 提交事物:COMMIT TRANSACTION
 回滚事务:ROLLBACK
TRANSACTION

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

4.事务的保存点
     SAVE TRANSACTION 保存点名称
--自定义保存点的名称和位置
    
ROLLBACK TRANSACTION 保存点名称 --回滚到自定义的保存点

二、事务例子学习

同生共死。。
显示事务被用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语句通常是更新和删除操作等。

关于savepoint 保存点

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

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

可以回滚到错误之前的某个保存点,而不必重新提交所有的语句。

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

来自为知笔记(Wiz)

时间: 2024-10-11 22:18:09

事务学习-概念(一)的相关文章

java事务学习笔记总结

通过这段时间的对java事务机制的学习,用这篇文章做个阶段性的总结,后续如果有时间,还可以深入学习和研究下分布式事务的补偿机制(目前中国只有阿里巴巴在这方面有成熟的研究成果),后续的学习成果,我也会补充到该系列文章中 一.什么是JAVA事务 通常的观念认为,事务仅与数据库相关. 事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(consistency).隔离性 (isolation)和持久性(durability)的缩写.事务的原子性表示事务执行过程

java事务学习笔记(九)--深度剖析JTA原理与实现

通过本系列对java事务的学习,对事务的概念有了初步的了解,但是互联网的发展一日千里,数据量更是爆炸性增长,而普 通数据库也越来越成为应用系统的性能瓶颈,分布式数据库应运而生,相应的,java分布式事务JTA(Java Transaction API)也在这 种背景下产生了.有幸拜读了IBM developersWorks深度好文,加上自己的一些理解分享给各位看官,仅供大家互相交流学习. 原文地址:http://www.ibm.com/developerworks/cn/java/j-lo-jt

4.事务提交过程,事务基本概念,Oracle中的事务生命周期,保存点savepoint,数据库的隔离级别

 事务提交过程 事务 基本概念 概念:一个或者多个DML语言组成 特点:要么都成功,要么都失败 事务的隔离性:多个客户端同时操作数据库的时候,要隔离它们的操作, 否则出现:脏读  不可重复读  幻读 Oracle默认情况下,事务是打开的 commit案例: SQL> create table t1(tid int,tname varchar2(20)); 表已创建. SQL> select * from tab; TNAME                          TABTYPE

9-02事务的概念及特性

事务的概念: 事务的作为单个逻辑工作单元一系列操作及多个操作作为一个整体向系统提交, 要么都执行,要么都不执行,事务是一个不可分割的单个逻辑单元. 转账过程就是一个事务. 它需要两条UPDATE语句来完成,这两条语句是一个整体. 如果其中一条出现错误,那么整个转账过程也不在执行. 每个账户的余额也会回复到原来的数据. 从而确保转账前与转账后的余额不变. 事务必须具备以下4个属性,简称ACID属性: 原子性: 事务是一个完整的操作,它的各一项操作是不可分的, 要么都执行,要么都不执行. 一致性:

蜗牛—ORACLE基础之事务学习(五)

---------------事务---当执行到commit时 事务才算是完成,不然 会执行rollback操作. declare v_money acount.money%type:=1223; ex exception; begin update acount set money=money-v_money where id=1; raise ex; update acount set money=money+v_money where id=2; commit; exception whe

集成学习 概念介绍

集成学习(Esemble learning) 在机器学习领域,如何根据观察数据学习一个精确的估计数据是一个主要问题. 通常,我们通过训练数据应用某个算法得出一个训练模型,然后使用评估数据来评估这个模型的预测正确率,最后如果我们可以接受这个正确率就使用该模型进行预测数据.通常我们将训练数据进行交叉验证,比如说10则交叉验证,我们将训练数据平均分为10份,循环用其中的9份数据来训练模型,用另一份数据验证准确率,最后将结果准确率平均就是最后的分类准确率.当然还有其他方法. 但是寻找一个可以有很高准确率

数据库事务的概念及其实现原理

目录 前言 1. 认识事务 1.1 为什么需要数据库事务 1.2 什么是数据库事务 1.3 事务如何解决问题 1.4 事务的ACID特性以及实现原理概述 2.并发异常与并发控制技术 2.1 常见的并发异常 2.2 事务的隔离级别 2.3 事务隔离性的实现--常见的并发控制技术 3. 故障与故障恢复技术 3.1 为什么需要故障恢复技术 3.2 事务的执行过程以及可能产生的问题 3.3 日志的种类和格式 3.4 日志恢复的核心思想 3.5 事务故障中止/正常回滚的恢复流程 3.6 系统崩溃时的恢复过

k8s学习 - 概念 - Pod

k8s学习 - 概念 - Pod 这篇继续看概念,主要是 Pod 这个概念,这个概念非常重要,是 k8s 集群的最小单位. 怎么才算是理解好 pod 了呢,基本上把 pod 的所有 describe 和配置文件的配置项都能看懂就算是对 pod 比较了解了. Pod 我们通过调用一个kubectl describe pod xxx 可以查看某个 pod 的具体信息. describe 的信息我们用注释的形式来解读. Name: task-pv-pod Namespace: default // 没

k8s学习 - 概念 - ReplicaSet

k8s学习 - 概念 - ReplicaSet 首先,ReplicaSet 和 ReplicationController 基本上一样,除了上篇说到的selector有不同之外,没有啥区别.(官网也是这么说的).但是为什么官方建议的不是ReplicaController + Deployment的集合呢?咋们也不敢说,咋们也不敢问.反正我就知道,用 ReplicationController 的值得被鄙视,用ReplicationSet +deployment 的现在是正统. ReplicaSe