DM8事务与锁

事务

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

事务的开始:DM8没有提供显示定义事务开始的语句,第一个可执行的SQL语句隐含事务的开始。

事务的结束:用户可以使用提交(COMMIT)或回滚(ROLLBACK)语句显式的结束一个事务,也可以使用隐式的方式结束一个事务。

显式的结束事务

创建测试表STUDENT

CREATE TABLE STUDENT(C1 INT, C2 VARCHAR(100));
select * from student;

插入数据,并使用commit语句显式的结束事务

insert into student values(1,'张三');
commit;
select * from student;

 

使用rollback也可以显式的结束事务

插入数据

insert into student values(2,'李四');

select * from student;

 

使用rollback显式的结束事务后之前插入的数据也会被回退

rollback;

select * from student;

 隐式的事务结束:当连接的属性设置为自动提交时,每执行一条语句都会提交事务。事务所在的程序正常结束和用户退出;系统非正常终止时。

保存点(SAVEPOINT):事务在执行中可以部分回滚到某个由用户设置的保存点,在该保存点以前的操作有效,而以后的操作被回滚掉。

插入数据设置保存点

insert into student values(2,'李四');

savepoint a;

insert into student values(3,'王五');

savepoint b;

insert into student values(4,'赵六');

select * from student;

 

 

回滚到保存点a,可以发现保存点a之前插入的数据存在,而之后的数据都被回退掉了。

rollback to savepoint a;

select * from student;

 此时我们再前进到保存点b,发现报错,因为我们之前回滚到保存点a时保存点b已经被回滚掉了。

 

可以从v$trx视图中查看事务记录信息

select * from v$trx;

 

可以将事务设置为只读事务,再该事务中只能读取表数据,不能修改。

SET TRANSACTION READ ONLY;

insert into student values(3,'王五');

 

在DM8中DDL语句会自动提交

CREATE TABLE STUDENT_INFO(C1 INT, C2 VARCHAR(100));

 

锁的拥有者:事务。

锁的作用:配合多版本并发控制(MVCC),保护数据一致性,防止并发事务修改同一数据。

锁的生命周期:一般事务结束时释放锁。

在执行SELECT、INSERT、DELETE、UPDATE等DML语句时,隐式上意向锁。

阻塞和死锁是会与并发事务一起发生的两个事件,它们都与锁相关。当一个事务正在占用某个资源的锁,此时另一个事务正在请求这个资源上与第一个锁相冲突的锁类型时,就会发生阻塞。被阻塞的事务将一直挂起,直到持有锁的事务放弃锁定的资源为止。

在事务1中修改数据,且不提交

update student set c2='张三1' where c1=1;

 

在事务2中对相同数据进行修改,就发现会话在等待,因为事务1是锁的持有者,没有提示执行成功。

update student set c2='张三2' where c1=1;

当事务一commit提交之后,事务2中的更新语句就会执行成功,这就是阻塞。死锁与阻塞的不同之处在于死锁包括两个或者多个已阻塞事务,它们之间形成了等待环,每个都等待其他事务释放锁。

 

以上是笔者对DM8事务与锁的浅谈,欢迎点评。

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

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值