DB2和 Oracle的并发控制(锁)比较

正在加载中...

试读已结束

继续阅读请 1 金币购买后下载

立即下载

资料简介:
全文见http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0512niuxzh/




pdf下载
级别: 初级
牛 新庄, IBM官方高级培训讲师

2005 年 12 月 26 日
在实际的生产运行环境中,笔者在国内很多客户现场都看到开发人员和系统管理人员遇到很多有关于锁而引起的性能问题,进而被多次问起DB2和Oracle中锁的区别比较问题,笔者根据自己在工作中对DB2和Oracle数据库的使用经验积累写下这篇文章。1 引言
在关系数据库(DB2,Oracle,Sybase,Informix和SQL Server)最小的恢复和交易单位为一个事务(Transactions),事务具有ACID(原子性,一致性,隔离性和永久性)特征。关系数据库为了确保并发用户在存取同一数据库对象时的正确性(即无丢失更新、可重复读、不读"脏"数据,无"幻像"读),数据库中引入了并发(锁)机制。基本的锁类型有两种:排它锁(Exclusive locks记为X锁)和共享锁(Share locks记为S锁)。
排它锁:若事务T对数据D加X锁,则其它任何事务都不能再对D加任何类型的锁,直至T释放D上的X锁;一般要求在修改数据前要向该数据加排它锁,所以排它锁又称为写锁。
共享锁:若事务T对数据D加S锁,则其它事务只能对D加S锁,而不能加X锁,直至T释放D上的S锁;一般要求在读取数据前要向该数据加共享锁,所以共享锁又称为读锁。

[table=98%]




回页首


2 DB2 多粒度封锁机制介绍
2.1 锁的对象
DB2支持对表空间、表、行和索引加锁(大型机上的数据库还可以支持对数据页加锁)来保证数据库的并发完整性。不过在考虑用户应用程序的并发性的问题上,通常并不检查用于表空间和索引的锁。该类问题分析的焦点在于表锁和行锁。
2.2 锁的策略
DB2可以只对表进行加锁,也可以对表和表中的行进行加锁。如果只对表进行加锁,则表中所有的行都受到同等程度的影响。如果加锁的范围针对于表及下属的行,则在对表加锁后,相应的数据行上还要加锁。究竟应用程序是对表加行锁还是同时加表锁和行锁,是由应用程序执行的命令和系统的隔离级别确定。
2.2.1 DB2表锁的模式
DB2在表一级加锁可以使用以下加锁方式:

全文见http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0512niuxzh/
2009-04-22
页数17
浏览3893
下载20

已下载用户的评价7.38分

您还未下载该资料,不能发表评价;
查看我的 待评价资源
xinyongzhi123xinyongzhi123数据库管理员宇信易诚2017-03-10
有用
真的很不错 对比着记忆 会更加清晰
神马神马研发工程师tb2009-04-26
没用
不错哦,支持下
骑猪撞上墙骑猪撞上墙2009-04-24
没用
锁一直都是最长遇到问题的地方,呵呵,顶起
foryulingforyuling系统架构师skyon2009-04-22
没用
不错的文档,好东东
alualu项目经理lu2009-04-22
没用
老牛的,厉害,找个时间好好研读一番,不过,俺什么猴年马月能成为老牛第二啊:(

贡献者

X社区推广