达梦事物特性及MVCC

发布时间:2026/10/1 16:02:02

达梦事物特性及MVCC 一 支持的事物隔离达梦几种隔离级别都支持默认的隔离级别是读已提交。隔离级别\数据库达梦未提交读支持已提交读支持默认可重复读支持可串行化支持隔离级别 \ 解决脏读不可重复读幻读未提交读可能可能可能已提交读不可能可能可能可重复读不可能不可能可能可串行化不可能不可能不可能二 相关验证2.1 读未提交查看当前的隔离级别select isolation from v$trx;1表示为默认的读已提交0为读未提交3为可重复读与可串行读。查看当前T1表中的数据新开会话修改当前会话隔离级别为读未提交。SQL SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;在另一个会话中插入一行新数据不用提交回到会话1中查看数据会话1此时的会话1能够查到会话2没有提交的数据。2.2 读已提交读已提交是达梦的默认隔离级别只能查询到其他事物提交之后的数据。新开一个会话查看当前的隔离级别。select isolation from v$trx;构建T2表插入一行数据新开一个会话插入一行数据不提交。回到会话1查看是查询不到新插入的数据的。在会话2中提交后返回会话1查看会话1能看到添加的数据能够查看到了。2.3 可重复读构建新表T3并插入新的数据。新开一个会话并设置隔离为可重复读。SQL SET TRANSACTION ISOLATION LEVEL repeatable read ;操作已执行已用时间: 7.290(毫秒). 执行号:1501.SQL SELECT isolation FROM V$TRX;行号 ISOLATION---------- -----------1 3在当前会话中修改一行数据的值但是不提交。此时会话1已经正常修改。新开一个会话2并设置隔离为可重复读。在会话2中查看T3表的数据能看到还是修改之前的。此时在会话1中提交数据返回会话2再次查看。会话2看到的还是修改之前的。其他会话修改并提交的数据不会影响当前会话的读取结果。这保证了在同一个事务中多次读取同一数据时能够得到相同的结果。2.4 可串行读验证过程与结果跟可重复度类似可串行读要求消除不可重复读取和幻像读现象本身查询不会增加任何代价但是当串行化事物更新或者删除数据时其他事物会被当前事物阻塞只有当串行化事物提交或者回滚后才会释放报错“串行化事物被打断”。创建新表插入数据。SQL create table t4 (id number(10),name char(10));操作已执行已用时间: 94.853(毫秒). 执行号:2101.SQL insert into t4 values(1,AA);影响行数 1已用时间: 3.777(毫秒). 执行号:2102.SQL commit;操作已执行已用时间: 2.794(毫秒). 执行号:2103.SQL select * from t4;行号 ID NAME---------- -- ----------1 1 AA已用时间: 2.977(毫秒). 执行号:2104.新开会话1设置隔离级别为可串行读SQL SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;操作已执行已用时间: 1.634(毫秒). 执行号:2301.SQL SELECT isolation FROM V$TRX;行号 ISOLATION---------- -----------1 3已用时间: 0.197(毫秒). 执行号:2302.更新新表数据但是不提交新开一个会话2设置隔离级别为可串行读。查看T4表数据此时还是修改之前的数据在会话1中提交会话2查看还是修改之前的数据。此时在会话1中再更新一下数据不要提交。SQL update t4 set nameCC where id1;影响行数 1已用时间: 3.637(毫秒). 执行号:3006.在会话2中也修改此行发现会话卡住。在会话1中commit或者rollback之后这边会话才能结束。此时会话2出现串行化事物被打断MVCC机制达梦数据库为用户提供了两种MVCC模式通过参数TRX_VIEW_MODE控制1.基于回滚记录的MVCCTRX_VIEW_MODE0数据行包含事务TID和版本指针RPTR使得记录间单向连接形成链式版本结构。事务根据当前活动事务的视图依据链式版本结构构成可见的记录集合[]。2.基于时间戳的MVCCTRX_VIEW_MODE1全局维护一个大数组CMTARRCommit Array长度由参数TRX_CMTARR_SIZE控制单位百万。事务在启动时获取一个时间戳SNAP_CMTSEQ提交时将CMTARR中对应位置事务号的值设置为当前时间。数据版本的可见性通过比较SNAP_CMTSEQ和CMTSEQ来判断如果SNAP_CMTSEQ CMTSEQ则数据版本可见否则不可见。默认为基于时间戳的MVCC。1、进行多版本读时这个视图的使用方式是这样的在形成活动事务视图TRX_VIEW时一个事务还收集当前最下活动事务号MIN_ACTIVE_ID以及全局下一个事务号NEXT_ID。这样一个事务在读一条记录时就可以进行如下的比对记录事务ID大于等于下一个事务ID记录不可见记录事务ID等于自身事务ID记录可见记录事务ID小于当前最小已激活事务ID记录可见记录事务ID不在事务视图中记录可见记录事务ID在事务视图中记录不可见对于可见的记录则取这条记录为最终版本对于不可见的记录则通过链式版本继续向这条记录的过往版本进行上述的比对直到找到可见的版本或不取这条记录。2、DM数据库提供给用户第二种MVCC方式也是当前版本DM数据库的默认MVCC方式即基于时间戳的MVCC。这种MVCC的实现方式是全局只维护一个大数组CMTARR长度一般在千万级DM数据库令事务在启动时将这个数组中对应位置事务号上的数据CMTSEQ置为0而在事务提交时则将这个位置上的数据CMTSEQ置为当前的时间。这样的话事务或SQL启动时只需要获取一个当前的时间戳SNAP_CMTSEQ再与记录ID在CMTARR对应位置上的时间戳比对就可得出可见与否了。具体比对方式如下SNAP_CMTSEQ CMTSEQ可见SNAP_CMTSEQ CMTSEQ不可见这个大数组的长度可以由静态参数TRX_CMTARR_SIZE控制单位百万。这个参数设置 越大内存消耗越多单位时间内事务完成数量大时可将此参数值设大。DM在这种MVCC策略下对于“长事务”也有对应的处理方案。所谓“长事务”就是事务号下一个事务号-数组长度/2的事务即当前的下个事务即全局最新的事务与这个长事务间隔超过了CMTARR数组长度的一半也就是执行时间超长以至于在其执行期间由大量新事务启动的事务。
延伸阅读

