今天有点时间,试验了一下DB2的并发锁机制,结果,和MSSQL的差不多:
1、DB2的缺省行为,事务以可执行的SQL开始,以COMMIT或ROLLBACK结束;
2、DB2缺省是否提交,以工具的不同而不同,这也是DB2的特点,对外界环境依赖比较明显,比如:用户认证就是,依赖操作系统或第三方认证。
3、今天我的试验过程是这样:
(1)先启动DB2CLP,db2cmd->db2
(2)连接TEST数据库,connect to test
(3)创建一个试验表,create table test(id int,aa varchar(10))
(4)验证表结构,describe table test
(5)插入两行数据,insert into test values(1,'aaaa')
                   insert into test values(2,'bbbb')
(6)验证数据,select * from test
               h 历史命令;
               r n 运行第n条命令;
               e n编辑第n条命令;
(7)update test set aa='cccc' where id=1
(8)启动另一个DB2CLP,update test set aa='dddd' where id=1,结果没什么阻塞,大为震惊,都说ORACLE的锁独步天下,没想到DB2的锁也是独步天下啊。回头觉得不对劲,查了一下
DB2的文档,结果DB2是否自动提交依赖于接口或工具,那么DB2CLP的这个选项缺省是什么呢?
(9)DB2CLP下查各种命令选项,list command options;
(10)结果选项c 缺省为ON,打开的,意味着在DB2CLP中,缺省对SQL命令是自动提交的。
(11)把C 选项改为OFF,update command options using c off,注意在每个DB2CLP中都要改,因为这个命令只会影响到当前连接。
(12)修改完三个DB2CLP连接中的C 选项后,开始试验;
(13)第一个DB2CLP中,update test set aa='eeee' where id=1;
      第二个DB2CLP中,update test set aa='ffff' where id=1;
结果阻塞;然后在第三个DB2CLP中,update test set aa='GGGG' where id=2;
也是阻塞,说明db2不但阻塞了同行数据的修改,这是正常的,而且也阻塞了不同行但在一个
page页中的行的修改,看来它得锁模型也是和MSSQL一样,属于悲观模型。
这段时间把各种系统的锁模型进行了比较,结果发现,DB2和MSSQL比较相似的,之前,我对MSSQL的锁进行了更进一步的跟踪,发现MSSQL对未提交事务涉及的表是加表级锁的,这会阻塞其他事务对该事务涉及表的修改操作。同时,也会阻塞其他事务的读操作。
而对于ORACLE和MYSQL来说,是不会产生这种表或块级阻塞的,主要还是因为锁模型的不同,主要还是观念的原因吧,或者说是乐观和悲观的原因。谈不上谁好谁坏,大家只看到了并发度,而没看到乐观锁会给应用带来的坏处,就一味的说悲观锁不好,不可否认ORACLE等系统的乐观锁会带来系统性能上的好处,让大家用着会舒服,可应用上的处理就会麻烦些,这也是DB2,MSSQL始终不改变这点的原因,观念不同而已。

