载货车辆称重管理系统中并发控制机制的研究和

类别:公司新闻 时间:2018-01-24 点击:66 次

载货车辆称重管理系统在大型厂矿企业中占据重要的地位。在该系统中,通常一些用户拥有相同的使用权限,如果这些用户 不加以合理控制会破坏数据库一致性,因此怎样避免数据共享中的冲突通常是在系统开发过程中需要解决的关键问题。本文针对称重管理中多用户共享访问实时数据库数据时出现的问题,探讨了并发控制机制和解决并发控制的方法。
1.简介
载货车辆称重管理系统主要是针对大型厂矿中原料采购、成品销售及厂内物资调拨过程进行的计量管理,可以通过网络实现 数据共享。本系统可以自动采集称重仪表中毛重、皮重、车辆牌照等信息,这些信息不能手工输入,杜绝人为因素的干扰,防止大车 过碚小车回皮或小车过碚大车回皮的现象发生,杜绝司机的作弊行为。管理人员在查询碚房的历史称重记录时,可同时调出当时的 现场图片和重量两组信息可供对比,确保称重过程的准确可靠,透明,公正。通过该系统可以提高企业管理水平,防止称重作弊,堵 塞管理漏洞,有效控制成本,提高工作效率,起到了非常积极的作用。
数据库是一个共享资源,当多个用户并发地访问数据库时就会产生多个事务同时存取同一数据的情况。若此时对并发操作不 加控制就可能导致读取和存储不正确的数据,破坏数据库的一致性。所以在数据库系统中提供并发控制机制是必须的。
本文旨在研究数据库并发控制理论的基础上,结合实际的数据库系统对系统中的并发控制的实现方法进行一些研究。
2.多用户并发控制理论
2.1事务定义及其特性
数据库中一个重要概念是事务,它是一系列要么都做,要么都不做的数据库操作的集合。事务具有四个基本特性:原子性,一致 性,隔离性和持久性四个特性。事务并发操作带来的数据不一致性包括:丢失修改,不可重复读和读“脏”数据,这是因为并发操作破 坏了事务的特性。保证事务的调度执行满足上述四个性质是所有的数据库管理系统必须的,这样才能确保数据库始终从某个一致 性状态转变到另一个一致性状态。
2.2事务并发控制机制
常用的并发控制机制有:基于锁协议的并发控制机制,冲突图检测并发控制机制,时间戳并发控制机制,乐观并发控制机制。
2.2.1基于锁协议的并发控制机制
基本的锁类型有两种:排它锁(简称X锁)和共享锁(简称S锁)。若事务T对数据元素A加上X锁,则只允许T读取和修改A, 其他任何事务都不能再对A加上任何类型的锁,直到T释放A上的锁。这样就保证了其他事务在T释放A上的锁之前不能再读取 和修改A。若事务T对数据元素A加上S锁,则T只可以读A,其他任何事务只能再对A加上S锁,而不能加X锁,直到T释放A 上的S锁。这样就保证了其他事务可以读A,但在T释放A上的S锁之前不能再对A做任何修改。在某些特殊的条件下,数据库中 还会引入更新锁和增量锁。
两段锁协议(2PL)是最常用的一种锁协议。所谓两段锁协议,是指所有事务必须分两个阶段对数据元素加锁和解锁。在对任何 数据元素进行读、写操作之前,首先要申请并获得对该数据元素的加锁;在释放一个锁后,事务不再申请和获得其他锁。“两段”的含 义是,事务分两个阶段,第一阶段是加锁阶段,也称为扩展阶段。在加锁阶段中,事务可以申请获得任何数据元素上的任何类型的 锁,但是不能释放锁。第二阶段是解锁阶段,也称为收缩阶段。在解锁阶段,事务可以释放任何数据对元素上的任何类型的锁,但是 不能再加任何锁。可以证明,若并发执行的所有事务均遵守两段锁协议,则任何对并发事务的调度算法都是可串行化的。
2.2.2冲突图检测并发控制机制
检测并发控制机制的首要问题是构造冲突图。冲突图中的结点表示处于活跃状态的事务。对于处于活跃状态的事务p和q,在 对数据元素x进行并发操作时,如果至少存在一个关于x的写操作,且没有其它事务对x进行操作,则称p和q是冲突事务。若事 务p的冲突操作在q的冲突操作之前,则在冲突图中有从结点p到q的一条有向边。以活跃事务结点,以所有处于活跃状态的冲突 事务为有向边,就构成了冲突图。通过检测在冲突图不存在环路,可以保证并发时数据的一致性,实现事务并发调度。
2.2.3时间戳法并发控制机制
在时间戳并发控制机制中,调度器需要在每个事务赋予一个唯一的数值(时间戳)。该数值必须在事务首次通知调度器时按升 序发出。对于数据库中的每个元素,都与两个时间戳联系起来,这两个时间戳分别为读取数据元素x的事务中最大时间戳,即最近 一次读取x的事务时间戳,记做RTM(x),写数据元素x的事务中最大时间戳即最近一次写x的事务时间戳,记做WTM(x)。调度器负 责维护当前的活动事务及其时间戳表。
2.2.4乐观并发控制
乐观方法的基本思想是:对事务运行时可能发生的冲突操作不预处理,待事务结束时再进行检测。
乐观方法与悲观方法(如2PL)的区别主要在于对数据库并发事务发生冲突概率的假设不同,乐观方法认为不同用户之间所需 的数据资源发生冲突的可能性很小,所以允许事务执行后验证,悲观方法则相反。根据实际应用环境的不同,乐观方法和悲观法的 并发调度性能有不同的表现。
以上的并发控制机制各有利弊,对于不同的应用,使用的并发控制机制也不同。虽然冲突图检测并发控制机制有很多优点,但 是,在确定环路存在的情况下,必须通过强制事务中终止的方式来保证冲突图中不存在环路,确保数据的一致性。时间戳法并发控 制机制虽然没有延迟事务,但导致其重启的可能性远大于锁协议的回滾。重启在某中程度上是延迟事务的一种更严重的形式,消耗 了更多的系统性能。
3.载货车辆称重系统中并发控制机制的实现方法
3.1载货车辆称重管理系统模块以及存在的并发操作
载货车辆称重管理系统中,包括四个模块:①安全检查模块②称重管理模块③仓库管理模块④监控中心模块 在此系统的几个模块中,存在多用户对同一数据访问的情况:

