[发明专利]事务执行方法、装置、计算设备及存储介质有效
申请号: | 202111306227.5 | 申请日: | 2021-11-05 |
公开(公告)号: | CN115113989B | 公开(公告)日: | 2023-05-26 |
发明(设计)人: | 熊亮春;潘安群;雷海林;刘畅 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | G06F9/46 | 分类号: | G06F9/46;G06F16/22 |
代理公司: | 北京三高永信知识产权代理有限责任公司 11138 | 代理人: | 李文静 |
地址: | 518057 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 事务 执行 方法 装置 计算 设备 存储 介质 | ||
1.一种事务执行方法,其特征在于,所述方法包括:
响应于数据定义语言DDL事务,在DDL事务所操作的数据对象与数据表中的数据列相关联的情况下,确定操作的操作类型;
在解析所述DDL事务所涉及的每一项操作的操作类型时,对操作所涉及的每一个数据对象生成对应的操作解析信息;将所述DDL事务的各项操作所涉及的各个数据对象的所述操作解析信息,存储到操作解析信息集合中;在所述数据表的DDL操作表中,为所述操作解析信息集合中的每一个所述操作解析信息创建一条对应的DDL操作记录;所述DDL操作表用于建立所述数据表中数据记录的不同版本之间的映射关系;所述DDL操作表中的每条所述DDL操作记录都会记载所操作的所述数据对象的版本号,而所述数据表中每条所述数据记录自身存储格式中会携带一个记录版本号,通过在所述DDL操作表中找到位于所述记录版本号到最新版本号之间的所述DDL操作记录,建立出数据记录的存储版本到最新版本之间的映射关系;所述存储版本是指在当前时刻下所述数据表中存储的数据记录对应的版本;
在确定所述DDL事务所操作的所述数据对象所关联的所述数据表后,访问所述数据表的数据字典,在所述数据字典中对所述DDL事务所操作的所述数据对象的定义执行对应的操作,并在对所述数据对象的定义执行所述操作完毕后,提交所述DDL事务;所述数据字典是数据库中用于存放所述数据库中的所述数据对象的定义的地方;
在提交所述DDL事务后,对所述数据列所关联的索引,启动索引修改事务;
响应于所述索引修改事务,对所述数据表中存储的每一条数据记录,若所述数据记录并非最新版本,查询所述数据表的所述DDL操作表,得到所述数据记录从当前版本到所述最新版本之间发生的至少一条DDL操作记录;基于所述至少一条DDL操作记录,生成从所述当前版本到所述最新版本的字段映射关系;基于所述字段映射关系,对所述数据记录的各个字段数据进行映射操作,得到所述最新版本的数据记录,将所述最新版本的所述数据记录写回所述数据表;在所述数据记录所关联的索引记录中,写入所述最新版本的数据记录中与所述索引对应的字段数据,以覆盖已有的同一字段数据;将所述数据表和所述索引均标记为发布状态;其中,所述映射操作包括以下至少一项:若所述DDL操作记录对应的操作类型包括新增列,向新增的数据列对应的字段数据中填充插入值或默认值;若所述DDL操作记录对应的操作类型包括删除列,跳过被删除的数据列对应的字段数据;若所述DDL操作记录对应的操作类型包括修改列位置,将被修改位置的数据列对应的字段数据从原始位置移动至目标位置;若所述DDL操作记录对应的操作类型包括修改列类型,对被修改列类型的数据列对应的字段数据的数据类型从原始类型转换为目标类型;
在所述数据表的所述数据字典中,对所述数据列和所述索引的定义执行所述索引修改事务所指示的修改;将所述DDL事务的跟踪信息置为已完成状态;所述跟踪信息用于跟踪所述DDL事务的执行情况,对所述DDL事务在异常中断后进行恢复执行;
对所述数据表中存储的每一条数据记录,若所述数据记录并非最新版本,且所述数据列的列类型转换存在冲突的情况下,获取所述DDL事务的异常处理参数;在所述异常处理参数指向异常处理函数时,基于所述操作类型下挂载的所述异常处理函数,对所述数据记录进行转换;在所述异常处理参数不指向异常处理函数,或所述异常处理函数对所述数据记录转换失败时,暂停所述索引修改事务,向触发所述DDL事务的设备返回发生冲突的所述数据记录。
2.根据权利要求1所述的方法,其特征在于,所述为所述操作解析信息集合中的每一个所述操作解析信息创建一条对应的DDL操作记录包括:
对每一个数据列的所述操作解析信息,在所述操作解析信息对应的操作类型为增加列的情况下,生成增加所述数据列的DDL操作记录;或,在所述操作解析信息对应的操作类型为删除列的情况下,生成删除所述数据列的DDL操作记录。
3.根据权利要求1所述的方法,其特征在于,所述为所述操作解析信息集合中的每一个所述操作解析信息创建一条对应的DDL操作记录包括:
对每一个数据列的所述操作解析信息,在所述操作解析信息对应的操作类型为修改列的情况下,若所述数据列不具有关联的索引或者所述操作类型不涉及修改所述数据列的列类型,生成修改所述数据列的DDL操作记录。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111306227.5/1.html,转载请声明来源钻瓜专利网。