DB2默认的事务及并发锁机制的更多相关文章

  1. MySQL事务及事务隔离级别 锁机制

    什么是事务? 当多个用户访问同一份数据时,一个用户在更改数据的过程中可能有其他用户同时发起更改请求,为保证数据库记录的更新从一个一致性状态更改为另一个一致性状态,这样的操作过程就是事务.事务具有的AC ...

  2. MySQL基础篇(06):事务管理,锁机制案例详解

    本文源码:GitHub·点这里 || GitEE·点这里 一.锁概念简介 1.基础描述 锁机制核心功能是用来协调多个会话中多线程并发访问相同资源时,资源的占用问题.锁机制是一个非常大的模块,贯彻MyS ...

  3. MySQL中的事务原理和锁机制

    本文主要总结 MySQL 事务几种隔离级别的实现和其中锁的使用情况. 在开始前先简单回顾事务几种隔离级别以及带来的问题. 四种隔离级别:读未提交.读已提交.可重复读.可串行化. 带来的问题:脏读.不可 ...

  4. ServiceStack.Redis常用操作 - 事务、并发锁_转

    一.事务 使用IRedisClient执行事务示例: using (IRedisClient RClient = prcm.GetClient()) { RClient.Add("key&q ...

  5. ServiceStack.Redis常用操作 - 事务、并发锁

    一.事务 使用IRedisClient执行事务示例: using (IRedisClient RClient = prcm.GetClient()) { RClient.Add("key&q ...

  6. Redis学习笔记~Redis并发锁机制

    回到目录 redis客户端驱动有很多,如ServiceStack.Redis,StackExchange.Redis等等,下面我使用ServiceStack.Redis为例,介绍一下在redis驱动中 ...

  7. Mysql事务,并发问题,锁机制

    .什么是事务 事务是一条或多条数据库操作语句的组合,具备ACID,4个特点. 原子性:要不全部成功,要不全部撤销 隔离性:事务之间相互独立,互不干扰 一致性:数据库正确地改变状态后,数据库的一致性约束 ...

  8. Mysql事务,并发问题,锁机制-- 幻读、不可重复读(转)

    1.什么是事务 事务是一条或多条数据库操作语句的组合,具备ACID,4个特点. 原子性:要不全部成功,要不全部撤销 隔离性:事务之间相互独立,互不干扰 一致性:数据库正确地改变状态后,数据库的一致性约 ...

  9. 【转】Mysql事务,并发问题,锁机制

    转自:http://www.cnblogs.com/fidelQuan/p/4549068.html 1.什么是事务 事务是一条或多条数据库操作语句的组合,具备ACID,4个特点. 原子性:要不全部成 ...

随机推荐

  1. Python入门之面向对象module,library,package之间区别

    背景 Python中有一些基本的名词,很多人,尤其是一些初学者,可能听着就很晕. 此处,简单总结一下,module,library,package之间的大概区别. Python中的module的简介 ...

  2. P1661 扩散

    P1661 扩散 二分+最小生成树(kruskal使用并查集) 不清楚的题意导致我被坑了qwq,其实间接联通也是允许的.所以可以使用并查集+最小生成树维护 每次二分答案,然后跑一遍最小生成树判断是否联 ...

  3. 20165211 2017-2018-2 《Java程序设计》第2周学习总结

    20165211 2017-2018-2 <Java程序设计>第2周学习总结 教材学习内容总结 本周,我学习了书本上二三两章的内容,以下是我整理的主要知识 第二章 基本数据类型与数 标识符 ...

  4. 托管C++调用C#

    拿到了一个第三方demo,有dll,有.cpp..h,打开解决方案,如下图: 网上资料貌似很少,根据猜测: 这是使用托管C++来调用C#的方式. 过程: 1.先使用C#代码实现界面和功能,其实就是一个 ...

  5. C# string字节数组转换

    string转byte[]:byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str ); byte[]转string:string ...

  6. 嵌入式系统 Boot Loader 技术内幕【转】

    本文转载自:https://www.ibm.com/developerworks/cn/linux/l-btloader/ 本文详细地介绍了基于嵌入式系统中的 OS 启动加载程序 ―― Boot Lo ...

  7. 【源码编译】spark源码编译

    本文采用cdh版本spark-1.6.0-cdh5.12.0 1.源码包下载 2.进入根目录编译,编译的方式有2种 maven mvn clean package \ -DskipTests -Pha ...

  8. 第五章 消息摘要算法--MAC

    注意:本节内容主要参考自<Java加密与解密的艺术(第2版)>第6章“验证数据完整性--消息摘要算法” 5.1.mac(又称为Hmac) 原理:在md与sha系列算法的基础上加入了密钥,是 ...

  9. Educational Codeforces Round 56 (Rated for Div. 2)

    涨rating啦.. 不过话说为什么有这么多数据结构题啊,难道是中国人出的? A - Dice Rolling 傻逼题,可以用一个三加一堆二或者用一堆二,那就直接.. #include<cstd ...

  10. Luogu USACO Training 刷水记录

    开个坑记录一下刷USACO的Training的记录 可能会随时弃坑 只有代码和做法简述 可能没有做法简述 [USACO1.1]你的飞碟在这儿Your Ride Is He… 模拟,细节已忘 #incl ...