【技术实现步骤摘要】
处理数据库事务的方法、客户端和服务器
本专利技术涉及数据库
,并且更具体地,涉及一种处理数据库事务的方法、客户端和服务器。
技术介绍
当多个用户同时访问数据库时,会产生多个事务并发操作同一数据的情况,若对这种并发操作不加控制就可能会产生在数据库中存取不正确数据的问题,破坏事务与数据库的一致性。封锁是实现并发控制的一个非常重要的技术。所谓封锁就是事务T对某个数据操作之前,先向系统发出对其加锁的请求,加锁后事务T就对该数据有了一定的控制,在事务T释放它的锁之前,其他事务均不能对该数据进行操作。封锁对象的大小称为封锁粒度。封锁对象可以是逻辑单元,也可以是物理单元。上述封锁的技术也称为锁机制(Lock)。在锁机制中,读会阻塞写,写也会阻塞读,当封锁粒度较大时,会降低数据库的访问实时性,导致修改同一数据时阻塞较大。而且同一数据的读写冲突会产生功能长时间阻塞,容易产生死锁问题,需要定期做死锁检测。针对锁机制存在的问题,当前技术提出了多版本并发控制(MultiversionConcurrencyControl,MVCC)的事务机制。一般把基于锁的并发控制机制称为悲观机制,而把MVCC机制称为乐观机制。在MVCC中,为同一数据维护多个版本(每个版本对应一个时间戳),即这个数据被修改提交一次就生成一个新的版本,同一数据的多个版本之间的串行化使用时间戳(或版本号)或事务标识ID的方式来支持。对于要对该数据进行读操作的事务T来说,总是可以提供时间戳与事务T的开始时刻相一致的版本,不管这个事务T执行的时间有多长,该事务T始终看到的是该数据的同一个版本,即使在该事务T执行期间 ...
【技术保护点】
一种处理数据库事务的方法,其特征在于,包括:服务器接收客户端发送的数据库访问请求,所述数据库访问请求用于请求目标数据;所述服务器基于所述数据库访问请求,向所述客户端发送所述目标数据的第一版本,所述第一版本为所述服务器当前存储的所述目标数据的版本,所述服务器中只保存所述目标数据的最近一次提交更新的版本;所述服务器接收所述客户端基于所述第一版本执行完第一事务后发送的事务提交请求,所述事务提交请求用于请求提交所述第一事务,所述事务提交请求中包括用于记录所述第一事务的数据操作的日志;所述服务器根据所述日志,在确定所述第一事务的数据操作与所述服务器当前存储的所述目标数据的版本不存在数据冲突的情况下,按照所述第一事务的数据操作修改所述服务器当前存储的所述目标数据的版本,获得所述目标数据的提交更新的版本,以完成所述第一事务的提交。
【技术特征摘要】
1.一种处理数据库事务的方法,其特征在于,包括:服务器接收客户端发送的数据库访问请求,所述数据库访问请求用于请求目标数据;所述服务器基于所述数据库访问请求,向所述客户端发送所述目标数据的第一版本,所述第一版本为所述服务器当前存储的所述目标数据的版本,所述服务器中只保存所述目标数据的最近一次提交更新的版本;所述服务器接收所述客户端基于所述第一版本执行完第一事务后发送的事务提交请求,所述事务提交请求用于请求提交所述第一事务,所述事务提交请求中包括用于记录所述第一事务的数据操作的日志;所述服务器根据所述日志,在确定所述第一事务的数据操作与所述服务器当前存储的所述目标数据的版本不存在数据冲突的情况下,按照所述第一事务的数据操作修改所述服务器当前存储的所述目标数据的版本,获得所述目标数据的提交更新的版本,以完成所述第一事务的提交。2.根据权利要求1所述的方法,其特征在于,所述第一事务的数据操作包括插入操作,所述日记中包括所述插入操作对应的主关键字,所述方法还包括:在所述服务器当前存储的所述目标数据的版本中不存在所述主关键字的情况下,所述服务器确定所述第一事务的数据操作与所述服务器当前存储的所述目标数据的版本不存在数据冲突。3.根据权利要求1所述的方法,其特征在于,所述第一事务的数据操作包括更新操作或删除操作,所述事务提交请求中还包括所述第一版本的时间戳,所述方法还包括:在所述服务器当前存储的所述目标数据的版本的时间戳与所述第一版本的时间戳一致的情况下,所述服务器确定所述第一事务的数据操作与所述服务器当前存储的所述目标数据的版本不存在数据冲突。4.根据权利要求1至3中任一项所述的方法,其特征在于,在所述服务器获得所述目标数据的提交更新的版本之后,所述方法还包括:所述服务器为所述目标数据的提交更新的版本设置新的时间戳。5.根据权利要求1至4中任一项所述的方法,其特征在于,所述方法还包括:在确定所述第一事务的数据操作与所述服务器当前存储的所述目标数据的版本存在数据冲突的情况下,所述服务器向所述客户端发送用于指示所述第一事务的提交无效的响应。6.一种处理数据库事务的方法,其特征在于,包括:客户端获取用于请求执行第一事务的事务请求,所述第一事务要基于目标数据进行执行;所述客户端向服务器发送用于请求所述目标数据的数据库访问请求;所述客户端接收所述服务器发送的所述目标数据的第一版本,所述第一版本为所述服务器当前存储的所述目标数据的版本,所述服务器当前存储的所述目标数据的版本为所述目标数据的最近一次提交更新的版本;所述客户端基于所述第一版本执行所述第一事务;在执行完所述第一事务后,所述客户端向所述服务器发送事务提交请求,所述事务提交请求用于请求提交所述第一事务,所述事务提交请求中包括用于记录所述第一事务的数据操作的日志,以使得所述客户端根据所述日志,在确定所述第一事务的数据操作与所述服务器当前存储的所述目标数据的版本不存在数据冲突的情况下,按照所述第一事务的数据操作修改所述服务器当前存储的所述目标数据的版本,获得所述目标数据的提交更新的版本,以完成所述第一事务的提交。7.根据权利要求6所述的方法,其特征在于,所述第一事务的数据操作包括插入操作,所述日记中包括所述插入操作对应的主关键字。8.根据权利要求6所述的方法,其特征在于,所述第一事务的数据操作包括更新操作或删除操作,所述事务提交请求中还包括所述第一版本的时间戳。9.一种服务器,其特征在于,包括:接收模块,用于接收客户端发...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。