DM数据库事务隔离级

本文介绍了DM数据库的事务隔离级别,包括读未提交、读提交和串行化。读未提交可能导致脏读、不可重复读和幻像读;读提交能避免脏读,但可能有不可重复读和幻像读;串行化则消除了不可重复读和幻像读,但可能因并发问题导致事务中断。此外,DM还支持只读事务。
摘要由CSDN通过智能技术生成

DM数据库事务隔离级别

在关系型数据库中,事务的隔离性分为四个隔离级别:读未提交、读提交、可重复读、串行化;DM 数据库支持三种事务隔离级别:读未提交、读提交和串行化。其中,读提交是 DM 数据库默认使用的事务隔离级别,可重复读升级为更严格的串行化隔离级。

一、读数据的现象

由于数据库事务隔离级别的不同,在读取数据的时候会出现脏读、不可重复度、幻像读等不同的读数据现象。
1.1 脏读(DirtyRead)
所谓脏读就是对脏数据的读取,而脏数据所指的就是未提交的已修改数据。也就是说,一个事务正在对一条记录做修改,在这个事务完成并提交之前,这条数据是处于待定状态的(可能提交也可能回滚),这时,第二个事务来读取这条没有提交的数据,并据此做进一步的处理,就会产生未提交的数据依赖关系,这种现象被称为脏读。如果一个事务在提交操作结果之前,另一个事务可以看到该结果,就会发生脏读。
脏读在数据库事务隔离级别为读未提交的情况下会出现。在实际生产环境中,脏读是一定要避免的。

1.2 不可重复读(Non-RepeatableRead)
一个事务先后读取同一条记录,但两次读取的数据不同,我们称之为不可重复读。如果一个事务在读取了一条记录后,另一个事务修改了这条记录并且提交了事务,再次读取记录时如果获取到的是修改后的数据,这就发生了不可重复读情况。
不可重复读在数据库事务隔离级别为读未提交和读提交的情况下出现。

1.3 幻像读(PhantomRead)
一个事务按相同的查询条件重新读取以前检索过的数据,却发现其他事务插入了满足其查询条件的新数据,这种现象就称为幻像读。
幻像读在数据库事务隔离级别为读未提交、读提交和可重复读的情况下会出现,而在DM中可重复读的数据库事务隔离级别升级为了更严格的串行化隔离级别,因此在DM中幻像读只会在数据库隔离级别为读未提交和读提交的情况下出现。

二、事务隔离级别

DM 数据库支持三种事务隔离级别:读未提交、读提交和串行化。
2.1读未提交隔离级
读未提交隔离级别是最不严格的隔离级别。实际上,在使用这个隔离级别时,有可能发生脏读、不可重复读和幻像读。一般来说,读未提交隔离级别通常只用于访问只读表和只读视图,以消除可见性判断带来的系统开销,提升查询性能。
用户可以在事务开始时使用以下语句,设定事务为读未提交隔离级:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

例:
在事务执行前设置事务的隔离级别为读未提交:新建一个查询会话窗口1,建表test_iso2并插入数据:

set transaction isolation level read uncommitted;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_41514083

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值