【赵渝强老师】达梦数据库的事务隔离级别

简介: 达梦数据库支持多客户端并发访问,为避免数据不一致,提供三种事务隔离级别:读未提交、读已提交(默认)和串行化。通过SQL可查看隔离级别,其默认的读已提交级别可有效防止脏读问题。

b407.png

达梦数据库允许多个客户端同时访问。当这些客户端并发访问数据库中同一部分的数据时,如果没有采取必要的隔离措施就容易造成并发一致性问题,从而破坏数据的完整性。考虑下图中的场景:

image.png


在时间点1上,var的数值是100。客户端A在时间点2的时候更新了它的值为200,但没有提交事务。在时间点3的时候,客户端B读取到了客户端A还未提交的数值200。但在时间点4,客户端A执行了回滚操作。那么,对于客户端B来说,如果在时间点5再次读取数据,得到就应该是100。那么客户端B就有了数据不一致的问题。而造成问题的根本原因在,客户端B读取到了客户端A还没有提交的事务中的数据。


为了解决数据在并发访问时,数据的一致性问题。在SQL标准中定义了四种事务的隔离级别,它们分别是:读未提交(READ-UNCOMMITTED)、读已提交(READ-COMMITTED)、可重复读(REPEATABLE-READ)和可序列化读(SERIALIZABLE)。


达梦数据库支持三种事务隔离级别:读未提交(READ-UNCOMMITTED)、读提交(READ-COMMITTED)和串行化(SERIALIZABLE)。其中,读提交是DM 数据库默认使用的事务隔离级别,可重复读升级为更严格的串行化隔离级。


视频讲解如下:


在达梦数据库中要查看默认的事务隔离级别,可以通过下面的方式来获取。


(1)使用管理员登录数据库。

SQL> conn sysdba/Welcome_1


(2)执行下面的语句获取事务的隔离级别。

SQL> select para_name,para_value,
  case para_value
    when 1 then 'Read Commited'
    when 3 then 'Serializable'
    else 'None'
  end as "隔离级别"
    from v$dm_ini where para_name='ISOLATION_LEVEL';
    
# 输出的信息如下:
行号     PARA_NAME       PARA_VALUE   隔离级别 
------ --------------- ---------- -------------
1       ISOLATION_LEVEL   1           Read Commited

# 从输出的信息可以看出,DM数据库默认的事务隔离级别是读已提交(READ-COMMITTED)。


数据库在不同的事务隔离级别下会有不同的行为,从而在并发访问数据的时候会带来不同的问题。下表列举了在不同的SQL标准事务隔离级别下,数据库可能存在的不同问题。

image.png


由于达梦数据库默认的事务隔离级别是读已提交(READ-COMMITTED),因此在达梦数据库中默认是不存在脏读问题的。


相关文章
|
SQL DataWorks 关系型数据库
dataworks常见问题之如何通过公网连接doris
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
230 0
|
存储 算法 测试技术
FPGA(现场可编程门阵列)技术概述及其应用实例
FPGA(现场可编程门阵列)技术概述及其应用实例
|
开发工具 Android开发 git
Git(2) 实用技巧:打包、补丁、环境切换、修改记录和加速
Git实用技巧包括:打包差异文件或补丁、在Git和Repo环境间切换、批量修改提交记录中的用户名和邮箱、设置Git命令别名以及解决下载速度慢和超时问题。这些技巧能提升Git使用效率和便捷性。
419 0
|
24天前
|
缓存 前端开发 JavaScript
Vue3 写法示例与规范指南
Vue3项目规范指南:统一目录结构、命名规则与Composition API用法,涵盖组件通信、性能优化及ESLint+Prettier工具链配置,提升代码可维护性与团队协作效率。(239字)
176 1
|
28天前
|
人工智能 Rust 安全
RHEL 10.1 发布,新增功能介绍
Red Hat Enterprise Linux 10.1 (x86_64, aarch64) - 红帽企业 Linux (RHEL)
245 3
RHEL 10.1 发布,新增功能介绍
|
SQL 数据库
达梦数据库阻塞死锁及解锁
【10月更文挑战第6天】本文介绍了在达梦数据库中模拟和解决死锁的方法。首先通过创建表并插入数据但不提交事务,模拟了阻塞情况;接着利用V$TRXWAIT和V$SESSIONS视图查询阻塞信息,并通过SP_CLOSE_SESSION函数解决阻塞。最后讨论了死锁的成因及避免策略,强调了正确管理事务的重要性。
|
4月前
|
机器学习/深度学习 监控 算法
基于YOLOv8的智能鼠类目标检测系统 | 室内外老鼠自动识别与追踪【含完整训练源码+部署教程】
在城市环境、食品工厂、仓储物流以及实验室等场景中,老鼠(鼠类)检测需求逐渐增加。传统的红外检测或人工排查手段存在成本高、误报多、实时性差的问题。本项目结合深度学习中的YOLOv8目标检测算法,训练了专门用于识别“老鼠”目标的模型,可快速部署至视频监控系统、摄像头终端、图像分析平台等环境中,真正实现实时、高效、准确的鼠类识别,为智能化鼠害防控系统提供核心技术支撑。
基于YOLOv8的智能鼠类目标检测系统 | 室内外老鼠自动识别与追踪【含完整训练源码+部署教程】
|
6月前
|
存储 安全 芯片
永久修改机器码工具, cf永久解除机器码, 修改电脑机器码【一键版】
机器码(又称硬件指纹)是由计算机硬件组件特征值生成的唯一标识符,通常包含以下核心组件: 主板序列号(SMBIOS DMI信息)
|
SQL 弹性计算 安全
在云上轻松部署达梦数据库
达梦数据库(DM Database)是达梦数据库有限公司开发的关系型数据库管理系统,广泛应用于政府、金融、能源等行业。它具备高性能、高安全、兼容性强、易管理等特点,支持多种操作系统,适用于关键业务系统、政务系统及大数据处理等场景。在阿里云上,可通过一键部署快速使用达梦数据库DM8。
|
人工智能 自然语言处理 安全
通义灵码新功能体验分享
通义灵码新功能体验分享
895 1