使用Sybase行锁说明及测试文档_第1页
使用Sybase行锁说明及测试文档_第2页
使用Sybase行锁说明及测试文档_第3页
使用Sybase行锁说明及测试文档_第4页
使用Sybase行锁说明及测试文档_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SUHTEKGROLJPX M ■Sybasel1.9.X表级锁与行级锁的转换SIJNTEKSUNTEKGROUP一、 简介Sybase通过封锁來保证当前活动事务使用的数据的一致性,数据的一致性是指如果多个用户重复执行一组事务,每次的结果应该是相同的,即并发的查询和修改互不干扰。Sybase11.9.X支持三种封锁级别:行级锁、页面锁和表级锁。行级锁是对操作的数据行封锁,页面锁是对数据或索引页的所有数据行封锁,表级锁是对整个表封锁。Sybase11.9.X系统默认的封锁类型是表级锁,一般來说,将封锁类型设为行级锁可以降低封锁冲突。以下将介绍如何将Sybasel1.9.X系统的封锁类型设为行级锁。二、操作方法•修改Sybase11.9.X系统封锁类型:可通过如下指令:sp_configurelockscheme*J/datarows*go(其中datarows表示行•级锁、datapages表示页级锁、allpages表示表级锁)将数据库默认的封锁级别由表级锁改为行级锁。修改之后通过指令:sp_configurelockscheme*go查询已修改数据库系统的封锁类型。但是这种设置方法只能对在设置之后创建的表生效,也就是说己经创建的表仍然保留数据库原來的设置。要改变已创建的表的锁级别,请按下步操作。■修改己创建表的封锁类型:仁 进入需操作的数据库,运行下面语句:select'altertable*,name,'lockdatarows',char(13),'go'fromsysobjectswheretype='U'go生成批量将表改为行级锁的脚本,如下例:altertabletest lockdatarowsgolockdatarowsaltertabletestllockdatarowsgo2、 运行生成的脚本,每次操作5条记录,对于如下报错:ServerMessage:Number4963,Severity16Line1:Table'test1isalreadylockedinthedesiredlockingscheme.可不预理会,报错是说明表已经定义为行锁。对于操作等待,一般是由于有其它会话正在对该表进行加锁操作,这种情况或者等待加锁的会话运行结束或者暂时退出,请数据库较闲时再进行操作。测试报告由于查询操作将对执行查询的表加共亨锁,而插表、更新表操作将对执行操作的表加排他锁。所以测试将选择查询、插表、更新表三种SQL操作來测试修改Sybasel1.9.X表级锁与行级锁的转换行级锁时数据库的并发性。首先创建测试表:createtabletest(no int notnull,name varchar(10) notnull,constraintpkyjestprimarykey(no))go测试编号:1.1测试项目:修改为行级锁前数据库状况系统功能:修改为行级锁前插表、查询操作系统响应:1.系统响应:1.(1rowaffected)2.Noname1Mike用户操作:1、 执行以下SQL:insertintotestvalues(1,‘Mike')go2、 执行以下SQL:select*fromtestgo测试结果及分析:ok测试编号:1.2测试项目:正在表操作时,同时修改为行级锁数据库状况系统功能:正在查询时,同时进行行级锁修改测试程序:用户操作:执行以下SQL:begintranselect*fromtestgo打开另一session,执行以下SQL:altertabletestlockdatarowsgo在另一个session中执行SQL:committrango系统响应:1.no nameMikeJack成功执行。将事务提交。测试结果及分析:ok测试编号:1.3测试项目:正在表操作时,同时修改为行级锁数据库状况系统功能:正在插表时,同时进行行级锁修改

测试程序:用户操作:系统响应:1.执行以下SQL:1.begintran1rowaffected)insertintotestvalues(2,JackJgo2.打开另一session,执行以下SQL:2.处于等待状态。altertabletestlockdatarowsNo namego3.在另一个session中执行SQL:1Mikecommittrango3.第二session执行成功。测试结果及分析:ok测试编号:1.4测试项目:修改为行级锁后数据库状况系统功能:修改为行级锁前插表、查询操作

测试程序:用户操作:执行以下SQL:insertintotestvalues(3,,Rose,)go2、 执行以下SQL:select*fromtestgo系统响应:1.1rowaffected)2.no nameMikeJackRose测试结果及分析:ok测试编号:1.5测试项目:正在表操作时,同时修改数据库系统参数的数据库状况系统功能:正在插表时,同时进行数据库锁类弄参数据的修改-

测试程序:用户操作:执行以下SQL:begintraninsertintotest(4/Jane')go打开另一session,执行以下SQL:sp_configure lockscheme\1,datarowsgo在另一个session中执行SQL:committrango系统响应:1.1rowaffected)成功执行。将事务提交。测试结果及分析:ok测试编号:1.6测试项目:对表进行行操作时,同时对同一表的另一行操作的数据库状况系统功能:对表的一行执行update,同时对同一表的另一行执行update,将不互相影响

测试程序:用户操作:执行以下SQL:begintrangoupdatetestsetname=,jessica,wherego打开另一session,执行以下SQL:begintrangoupdatetestsetname=,john,whereno=2go在两个session中执行SQ

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论