达梦数据库-事务

一、定义以及作用

定:是数据库处理的单个逻辑单元 ,是一系列的看作一个整体的操作的集合

作:多个用户访问同一块数据时,防止数据异常(脏数据,修改丢失,幻读,不可重复读)

二、事务特性及分类

1、特性

  • 原子性:保证事务包含的一组操作是原子不可分的,即为这些操作是一个整体,对于数据库,要么全做要么全不做。
  • 一致性:同一事务状态的数据,不管何时何处,都是一致完整且正确的(数据保证统一)
  • 隔离性:数据库中一个事务的执行不能被其它事务干扰,即隔离;每个事务的执行效果与系统只有该事务的执行效果一样(有点像分时系统的独立性吼,简单的就是1对1)
  • 持久性:事务一旦提交,对于数据的改变是永久性的。

原子性、一致性、隔离性、持久性又被称为ACID.

2、分类

引入:启动与结束事务,对于DM数据库,第一次执行sql语句,隐性地启动一个事务,提交或者是回滚就会显式地结束事务。

如何查看事务?

SELECT * from sys.v$TRX;

关注ID与SEES_ID即可,有值代表事务提交。

查看事务对应的执行代码以及SEES_ID

分类:

事务提交commit

定:提交对数据所做的操作,将这些操作的结果保存到数据库中

事务被提交之前所做操作:

  • 生成回滚记录:记录数据原始值。---万一修改后悔了呢?
  • 在系统的重做日志缓冲区生成重做日志记录,它包含了对数据页和回滚页的修改。可能写入磁盘----类似底片,有个对数据的保护作用,可恢复数据。

注意:写操作(写入缓冲区)既可能发生在事务提交之前,也可能在之后

事务提交之后所做操作:

  • 将更改记录写入日志文件并写入数据文件(磁盘)
  • 释放事务的锁,将事务标记为完成
  • 返回提交成功消息给请求者
类别:
自动提交模式

定:默认模式,除了命令行模式,所有sql语句执行后提交,或者是执行失败回滚;这个模式看不到事务ID,即为执行后立马结束(事务与sql语句,1:1)

查看事务

show autocommit;

on:自动提交模式,off:手动模式

打开

set autocommit on;

关闭

set autocommit off;

手动提交模式

定:明确定义事务的开始与结束,也叫做显式事务。事务的开始在此模式下DISQL连接到服务器的第一条SQL语句 或者事务结束后的第一条语句。

隐式提交模式

定:在手动提交模式下,遇到DDL语句,就会自动提交前面的事务,开始一个新的事务执行DDL语句

注:DDL包含这些CREATE,ALTER,TRUNCATE,DROP,GRANT,REVOKE,审计设置语句。

事务回滚(rollback)

定:撤销事务所做的任何更改

分类
自动回滚
  • **事务运行期间连接断开,**异常(关闭窗口),撤销所有修改,释放事务使用资源
  • 系统重新启动后,数据库执行(恢复操作),从日志重做日志读取未写入磁盘的已经提交的事务(重做操作)或者断电时还没来得及提交的事务( 回滚操作)

注:所有的操作看,REDO 日志与UNDO 日志,前者找到要回滚的事务,后者完成具体的回滚操作

物理做逻辑未提交(回滚)

  • 物理做了:事务执行过程中,修改的数据已经写入内存缓存,甚至因 DM8 的缓存策略,部分数据临时刷到了磁盘数据文件
  • 逻辑没生效:这个事务从未执行 COMMIT(比如断电、连接断开、手动终止),数据库不承认这个修改的合法性

物理没做逻辑生效(重做)

  • 逻辑生效(COMMIT)时,DM8 会先把 "修改内容" 写入 REDO 日志并强制刷盘(保证日志不丢)
  • 物理没做(数据在内存缓存)时,重启后 DM8 读 REDO 日志,把日志里的 "修改内容" 重新写入数据文件**(物理补做)**
手动回滚

定:某条sql语句执行失败,可用rollback语句或者是接口函数回滚整个事务。

回滚到保存点

定:部分回滚未提交事务,可以设置多个保存点标记

查看保存点

SELECT * FROM sys.v$trx_savepoint;

声明保存点

savepoint 名称;

回到保存点

ROLLBACK TO a;

回到一个保存点,这个保存点还在,但保存点后面的事务回滚

语句回滚

定:一条sql语句执行过程中发生错误,这条语句就是从未执行,不影响语句之前所做数据修改。

相关推荐
这个DBA有点耶3 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G3 天前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
自由能燃气设备3 天前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远3 天前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
2601_962218613 天前
万象生鲜系统称重自动多退少补算法解决生鲜非标品痛点
大数据·数据库·人工智能·python·算法
张洛闻Eren3 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
于平安3 天前
MySQL-触发器
数据库·mysql
白远山3 天前
上海24小时自助健身房解决方案实战指南与经验分享
java·数据库·架构·需求分析
Omics Pro3 天前
斯坦福Nature+Science|广义虚拟细胞基础大模型
数据库·人工智能·算法·机器学习·自然语言处理
2603_965148113 天前
AI+API选品:下一代智能商务助手雏形已现
java·大数据·数据库·人工智能·数据挖掘