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

简介: 达梦数据库支持多客户端并发访问,为避免数据不一致,提供三种事务隔离级别:读未提交、读已提交(默认)和串行化。通过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),因此在达梦数据库中默认是不存在脏读问题的。


相关文章
|
存储 算法 测试技术
FPGA(现场可编程门阵列)技术概述及其应用实例
FPGA(现场可编程门阵列)技术概述及其应用实例
|
21天前
|
缓存 前端开发 JavaScript
Vue3 写法示例与规范指南
Vue3项目规范指南:统一目录结构、命名规则与Composition API用法,涵盖组件通信、性能优化及ESLint+Prettier工具链配置,提升代码可维护性与团队协作效率。(239字)
168 1
|
开发工具 Android开发 git
Git(2) 实用技巧:打包、补丁、环境切换、修改记录和加速
Git实用技巧包括:打包差异文件或补丁、在Git和Repo环境间切换、批量修改提交记录中的用户名和邮箱、设置Git命令别名以及解决下载速度慢和超时问题。这些技巧能提升Git使用效率和便捷性。
417 0
|
3月前
|
人工智能 API 开发者
Dify x AiOnly平台:手把手教你调用GPT-5从零构建AI工作流!
本文介绍如何通过Dify与AiOnly平台,快速构建基于GPT-5等顶尖大模型的AI应用。涵盖环境部署、模型接入、工作流编排及实战案例,助力开发者低门槛打造专属聊天机器人,轻松实现AI应用落地。(238字)
|
2月前
|
Ubuntu 网络协议 网络安全
解决Ubuntu系统的网络连接问题
以上步骤通常可以帮助解决大多数Ubuntu系统的网络连接问题。如果问题仍然存在,可能需要更深入的诊断,或考虑联系网络管理员或专业技术人员。
507 18
|
1月前
|
人工智能 安全 测试技术
让 Obsidian 会自动工作:用 n8n 打造智能知识库
通过 n8n 与 Obsidian 的 Local REST API 插件结合,实现完全自定义的自动化知识管理:自动抓取小报童文章、生成每日模板、同步邮件等,让知识库自动生长。
|
4月前
|
机器学习/深度学习 监控 算法
基于YOLOv8的智能鼠类目标检测系统 | 室内外老鼠自动识别与追踪【含完整训练源码+部署教程】
在城市环境、食品工厂、仓储物流以及实验室等场景中,老鼠(鼠类)检测需求逐渐增加。传统的红外检测或人工排查手段存在成本高、误报多、实时性差的问题。本项目结合深度学习中的YOLOv8目标检测算法,训练了专门用于识别“老鼠”目标的模型,可快速部署至视频监控系统、摄像头终端、图像分析平台等环境中,真正实现实时、高效、准确的鼠类识别,为智能化鼠害防控系统提供核心技术支撑。
基于YOLOv8的智能鼠类目标检测系统 | 室内外老鼠自动识别与追踪【含完整训练源码+部署教程】
|
6月前
|
存储 安全 芯片
永久修改机器码工具, cf永久解除机器码, 修改电脑机器码【一键版】
机器码(又称硬件指纹)是由计算机硬件组件特征值生成的唯一标识符,通常包含以下核心组件: 主板序列号(SMBIOS DMI信息)
|
12月前
|
SQL 弹性计算 安全
在云上轻松部署达梦数据库
达梦数据库(DM Database)是达梦数据库有限公司开发的关系型数据库管理系统,广泛应用于政府、金融、能源等行业。它具备高性能、高安全、兼容性强、易管理等特点,支持多种操作系统,适用于关键业务系统、政务系统及大数据处理等场景。在阿里云上,可通过一键部署快速使用达梦数据库DM8。
|
人工智能 自然语言处理 安全
通义灵码新功能体验分享
通义灵码新功能体验分享
886 1