[发明专利]处理数据库事务的方法、客户端和服务器有效
申请号: | 201610496073.3 | 申请日: | 2016-06-30 |
公开(公告)号: | CN107577678B | 公开(公告)日: | 2021-02-09 |
发明(设计)人: | 彭勇飞 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F16/23 | 分类号: | G06F16/23;G06F12/08 |
代理公司: | 北京龙双利达知识产权代理有限公司 11329 | 代理人: | 毛威;肖鹂 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 处理 数据库 事务 方法 客户端 服务器 | ||
本发明提供一种处理数据库事务的方法、客户端与服务器,该方法包括:服务器接收客户端发送用于请求目标数据的数据库访问请求;向客户端发送目标数据的第一版本,第一版本为服务器当前存储的目标数据的版本,服务器中只保存目标数据的最近一次提交更新的版本;接收客户端基于第一版本执行完第一事务后发送的事务提交请求,事务提交请求中包括用于记录第一事务的数据操作的日志;根据日志,在确定第一事务的数据操作与服务器当前存储的目标数据的版本不存在数据冲突的情况下,按照第一事务的数据操作修改服务器当前存储的目标数据的版本,获得目标数据的提交更新的版本。本发明实现了无锁事务机制,降低数据库的存储管理复杂度。
技术领域
本发明涉及数据库技术领域,并且更具体地,涉及一种处理数据库事务的方法、客户端和服务器。
背景技术
当多个用户同时访问数据库时,会产生多个事务并发操作同一数据的情况,若对这种并发操作不加控制就可能会产生在数据库中存取不正确数据的问题,破坏事务与数据库的一致性。
封锁是实现并发控制的一个非常重要的技术。所谓封锁就是事务T对某个数据操作之前,先向系统发出对其加锁的请求,加锁后事务T就对该数据有了一定的控制,在事务T释放它的锁之前,其他事务均不能对该数据进行操作。封锁对象的大小称为封锁粒度。封锁对象可以是逻辑单元,也可以是物理单元。上述封锁的技术也称为锁机制(Lock)。
在锁机制中,读会阻塞写,写也会阻塞读,当封锁粒度较大时,会降低数据库的访问实时性,导致修改同一数据时阻塞较大。而且同一数据的读写冲突会产生功能长时间阻塞,容易产生死锁问题,需要定期做死锁检测。
针对锁机制存在的问题,当前技术提出了多版本并发控制(MultiversionConcurrency Control,MVCC)的事务机制。一般把基于锁的并发控制机制称为悲观机制,而把MVCC机制称为乐观机制。
在MVCC中,为同一数据维护多个版本(每个版本对应一个时间戳),即这个数据被修改提交一次就生成一个新的版本,同一数据的多个版本之间的串行化使用时间戳(或版本号)或事务标识ID的方式来支持。对于要对该数据进行读操作的事务T来说,总是可以提供时间戳与事务T的开始时刻相一致的版本,不管这个事务T执行的时间有多长,该事务T始终看到的是该数据的同一个版本,即使在该事务T执行期间该数据被其他事务修改了,该事务T也不会出现“脏”读或幻读的现象。因此,MVCC通过为同一数据维护多个版本,实现了读操作与写操作并发而互不影响,也可以支持多个读操作并发而互不影响。但是,为同一数据维护多个版本的方式并不能解决并发的写操作与写操作之间的冲突。在MVCC中,还是利用加锁的方式解决来写操作的冲突问题。如果一个事务对一个数据执行写操作,该数据就被锁定,在该事务释放它的锁之前,其他事务均不能对该数据进行操作,即多个写操作会串行执行,因此不会存在冲突。
上述可知,现有的MVCC机制相对于传统的锁机制,避免了读阻塞写,写阻塞读,但是还是无法避免写阻塞写。此外,在现有的MVCC技术中,由于需要存储同一数据的多个版本,导致数据库的存储管理较为复杂,而且还需要定期清理不再需要的版本以回收空间,也增加了额外的开销。
发明内容
本发明提供了一种处理数据库事务的方法、客户端和服务器,实现了一种能够支持多个读操作和/或写操作同时并发的无锁事务机制,并且能够降低数据库的存储管理复杂度。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610496073.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:数据写入方法及内存系统
- 下一篇:基于媒体信息采集的原创文章影响力分析系统