DM事务管理

事务简介

数据库事务是指作为单个逻辑工作单元的一系列操作的集合。

事务特性

原子性

事务的原子性保证事务包含的一组更新操作是原子不可分的,也就是说这些更新操作是一个整体,对数据库而言全做或者全不做,不能部分地完成。

一致性

数据一致性是指表示客观世界同一事务状态的数据,不管出现在何时何处都是一致的、正确的、完整的。换句话说,数据一致性是任何点上保证数据以及内部数据结构的完整性,如B树索引的正确性。

隔离性

事务是隔离的,意味着每个事务的执行效果与系统中只有该事务的执行效果一样,也就是说,某个并发事务所做的修改必须与任何其他的并发事务所做的修改相互隔离。

持久性

持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来的其他操作和数据库故障不应该对其有任何影响。

提交事务

提交事务就是提交事务对数据库所做的修改,将从事务开始的所有更新保存到数据库中,任何更改的记录都被写入日志文件并最终写入到数据文件,同时提交事务还会释放由事务占用的资源,如锁。

当事务被提交之后,分米数据库进行以下操作:

1.将事务任何更改的记录写入日志文件并最终写入到数据文件;

2.释放事务上的所有,将事务标记为完成;

3.返回提交成功消息给请求者。

DM数据库中还存在有3种事务模式:自动提交模式、手动提交模式和隐式提交模式

自动提交模式

除了命令行交互式工具DISQL外,DM数据库缺省都采用自动提交模式。

可以在DISQL中设置自动提交

SET AUTOCOMMIT ON;

手动提交模式

在手动提交模式下,DM数据库用户或者应用开发人员明确定义事务的开始和结束,这些事务也被称为显式事务。在DISQL中,没有设置自动提交时,就是处于手动提交模式,此时迪斯克尔连接到服务器后第一条SQL语句或者事务结束后的第一条语句就标记着事务的开始,可以执行或者反转来提交或者回滚事务。

隐式提交

在手动提交模式下,当遇到DDL语句时,DM数据库会自动提交前面的事务,然后开始一个新的事务执行DDL语句。这种事务提交被称为隐式提交。DM数据库在遇到以下SQL语句时自动提交前面的事务:

  1. CREATE
  2. ALTER
  3. TRUNCATE
  4. DROP
  5. GRANT
  6. REVOKE
  7. 审计设置语句。

回滚事务

回滚事务是撤消该事务所做的任何更改。

自动回滚

若事务运行期间出现连接断开,分米数据库都会自动回滚该连接所产生的事务。

手动回滚

一般来说,在实际应用中,当某条SQL语句执行失败时,用户会主动使用反转语句或者编程接口提供的回滚函数来回滚整个事务,避免不合逻辑的事务污染数据库,导致数据不一致。

回滚到保存点

除了回滚整个事务之外,DM数据库的用户还可以部分回滚未提交事务,即从事务的最末端回滚到事务中任意一个被称为保存点的标记处。DM数据库用户可以使用SAVEPOINT  SAVEPOINT_NAME命令创建保存点,使用ROLLBACK TO SAVEPOINT SAVEPOINT_NAME命令来回滚到保存点SAVEPOINT_NAME

语句级回滚

如果在一个SQL语句执行过程中发生了错误,此语句对数据库产生的影响将被回滚,回滚后就如同此语句从未执行过,这种操作被称为语句级回滚。

提交与回滚实验

自动提交试验

DISQL窗口执行

SET AUTOCOMMIT ON;

create table xiaoshu(c1 int,c2 int);

insert into xiaoshu values(10,10);

update xiaoshu set c1=20 where c2=10;

在没有进行手动提交的情况下通过manager工具查看结果已经更新了,表明自动提交生效。

关掉自动提交继续试验

通过manager会话的工具查询 结果依然C1=20

更多资讯请上达梦技术社区了解: https://eco.dameng.com

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值