PB环境下Sybase数据库访问的并发控制
2012-02-14邓永志
邓永志
(南阳市中心血站,河南 南阳473000)
众所周知,数据库系统的核心是信息管理,基本工作包括联机的分析处理、联机的事务处理、突发事件的应对等,是计算机技术在具体的社会活动中得到运用的一个重要表现。
数据库技术通过与相关技术的结合,已经从单一的商用数据库技术发展成为商用、分布式、并行式等类型的数据库技术。数据压缩、海量数据的存储、宽带网络、高速网络计算机技术、多媒体技术、网络技术等方面的发展对数据库技术的发展有一定的促进作用。多媒体数据处理技术是一门涉及面非常广泛的综合性信息处理技术,与语音图形图像的识别、语音控制等都有着非常密切的关系。到目前为止,还没有公认的统一数据模型与标准规范。
在Sybase数据库里,人们一般使用服务模式的多用户数据库,这种数据库能过接收并且处理很多用户的特别要求。所以,Sybase数据库所带来的最大效用就是能够同时处理、解决很多的问题。
1 Sybase的多线程处理程序
Sybase的服务程序是应用了多线程的一种系统结构,多线程是在一起共同运行的,运行时会有很多的用户来请求,从数据库里调用数据需要很多资料来发送,并存储发出去的同样的数据。因为会有多个用户都是一样的数据,会导致数据的不一致,有时数据共享会出现丢失数据的情况,甚至可能会读出错误的数据,这样就会给用户造成很大的不便,不能够重新找寻数据。所以,Sybase数据库里的服务程序应用了封锁的程序,把这些要处理的问题当作是维修方面的很重要一个项目,来阻止其他用户访问到了那些不一致的数据。服务程序因此而推出了3种基本的方法:共享的锁定程序、更新式的锁定程序、排斥性的程序。这些程序负责3种基本的隔离程序,提出了两种程度的锁,有页面级别的锁定程序和表示级别的锁定程序,大的系统会根据情况的不同而设计出不同类型级别的锁定程序。至于用户这一方面来说,可以通过并发的程度和准确的程度需要选择不一样的锁定程序。经过封锁的程序,进度程序可以在得到对数据进行封锁以后,阻止其他的进程影响数据的正常使用,使数据得到了一致性的处理。
数据库并发的能力指的是在一个相同的时间里数据能够同时进行访问。一般情况下,Sybase会有并发控制能力,但事实上,需要全面看待这种并发控制的功能,有用户想要进行同样操作时,可以从PB里的进行设置到并发控制。并发控制要在用户数据进行改正的时候,不会被盖住或者改变。
2 数据库操作中出现的问题和解决方案
封锁程序的运行要在某个特定的时间进行固定的操作,需要把很多并发运行程序的数据进行分开,使它们不会互相干扰。在使用Sybase数据库后,进入开发的MIS系统里,用户会经常性地把数据窗口从数据库的记录中进行调用,调用次数增多后数据被修改,要对这些改正后的数据进行操作,数据窗口会短暂地将缓存的数据储存到缓冲区域里,还要对其进行一系列地操作也就是进行数据的提交后,会把真正需要送走的数据交到数据库去。在这个程序操作时,为了用户能保证数据的一致性,有必要把这些操作过的记录进行数量上的改变。在序号上进行加减都可以,操作时一般会把改过的数据又重新放到缓冲的区域中去。
很多应用程序都会根据数据库之外的缓冲区域里的数据来判断,这会造成缓冲区域里的数据出现混淆,出现多个相同的主键值,使不同记录的主键值会出现冲突,序号的数值也会因此发生错误,破坏了数据很重要的一致性。两个用户同时在Sybase库中调出某个表格的数据来做局部地修改并且录进去,读取数据时出现的序号数最大为5,假如两个人都想要在表格的最后做一个记录时,应用程序就会发挥出它应有的效用,重新地把序号设置成为6。这一步的操作就会使系统和Sybase无法对其进行甄别,出现了混乱,其中的一个用户上传的数据就会存入到Sybase里面去,但其实那个用户所修改的序号是被占用了的,就无法将数据存入库里面,数据库的一致性被破坏了。第二个用户的操作就被抵制了。
2.1 把序号定义成Identify序列
Sybase的服务程序有Identify来供使用,Identify是在设置序列号时设置的属性,在序列号被定义成为Identify后,再向表里面加进去一个行号,或者系统会给出序列号的新数值,还要保证这个值有连贯性,在这个操作后,系统会自动地给出有顺序的序列号,从而避免了序号的重复出现。
由于使用数据时会有不一样的情况出现,还要访问并且修正控制并发方案,这就会用到数据锁定程序。在表的主键以外的地方,还要加上操作数据并加以修改,使这些数据能够被系统接受并录入到数据库。
2.2 创立最大的序列表
序号的类型和属性所在的表的主键是应该重现的一个方面,在用户程序以及数据库里会进行修改的都应该采取创立最大序列号表的对策。
序号的属性要和多种属性一起整合后组建成主键,所以,不同的序号会采取不一样的数值。但如果把这些属性的数值都调到一个值上,而序号的数值却都不一样,因此,还要考虑连续性,属性不能够乱设。比如在单位里,操作人员会定期地检修设备,在记录表里面会有单位的名称指代、时间、机器的专属号码,这些值是应该取成不一样的,而生产号码也必须是连续性的。对于操纵设备的工作人员来说,他们每天都要在早录入本上写进当天的检修情况等。然而在整个系统里,为了使用户能够正常地使用程序,只要用户发出一条信息,程序就会把这些信息填进已经设计好的表格里。表格内容会包括单位的名称指代、检修的情况和日期,程序会自动把这些记录后的同样格式的信息的编号值进行修改。
2.3 建立新型窗口式排斥模块
但当主键的序号属性很多时,或者在问题交付前会加上几条信息的,如果采用以上几种方法来解决问题,还需设置一个专门用来进行窗口互相排斥的模型去保证数据的一致性。因此,专家开发出了“窗口的互斥管理程序”,在任何一个时间里都只允许一个窗口被一个用户操作和使用,来保证数据库的一致性不被破坏。
3 灵活运用各种方法来解决问题
其它不是来自于序号冲突问题的并发控制问题,都能够按照它们所有的属性,总结出它们的规律,就完全可以进行快速地分类了。灵活地运用文章中提到的方法,就能够有效地解决在MIS系统Sybase中可能会出现的并发控制问题,使数据能保持一致性。
并发能力是指很多用户在同一个时间里访问相同的数据的一种程式能力。在普通的数据库里都有并发控制的功能,但是并发控制功能正是导致数据库不能一致的一个重要原因,所以说并发控制是我们要进行抑制的状况。
[1] 王秀敏.基于SYBASE SQL SERVER的页锁表锁及死锁研究[J].计算机应用研究,2002,19(4):66-67.
[2] 邵佩英,扬孝如.数据库系统基础知识[M].北京:中国水利水电出版社,2001.
[3] 谌 明.PE系统数据库重构的设计与实现[D].杭州:浙江大学,2006.
[4] 谢西庭.嵌入式主动实时数据库ARTs-EDB事务处理的设计[D].武汉:华中科技大学,2004.