1)在安全检查模块①中,大型厂矿出入门不只一个,同时会有两个或多个 用户更改同一车辆的出入厂信息。
2)在模块④和模块②中,监控中心要查看统计相应的载货车辆称重的信息,
同时称重处正在称重,此时对于称重处相应的事务要加上锁,不允许别的用户访 问,等待此事务执行完毕才允许监控中心用户进行操作,这些控制是必需的。
3.2此系统中并发控制的实现方法
以便下面控制机制实现方法的介绍,引入载货车辆信息表的各个数据项如表1。
对于本系统可以采用更新游标、显式加锁、更改事务隔离级别等并发控 制。在使用时应注意事项有:①只有在数据一致性要求特别严格、并发度要求不
高时采用可重复读与可串行读的隔离级别;②在同一个事务当中,要适当根据需要来变更数据的锁定级别,TABLOCK这样粗粒度的封锁;③在包含客户交互的操作中使用游标,并尽可能缩短交互时间。
介于上述四种并发机制和对载货车辆称重管理系统的研究,使用锁机制和更新游标控制来实现的并发控制更适合于这个系 统。使用更新游标的方法实现称重管理员对载货车辆的车辆编号和车辆净重等信息的浏览和修改,下面代码是C语言编写的3 , EXEC SQL DECLARE autocursor CURSOR FOR autoNO, netweight /* 定义车辆游标 autocursor ,
SELECT FROM autotable FOR UPDATE; 并将游标 autocursor 与查询的结果相关联 */
EXEC SQL OPEN autocursor; // 将车辆游标打开
for( ; ;) //使用for循环来读取游标中的全部记录
{EXEC SQL FETCH autocursor INTO: autoNO: netweight; /推进游标,从游标中读记录,送相应的主变量 If (code < >SUCCESS) break; //如果记录取完,则退出循环
…… //将所有记录的内容显示
EXEC SQL UPDATE autotable SET autoNO =:”要输入的值” //更新数据 WHERE CURRET of autocursor;
}
EXEC SQL CLOSE autocursor /关闭游标
上面的方法的缺点是即使用户不对当前记录进行修改,也要对当前的记录加锁,这样就影响了事务并发度,此时可采用另一种 方法:定义一个滾动游标来完成查询;获取游标的一个记录,显示给用户;用户浏览记录,直到要修改或者删除的记录;当用户选择 修改一个记录时,为用户想要修改的记录定义一个更新游标;使用更新游标获取记录,并重新显示锁定的记录;更新这个记录。那么 上面的代码可以更改为:
EXEC SQL DECLARE autocursor SCROLL CURSOR for SELECT autoNO:auto-netweight FROM autotable;
EXEC SQL OPEN autocursor for( ; ;)
{EXEC SQL FETCH autocursor INTO: autoNO: netweight;
…/ 显示记录内容给用户 EXEC SQL DECLARE autocursor update CURSOR FOR SELECT netweight FROM autotable WHERE autoNO = :”修改之后的值”; / 定义更新游标
EXEC SQL FETCH autocursor UPDATE INTO: netweight; //读取数值
EXEC SQL UPDATE autotable SET auto-netweight =:”新的值” WHERE CURRENT of autocursor UPDATE;
系统中还需要用其它的控制机制,提高系统并发度,从而提高系统的性能,这一点还是很重要的,这有待于继续研究。
4.结论
本文主要采用了锁机制和游标控制方法实现数据的并发控制,但是实现并发控制机制的方法还有很多,例如有借助于表的修 改,借助于新的开发工具等。这些方法将更好的提高本系统中的并发机制,同时成为进一步研究内容。

中国领先的称重软件技术提供商

The Leading Provider of Geomatic Solutions in China

展开收起网站地图