更多相关文章

2026/10/1 16:02:02

C++学习日记 Day10:多态

## 今天学了什么今天学习C的多态。## 多态的分类静态多态:函数重载、运算符重载、模板,复用函数名;动态多态:派生类和虚函数实现运行时。*注:静态多态和静态函数/静态变量(static)没有关系&…

2026/10/1 16:02:02

影视站源码深度拆解:自动采集、SEO魔改与苹果CMS实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 16:02:02

ARM设备运行Windows应用:FEX-Emu+Wine+DXMT跨平台兼容实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 17:17:07

16G显卡也能畅跑Qwen-Image 2.1?量化与ComfyUI实战指南

16G 显卡能不能跑 Qwen-Image 2.1?这个问题最近被问得特别多,尤其是手里攥着 RTX 4060 Ti 16G、4070 系笔记本显卡,或者刚淘了张 16G 二手卡的朋友。先说结论:能跑,而且能跑得比较舒服,但前提是你得改变一下…

2026/10/1 17:17:07

九江广受信赖的Ai搜索推荐GEO优化服务商推荐

在AI大模型重构信息分发逻辑的当下,越来越多企业开始寻找AI搜索推荐GEO优化推荐公司,不少从业者在问求推荐Ai搜索推荐GEO优化专业公司,也有很多企业负责人在打听不错的AI搜索推荐GEO优化专业公司。当超过五亿用户习惯通过AI问答获取信息&…

2026/10/1 17:17:07

UEFI与BIOS启动模式、MBR与GPT分区表:装系统前必须搞懂的配对规则

1. 一台旧电脑把我折腾到深夜:BIOS与分区格式混乱的完整排查过程先讲一个真实经历。之前帮朋友收拾一台2014年左右的旧笔记本,i5四代、4GB内存、500G机械硬盘,卡得几乎没法用。朋友的想法很简单——换一块240G固态硬盘,重装一遍Wi…

2026/10/1 17:17:07

位汇编语言习题及答案解析:钱晓捷PPT学习教案与标志位寻址实战

简介:这份学习课件面向正在学习80x86汇编语言的高校学生与自学者,围绕钱晓捷教材的课后习题提供完整答案与讲解,帮助读者在寄存器、指令系统、标识符规则与程序开发流程等基础环节查漏补缺。资源包内含1个pptx文件,约670KB&#x…

2026/10/1 17:17:07

Ubuntu 20.04 + ROS Noetic 零踩坑部署指南

1. 为什么是 Ubuntu 20.04 ROS Noetic?这不是随便选的组合 你点开这个标题,大概率正卡在“到底该装哪个ROS版本”的十字路口。Ubuntu 20.04 和 ROS Noetic 这对组合,不是教程里随口一提的默认选项,而是经过大量工业现场、高校实…

2026/10/1 5:21:14

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/10/1 17:09:46

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/1 10:48:55

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