[发明专利]一种数据库修改方法、装置、设备及存储介质有效
申请号: | 201910208958.2 | 申请日: | 2019-03-19 |
公开(公告)号: | CN109933606B | 公开(公告)日: | 2021-04-27 |
发明(设计)人: | 王蒙蒙;王海龙 | 申请(专利权)人: | 上海达梦数据库有限公司 |
主分类号: | G06F16/2453 | 分类号: | G06F16/2453;G06F9/52 |
代理公司: | 北京品源专利代理有限公司 11332 | 代理人: | 孟金喆 |
地址: | 201203 上海*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 数据库 修改 方法 装置 设备 存储 介质 | ||
本发明实施例公开了一种数据库修改方法、装置、设备及存储介质。该方法包括:于获取到事务的修改指令时,读取所述事务对应的待修改数据的事务号;若所述待修改数据的事务号对应的事务状态为执行状态,则通过共享锁封锁所述待修改数据的事务号,并记录所述修改指令中携带的修改位置信息;根据所述修改位置信息更新锁等待数组;若更新后的锁等待数组为空,则根据所述修改位置信息修改所述待修改数据,并将所述待修改数据的事务号替换为所述事务对应的事务号,通过本发明的技术方案,能够将没有并发冲突的事务全部唤醒,允许这些事务之间并发执行,从而进一步提高系统的并发度。
技术领域
本发明实施例涉及计算机技术,尤其涉及一种数据库修改方法、装置、设备及存储介质。
背景技术
数据库系统允许多个用户并发访问和修改数据,不同用户的并发操作最终体现为不同事务的并发执行。有可能会出现多个事务同时访问或修改同一行数据的情况,为了保证数据的正确性和一致性,数据库系统必须要进行并发控制,其中最常用的方式就是封锁。在修改数据之前,先对数据库对象进行X封锁,在此期间其他事务的访问和修改动作都会被阻塞住,在数据修改完成后再释放X锁,以此来保证并发情况下数据的正确性和一致性。
为了降低数据库行锁的资源消耗和维护代价,其中一种行锁优化方式是将事务号TID作为封锁目标进行封锁(称之为TID锁),以此来替代传统的行级封锁。事务启动时以自身事务号为封锁目标,采用X封锁模式,生成一个TID锁。在事务执行插入、删除、更新操作时,只要将当前事务号写入数据的TID字段中,就相当于对这一行数据进行了X封锁,减少了行锁资源的消耗。在事务(Trx1)结束之前,另一个事务(Trx2)要修改相同位置的数据时,先从待修改数据中读出TID值,根据多版本并发控制的可见性规则(其他事务看不到未提交事务的任何修改)判断数据对自己是否可见,由于事务Trx1还未提交,因此这行数据对Trx2是不可见的,Trx2试图对数据中携带的TID值进行封锁时会被阻塞住,直到事务Trx1结束时将其唤醒,从而达到多个事务并发控制的目的。这种封锁策略,只在产生数据更新冲突时,才需要进行TID封锁,没有冲突时不需要额外的封锁,可以有效降低传统行锁的资源消耗代价。
由于事务修改数据前对自己的TID采用X模式封锁,因此事务在更新不可见数据时不管是以S模式还是X模式封锁数据中的TID时,都会被前一个更新数据的事务阻塞住。采用S封锁时,如果多个并发事务更新的是同一行数据,TID锁对应的事务提交或回滚后,会一次性将所有S封锁等待的事务唤醒。由于这些被唤醒的事务更新的是同一行数据,因此会继续产生冲突,最终只会有一个事务更新成功,其他被唤醒的事务又要继续等待这个新执行的事务提交或回滚。而采用X封锁时,TID锁对应的事务提交或回滚后,只会唤醒一个事务,其他事务会继续阻塞,这种方式有助于降低无效的并发冲突,但是这种方式在不同事务更新不同数据的场景下,又显得过于保守,导致不冲突事务被阻塞,降低事务的处理速度。
发明内容
本发明实施例提供一种数据库修改方法、装置、设备及存储介质,以实现能够将没有并发冲突的事务全部唤醒,允许这些事务之间并发执行,从而进一步提高系统的并发度的目的。
第一方面,本发明实施例提供了一种数据库修改方法,包括:于获取到事务的修改指令时,读取所述事务对应的待修改数据的事务号;
若所述待修改数据的事务号对应的事务状态为执行状态,则通过共享锁封锁所述待修改数据的事务号,并记录所述修改指令中携带的修改位置信息;
根据所述修改位置信息更新锁等待数组;
若更新后的锁等待数组为空,则根据所述修改位置信息修改所述待修改数据,并将所述待修改数据的事务号替换为所述事务对应的事务号。
第二方面,本发明实施例还提供了一种数据库修改装置,该装置包括:读取模块,用于于获取到事务的修改指令时,读取所述事务对应的待修改数据的事务号;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海达梦数据库有限公司,未经上海达梦数据库有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910208958.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:电费差错排查方法、装置以及电子设备
- 下一篇:周期性时间序列数据处理方法