CN110188114B - 一种数据操作的优化方法、装置、系统、设备和存储介质 - Google Patents
一种数据操作的优化方法、装置、系统、设备和存储介质 Download PDFInfo
- Publication number
- CN110188114B CN110188114B CN201910446756.1A CN201910446756A CN110188114B CN 110188114 B CN110188114 B CN 110188114B CN 201910446756 A CN201910446756 A CN 201910446756A CN 110188114 B CN110188114 B CN 110188114B
- Authority
- CN
- China
- Prior art keywords
- database
- statement
- operation statement
- sql operation
- transaction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种数据操作的优化方法、装置、系统、设备和存储介质。其中,该方法包括:确定当前启动的数据库事务中的目标SQL操作语句,该目标SQL操作语句为数据库事务中第一条写操作对应的SQL操作语句;将目标SQL操作语句之前的第一SQL操作语句分发给备份数据库,将目标SQL操作语句和目标SQL操作语句之后的第二SQL操作语句分发给主数据库。本发明实施例提供的技术方案,由备份数据库执行第一SQL操作语句,该数据库事务未对任一数据进行更改,使得客户端访问备份数据库与访问主数据库的数据一致,由主数据库执行目标SQL操作语句和第二SQL操作语句,实现数据库事务中读写操作的分离处理,提高数据读取的准确性。
Description
技术领域
本发明实施例涉及数据库处理领域,尤其涉及一种数据操作的优化方法、装置、系统、设备和存储介质。
背景技术
在数据库中,结构化查询语言(Structured Query Language,SQL)是一种为数据库建立的操作命令集,其中包括读操作和写操作;为了提高数据库中数据的读写效率,通常通过主数据库和备份数据库采用数据读写分离的方式来读写数据库中的数据。
目前客户端在执行数据库事务时,首先判断该数据库事务对应的SQL操作语句中存在的操作类型,如果仅存在读操作,则通过备份数据库执行该SQL操作语句;若存在写操作,则通过主数据库执行数据库事务中的全部SQL操作语句。由于主数据库更新某一操作数据后,备份数据库也需要更新对应的操作数据,以保证主数据库与备份数据库的数据一致性,此时备份数据库的数据更新相比于主数据库存在一定延迟,因此如果一个数据库事务中对应的SQL语句中存在读写两种操作,为了避免在备份数据库上执行读操作时可能读取到未更新的数据,则只能在主数据库上执行,如一个存储过程语句块中既包含读操作也包含写操作,则会被简单归为写操作语句,整个语句块只会在主数据库上执行,不能将语句块中的部分读操作分配到备份数据库上执行。
目前的读写分离方案中,备份数据库只能执行数据库事务中仅存在读操作的SQL操作语句,无法执行在读写混合的数据库事务中的读操作对应的SQL操作语句,否则无法保证数据读取的准确性。
发明内容
本发明实施例提供了一种数据操作的优化方法、装置、系统、设备和存储介质,保证在备份数据库与主数据库上访问数据的一致性,提高数据读取的准确性。
第一方面,本发明实施例提供了一种数据操作的优化方法,该方法包括:
确定当前启动的数据库事务中的目标结构化查询语言SQL操作语句,所述目标SQL操作语句为所述数据库事务中第一条写操作对应的SQL操作语句;
将所述目标SQL操作语句之前的第一SQL操作语句分发给备份数据库,将所述目标SQL操作语句和所述目标SQL操作语句之后的第二SQL操作语句分发给主数据库,以使所述备份数据库执行所述第一SQL操作语句,所述主数据库执行所述目标SQL操作语句和所述第二SQL操作语句。
第二方面,本发明实施例提供了一种数据操作的优化装置,该装置包括:
目标语句确定模块,用于确定当前启动的数据库事务中的目标结构化查询语言SQL操作语句,所述目标SQL操作语句为所述数据库事务中第一条写操作对应的SQL操作语句;
语句分发模块,用于将所述目标SQL操作语句之前的第一SQL操作语句分发给备份数据库,将所述目标SQL操作语句和所述目标SQL操作语句之后的第二SQL操作语句分发给主数据库,以使所述备份数据库执行所述第一SQL操作语句,所述主数据库执行所述目标SQL操作语句和所述第二SQL操作语句。
第三方面,本发明实施例提供了一种数据库系统,该数据库系统包括:主数据库和备份数据库;
所述备份数据库执行客户端分发的当前启动的数据库事务中目标SQL操作语句之前的第一SQL操作语句,所述目标SQL操作语句为所述数据库事务中第一条写操作对应的SQL操作语句;
所述主数据库执行所述客户端分发的所述数据库事务中的目标SQL操作语句和所述目标SQL操作语句之后的第二SQL操作语句。
第四方面,本发明实施例提供了一种数据操作的优化系统,该系统包括:客户端和第三方面中所述的数据库系统;
所述客户端将当前启动的数据库事务中目标SQL操作语句之前的第一SQL操作语句分发给备份数据库,将所述数据库事务中的目标SQL操作语句和所述目标SQL操作语句之后的第二SQL操作语句分发给主数据库,所述目标SQL操作语句为所述数据库事务中第一条写操作对应的SQL操作语句。
第五方面,本发明实施例提供了一种设备,该设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明任意实施例所述的数据操作的优化方法。
第六方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明任意实施例所述的数据操作的优化方法。
本发明实施例提供了一种数据操作的优化方法、装置、系统、设备和存储介质,客户端将当前启动的数据库事务中在第一条写操作对应的目标SQL操作语句之前的第一SQL操作语句分发给备份数据库,此时第一SQL操作语句均为读操作,由备份数据库执行第一SQL操作语句来读取对应的操作数据,此时该数据库事务未对任一数据进行更改,使得客户端访问备份数据库与访问主数据库的数据一致,同时将该数据库事务中的目标SQL操作语句和在目标SQL操作语句之后的第二SQL操作语句分发给主数据库,此时目标SQL操作语句和第二SQL操作语句中可能存在写操作和读操作两种,由主数据库执行目标SQL操作语句和第二SQL操作语句来得到对应的执行结果,实现数据库事务中读写操作的分离处理,使得通过主数据库能够读取执行该数据库事务后已修改的操作数据,提高数据读取的准确性。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1A为本发明实施例一提供的一种数据操作的优化方法的流程图;
图1B为本发明实施例一提供的数据操作的优化过程的原理示意图;
图2A为本发明实施例二提供的一种数据操作的优化方法的流程图;
图2B为本发明实施例二提供的数据操作的优化过程的原理示意图;
图3为本发明实施例三提供的一种数据操作的优化装置的结构示意图;
图4A为本发明实施例四提供的一种数据库系统的原理示意图;
图4B为本发明实施例四提供的通过数据库系统执行数据操作的优化方法的流程图;
图5为本发明实施例五提供的一种数据操作的优化系统的结构示意图;
图6为本发明实施例六提供的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。此外,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
实施例一
图1A为本发明实施例一提供的一种数据操作的优化方法的流程图,本实施例可适用于任一种数据库中实现数据读写分离的情况中。本实施例提供的一种数据操作的优化方法可以由本发明实施例提供的数据操作的优化装置来执行,该装置可以通过软件和/或硬件的方式来实现,并集成在执行本方法的设备中,在本实施例中执行本方法的设备可以是平板电脑、台式机和笔记本等任意一种承载有数据库应用的智能终端。
具体的,参考图1A,该方法可以包括如下步骤:
S110,确定当前启动的数据库事务中的目标SQL操作语句。
具体的,为了保证数据库即使在异常状态下仍能保持数据一致,且防止多个数据库访问操作下的相互干扰,数据库通常通过一个数据库事务来执行对应的多个操作;数据库事务是数据库执行过程中的一个逻辑单位,具备原子性、一致性、隔离性和持久性四个特性,如图1B所示,数据库事务由一个有限的数据库操作序列构成,该数据库操作序列中包含了对数据库中不同数据对象或操作数据的读写操作;此时数据库事务中包含的每一数据库操作(读/写操作)均可以通过用户输入的相应SQL操作语句来表示。可选的,SQL操作语句是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统,同时也是数据库脚本文件的扩展名;其中,本实施例中的目标SQL操作语句为数据库事务中第一条写操作对应的SQL操作语句。
可选的,用户当前需要通过一个数据库事务来执行对应的数据库操作时,会在客户端上执行相应的触发操作来启动一个数据库事务,此时客户端检测到当前启动的数据库事务,此时用户会在当前启动的数据库事务下陆续输入本次待执行的各个数据库操作对应的SQL操作语句,如图1B所示,客户端可以依次获取当前启动的数据库事务中用户陆续输入的SQL操作语句,并依次对获取的SQL操作语句进行解析,得到当前SQL操作语句的操作类型,并进行标记,以确定该SQL操作语句为读操作还是写操作,进而确定出当前启动的数据库事务中第一条写操作对应的SQL操作语句,作为本实施例中的目标SQL操作语句,以便后续根据该目标SQL操作语句向备份数据库和主数据库分发对应的SQL操作语句。
此外,本实施例在检测到当前启动的数据库事务之前,用户首先需要登录该数据库,此时客户端会根据用户的登录信息通过接口层分别创建到主数据库的会话S1,以及到备份数据库的映射会话S2,以便建立客户端分别与主数据库和备份数据库的通信交互。
S120,将目标SQL操作语句之前的第一SQL操作语句分发给备份数据库,将目标SQL操作语句和目标SQL操作语句之后的第二SQL操作语句分发给主数据库,以使备份数据库执行第一SQL操作语句,主数据库执行目标SQL操作语句和第二SQL操作语句。
具体的,在确定当前启动的数据库事务中的目标SQL操作语句后,根据该目标SQL操作语句的位置可以将数据库事务中的全部SQL操作语句划分为不同的执行类型,此时如图1B所示,客户端可以依次获取当前启动的数据库事务中用户陆续输入的SQL操作语句,并依次对获取的SQL操作语句进行解析,得到当前SQL操作语句的操作类型,此时在未解析到第一条写操作对应的SQL操作语句之前,则一直将已解析为读操作的SQL操作语句(本实施例中的第一SQL操作语句)分发给备份数据库,由备份数据库执行;直到解析到当前SQL操作语句为第一条写操作对应的SQL操作语句时,则将当前SQL操作语句和在当前SQL操作语句之后再次获取的全部SQL操作语句(本实施例中的第二SQL操作语句)分发给主数据库,此时目标SQL操作语句和第二SQL操作语句中可能既包括读操作,也包括写操作,由主数据库执行,进而保证主数据库在执行第二SQL操作语句中的读操作时,能够读取出通过执行该数据库事务中的写操作而修改后的操作数据,实现在主数据库和备份数据库上执行读写操作的数据一致性,保证数据读取的准确性。示例性的,本实施例中客户端会通过预先配置的Java数据库连接(Java DataBase Connectivity,JDBC)接口等数据库访问接口,根据数据库事务中的目标SQL操作语句自动向主数据库和备份数据库分发对应的SQL操作语句,此时将主数据库和备份数据库看做一个整体统一执行当前启动的数据库事务,实现全局的多版本事务并发控制,此时数据库事务的执行结果与单独在一个数据库实例上的执行结果完全一致,保证主数据库和备份数据库上访问数据的一致性。
此外,本实施例的主数据库和备份数据库上均会维护一个对应的全局活动事务链表,该全局活动事务链表中包括多个活动事务,也就是当前正在执行且未提交的数据库事务,数据库事务在启动后插入到该全局活动事务链表中,在提交后从该全局活动事务链表中删除;同时本实施例中在根据执行的SQL操作语句生成的操作重做日志的基础上,还增加数据库事务的启动重做日志和提交重做日志,主数据库在启动一个数据库事务时,备份数据库会根据接收到的该数据库事务的启动重做日志重演启动一个对应的数据库事务,并在备份数据库的全局活动事务链表中插入该数据库事务,保证主数据库与备份数据库上的全局活动事务链表一致。具体的,主数据库和备份数据库在执行对应的SQL操作语句中的读操作时,会根据各自的全局活动事务链表确定出当前的活动事务,进而读取活动事务之前时刻的数据库中的操作数据,也就是当前启动的数据库事务对已提交状态的数据库事务修改的操作数据可见,对正在执行的未提交状态的数据库事务修改的操作数据不可见,进而保证数据读取的一致性,在主备环境下实现读写分离,满足读写分离下的事务隔离级特性。
本实施例提供的技术方案,客户端将当前启动的数据库事务中在第一条写操作对应的目标SQL操作语句之前的第一SQL操作语句分发给备份数据库,此时第一SQL操作语句均为读操作,由备份数据库执行第一SQL操作语句来读取对应的操作数据,此时该数据库事务未对任一数据进行更改,使得客户端访问备份数据库与访问主数据库的数据一致,同时将该数据库事务中的目标SQL操作语句和在目标SQL操作语句之后的第二SQL操作语句分发给主数据库,此时目标SQL操作语句和第二SQL操作语句中可能存在写操作和读操作两种,由主数据库执行目标SQL操作语句和第二SQL操作语句来得到对应的执行结果,使得通过主数据库能够读取执行该数据库事务后已修改的操作数据,提高数据读取的准确性。
实施例二
图2A为本发明实施例二提供的一种数据操作的优化方法的流程图,图2B为本发明实施例二提供的数据操作的优化过程的原理示意图。本实施例是在上述实施例的基础上进行优化。可选的,本实施例中主要对数据操作的优化还存在的其他操作的具体过程进行详细的解释说明。
可选的,如图2A所示,本实施例具体可以包括如下步骤:
S210,确定当前启动的数据库事务中的目标SQL操作语句。
S220,将目标SQL操作语句之前的第一SQL操作语句分发给备份数据库,将目标SQL操作语句和目标SQL操作语句之后的第二SQL操作语句分发给主数据库,以使备份数据库执行第一SQL操作语句,主数据库执行目标SQL操作语句和第二SQL操作语句。
S230,接收备份数据库根据第一SQL操作语句读取的操作数据,并转发给主数据库。
可选的,由于第一SQL操作语句均为读操作,因此备份数据库可以根据自身的全局活动事务链表中的活动事务,执行该第一SQL操作语句,进而读取出活动事务之前时刻的未修改的操作数据,而由于第二SQL操作语句中可能会依赖第一SQL操作语句的读取结果,因此为了提高第二SQL操作语句的执行效率,客户端会通过预先建立的映射会话获取到备份数据库读取的操作数据,并将该操作数据发送给主数据库,由主数据库在执行目标SQL操作语句和第二SQL操作语句时,如果需要使用到由备份数据库执行的第一SQL操作语句读取的操作数据,则可以直接在本地获取,进而在保证目标SQL操作语句和第二SQL操作语句的执行准确性的基础上,提高主数据库的执行效率。为了进一步提高客户端对于备份数据库读取的操作数据的转发效率,客户端可以根据目标SQL操作语句和第二SQL操作语句中的解析情况,在备份数据库读取的全部操作数据中查找出主数据库涉及执行的读取变量对应的操作数据,从而仅将主数据库涉及的操作数据转发给主数据库,减少客户端对于备份数据库读取的操作数据的转发数量,提高了客户端的转发效率。
具体的,以下述两个数据库事务的具体执行过程为例进行说明:
其中,数据库事务trx1为更新语句,属于写操作,在主数据库执行;数据库事务trx2是一个存储过程语句块,其中既包含查询(读)操作,也包含插入(写)操作;在现有的读写分离系统中,若语句块中只要有写操作,则整个语句块全部在主数据库执行,而在本实施例中,数据库事务trx2的select语句在备份数据库执行,insert语句作为写操作转到主数据库执行,并且insert语句的插入值是从之前执行的select结果集中获取的。
此时数据库事务trx1和trx2并发执行时存在下述两种情况:
1)数据库事务trx2执行select语句时,数据库事务trx1的commit还未执行,也就是数据库事务trx2启动时,数据库事务trx1为活动事务。
此时,数据库事务trx2的select语句在备份数据库执行,数据库事务trx1在主数据库执行,由于主数据库和备份数据库上的全局活动事务链表一致,不会查询到未提交事务修改的数据,因此trx2的查询结果是trx1更新之前的值,为1;备份数据库得到的查询结果var_x为1,接口层将备份数据库读取的var_x的值转发给主数据库,之后数据库事务trx2中的insert操作在主数据库执行,插入的var_x值为1;本实施例中的执行结果与将数据库事务trx2的整个语句块全部在主数据库上的执行结果是一致的。
2)数据库事务trx2执行select语句时,数据库事务trx1的commit已经执行完毕,且commit的重做日志已经在备份数据库重演完成,因此数据库事务trx2启动时,数据库事务trx1已经提交。
此时,数据库事务trx2的select语句在备份数据库执行的查询结果是数据库事务trx1更新t表后的值,var_x=2;接口层将备份数据库读取的var_x的值转发给主数据库,之后数据库事务trx2中的insert操作在主数据库执行,插入的var_x值为2;本实施例中的执行结果与将数据库事务trx2的整个语句块全部在主数据库上的执行结果是一致的。
S240,根据主数据库对数据库事务的提交响应,同步向主数据库和备份数据库发送数据库事务的提交完成通知,以使主数据库和备份数据库在对应的全局活动事务链表中删除该数据库事务。
可选的,为了保证主数据库和备份数据库之间的数据一致性,备份数据库需要同步更新主数据库中修改的操作数据,因此主数据库在执行目标SQL操作语句和第二SQL操作语句的同时,会生成各个SQL操作语句对应的操作重做日志,在提交数据库事务时,也会生成该数据库事务对应的提交重做日志,如图2B所示,在主数据库执行完全部的SQL操作语句,并提交该数据库事务时,会将相应的操作重做日志和提交重做日志均发送给备份数据库进行顺序重演,以保证备份数据库与主数据库的数据一致性,此时由于主数据库和备份数据库上维护有一致的全局活动事务链表,在数据库事务提交后,会在全局活动事务链表删除该数据库事务,因此在备份数据库进行日志重演的过程中,主数据库的提交操作一直处于挂起等待状态,主数据库必须等到备份数据库完成日志重演后同步提交当前的数据库事务;此时备份数据库在完成日志重演后,会向主数据库发送对应的重演完成通知,以指示主数据库可以向客户端响应提交该数据库事务;客户端接收到主数据库对数据库事务的提交响应,同步向主数据库和备份数据库发送该数据库事务的提交完成通知,以使主数据库和备份数据库同步确定数据库事务已经完成提交操作,进而在各自对应的全局活动事务链表中删除该数据库事务,保证主数据库和备份数据库上的全局活动事务链表的一致性。
本实施例提供的技术方案,客户端将当前启动的数据库事务中在第一条写操作对应的目标SQL操作语句之前的第一SQL操作语句分发给备份数据库,此时第一SQL操作语句均为读操作,由备份数据库执行第一SQL操作语句来读取对应的操作数据,此时该数据库事务未对任一数据进行更改,使得客户端访问备份数据库与访问主数据库的数据一致,同时将该数据库事务中的目标SQL操作语句和在目标SQL操作语句之后的第二SQL操作语句分发给主数据库,此时目标SQL操作语句和第二SQL操作语句中可能存在写操作和读操作两种,由主数据库执行目标SQL操作语句和第二SQL操作语句来得到对应的执行结果,使得通过主数据库能够读取执行该数据库事务后已修改的操作数据,提高数据读取的准确性。
实施例三
图3为本发明实施例三提供的一种数据操作的优化装置的结构示意图,如图3所示,该装置可以包括:
目标语句确定模块310,用于确定当前启动的数据库事务中的目标SQL操作语句,该目标SQL操作语句为数据库事务中第一条写操作对应的SQL操作语句;
语句分发模块320,用于将目标SQL操作语句之前的第一SQL操作语句分发给备份数据库,将目标SQL操作语句和目标SQL操作语句之后的第二SQL操作语句分发给主数据库,以使备份数据库执行第一SQL操作语句,主数据库执行目标SQL操作语句和第二SQL操作语句。
本实施例提供的技术方案,客户端将当前启动的数据库事务中在第一条写操作对应的目标SQL操作语句之前的第一SQL操作语句分发给备份数据库,此时第一SQL操作语句均为读操作,由备份数据库执行第一SQL操作语句来读取对应的操作数据,此时该数据库事务未对任一数据进行更改,使得客户端访问备份数据库与访问主数据库的数据一致,同时将该数据库事务中的目标SQL操作语句和在目标SQL操作语句之后的第二SQL操作语句分发给主数据库,此时目标SQL操作语句和第二SQL操作语句中可能存在写操作和读操作两种,由主数据库执行目标SQL操作语句和第二SQL操作语句来得到对应的执行结果,使得通过主数据库能够读取执行该数据库事务后已修改的操作数据,提高数据读取的准确性。
进一步的,上述数据操作的优化装置,还可以包括:
操作数据转发模块,用于接收备份数据库根据第一SQL操作语句读取的操作数据,并转发给主数据库。
进一步的,上述数据操作的优化装置,还可以包括:
事务提交通知模块,用于根据主数据库对数据库事务的提交响应,同步向主数据库和备份数据库发送数据库事务的提交完成通知,以使主数据库和备份数据库在对应的全局活动事务链表中删除数据库事务。
本实施例提供的数据操作的优化装置可适用于上述任意实施例提供的数据操作的优化方法,具备相应的功能和有益效果。
实施例四
图4A为本发明实施例四提供的一种数据库系统的原理示意图,图4B为本发明实施例四提供的通过数据库系统执行数据操作的优化方法的流程图。本实施例是在上述实施例的基础上进行优化。具体的,如图4A所示,该数据库系统包括:主数据库410和备份数据库420。
具体的,主数据库410和备份数据库420上均维护有对应的全局活动事务链表,以通过全局活动事务链表的多版本并发控制事务对操作数据的可见性判断;数据库事务启动后插入对应的全局活动事务链表,提交后从该全局活动事务链表中删除,同时当前启动的数据库事务通过判断全局活动事务链表中的活动事务,对已提交状态的数据库事务修改的操作数据可见,对未提交状态的数据库事务修改的操作数据不可见。
同时,主数据库410在数据库事务的执行过程中,除了生成对应的操作重做日志外,还会在数据库事务启动和提交时生成对应的启动重做日志和提交重做日志,增加重做日志的类型,进而在备份数据库420上重演数据库事务对应的各类型下的重做日志,以在备份数据库420上启动相应的数据库事务,并执行相同的数据操作,保证主数据库410和备份数据库420上的全局活动事务链表的一致性。
具体的,本实施例对于在客户端、主数据库410和备份数据库420之间执行当前启动的数据库事务中的各个读写操作对应的具体交互过程进行进一步的解释说明;可选的,如图4B所示,本实施例可以包括如下步骤:
S401,客户端确定当前启动的数据库事务中的目标SQL操作语句。
S402,客户端向备份数据库发送数据库事务中在目标SQL操作语句之前的第一SQL操作语句。
S403,客户端向主数据库发送数据库事务中的目标SQL操作语句和在目标SQL操作语句之后的第二SQL操作语句。
S404,备份数据库执行第一SQL操作语句,得到对应读取的操作数据。
S405,备份数据库向客户端发送读取的操作数据。
S406,客户端向主数据库转发读取的操作数据。
S407,主数据库根据读取的操作数据,执行目标SQL操作语句和第二SQL操作语句。
S408,主数据库在执行过程中生成对应的操作重做日志,并在检测到数据库事务提示时,生成对应的提交重做日志。
S409,主数据库向备份数据库发送数据库事务的操作重做日志和提交重做日志。
S410,备份数据库顺序重演数据库事务的操作重做日志和提交重做日志。
S411,主数据库在备份数据库的重演过程中,设置数据库事务的提交操作处于挂起等待状态。
S412,备份数据库向主数据库发送重演完成通知。
S413,主数据库向客户端发送数据库事务的提交响应。
S414,客户端向主数据库发送数据库事务的提交完成通知。
S415,客户端向备份数据库发送数据库事务的提交完成通知。
S416,主数据库在对应的全局活动事务链表中删除数据库事务。
S417,备份数据库在对应的全局活动事务链表中删除数据库事务。
本实施例提供的技术方案,客户端将当前启动的数据库事务中在第一条写操作对应的目标SQL操作语句之前的第一SQL操作语句分发给备份数据库,此时第一SQL操作语句均为读操作,由备份数据库执行第一SQL操作语句来读取对应的操作数据,此时该数据库事务未对任一数据进行更改,使得客户端访问备份数据库与访问主数据库的数据一致,同时将该数据库事务中的目标SQL操作语句和在目标SQL操作语句之后的第二SQL操作语句分发给主数据库,此时目标SQL操作语句和第二SQL操作语句中可能存在写操作和读操作两种,由主数据库执行目标SQL操作语句和第二SQL操作语句来得到对应的执行结果,使得通过主数据库能够读取执行该数据库事务后已修改的操作数据,提高数据读取的准确性。
实施例五
图5为本发明实施例五提供的一种数据操作的优化系统的结构示意图。参照图5,该数据操作的优化系统包括:客户端510和本发明任意实施例提供的数据库系统520。
具体的,客户端510将当前启动的数据库事务中目标SQL操作语句之前的第一SQL操作语句分发给数据库系统520中的备份数据库521,将数据库事务中的目标SQL操作语句和目标SQL操作语句之后的第二SQL操作语句分发给数据库系统520中的主数据库522,其上设置有本发明任意实施例提供的数据操作的优化装置;数据库系统520的功能具体参见上述发明实施例提供的数据库系统中的具体介绍,在此不作详细说明。
实施例六
图6为本发明实施例六提供的一种设备的结构示意图。如图6所示,该设备包括处理器60、存储装置61和通信装置62;设备中处理器60的数量可以是一个或多个,图6中以一个处理器60为例;设备的处理器60、存储装置61和通信装置62可以通过总线或其他方式连接,图6中以通过总线连接为例。
存储装置61作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的数据操作的优化方法对应的模块。处理器60通过运行存储在存储装置61中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的数据操作的优化方法。
存储装置61可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储装置61可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储装置61可进一步包括相对于处理器60远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
通信装置62可用于实现设备间网络连接或者移动数据连接。
本实施例提供的一种设备可用于执行上述任意实施例提供的数据操作的优化方法,具备相应的功能和有益效果。
实施例七
本发明实施例七还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时可实现上述任意实施例中的数据操作的优化方法。该方法具体可以包括:
确定当前启动的数据库事务中的目标SQL操作语句,该目标SQL操作语句为数据库事务中第一条写操作对应的SQL操作语句;
将目标SQL操作语句之前的第一SQL操作语句分发给备份数据库,将目标SQL操作语句和目标SQL操作语句之后的第二SQL操作语句分发给主数据库,以使备份数据库执行第一SQL操作语句,主数据库执行目标SQL操作语句和第二SQL操作语句。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的数据操作的优化方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述数据操作的优化装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种数据操作的优化方法,其特征在于,包括:
确定当前启动的数据库事务中的目标结构化查询语言SQL操作语句,所述目标SQL操作语句为所述数据库事务中第一条写操作对应的SQL操作语句;
将所述目标SQL操作语句之前的第一SQL操作语句分发给备份数据库,将所述目标SQL操作语句和所述目标SQL操作语句之后的第二SQL操作语句分发给主数据库,以使所述备份数据库执行所述第一SQL操作语句,所述主数据库执行所述目标SQL操作语句和所述第二SQL操作语句;
接收所述备份数据库根据所述第一SQL操作语句读取的操作数据,并转发给所述主数据库;
所述接收所述备份数据库根据所述第一SQL操作语句读取的操作数据,并转发给所述主数据库,包括:
根据所述目标SQL操作语句和所述第二SQL操作语句中的解析情况,在所述备份数据库读取的全部操作数据中查找出主数据库涉及的操作数据;
将所述主数据库涉及的操作数据转发给所述主数据库。
2.根据权利要求1所述的方法,其特征在于,还包括:
根据所述主数据库对所述数据库事务的提交响应,同步向所述主数据库和所述备份数据库发送所述数据库事务的提交完成通知,以使所述主数据库和所述备份数据库在对应的全局活动事务链表中删除所述数据库事务。
3.一种数据库系统,其特征在于,包括:主数据库和备份数据库;
所述备份数据库执行客户端分发的当前启动的数据库事务中目标SQL操作语句之前的第一SQL操作语句,所述目标SQL操作语句为所述数据库事务中第一条写操作对应的SQL操作语句;
所述主数据库执行所述客户端分发的所述数据库事务中的目标SQL操作语句和所述目标SQL操作语句之后的第二SQL操作语句;
所述备份数据库还用于:向所述客户端发送通过执行所述第一SQL操作语句对应读取的操作数据;
所述主数据库具体用于:根据所述客户端转发的所述操作数据,执行所述目标SQL操作语句和所述第二SQL操作语句;
其中,所述客户端转发的所述操作数据为:
所述客户端根据所述目标SQL操作语句和所述第二SQL操作语句中的解析情况,在所述备份数据库读取的全部操作数据中查找出的主数据库涉及的操作数据。
4.根据权利要求3所述的数据库系统,其特征在于,所述主数据库还用于:在检测到所述数据库事务启动时,向所述备份数据库发送所述数据库事务的启动重做日志,在执行过程中生成对应的操作重做日志,并在检测到所述数据库事务提示时,向所述备份数据库发送所述数据库事务的操作重做日志和提交重做日志。
5.根据权利要求4所述的数据库系统,其特征在于,所述备份数据库还用于:顺序重演所述数据库事务的操作重做日志和提交重做日志,并向所述主数据库发送重演完成通知;
所述主数据库还用于:根据所述重演完成通知向所述客户端发送所述数据库事务的提交响应。
6.一种数据操作的优化系统,其特征在于,包括:客户端和如权利要求3-5任一项所述的数据库系统;
所述客户端将当前启动的数据库事务中目标SQL操作语句之前的第一SQL操作语句分发给备份数据库,将所述数据库事务中的目标SQL操作语句和所述目标SQL操作语句之后的第二SQL操作语句分发给主数据库,所述目标SQL操作语句为所述数据库事务中第一条写操作对应的SQL操作语句;
所述客户端接收所述备份数据库根据所述第一SQL操作语句读取的操作数据,并转发给所述主数据库;
所述客户端接收所述备份数据库根据所述第一SQL操作语句读取的操作数据,并转发给所述主数据库,包括:
根据所述目标SQL操作语句和所述第二SQL操作语句中的解析情况,在所述备份数据库读取的全部操作数据中查找出主数据库涉及的操作数据;
将所述主数据库涉及的操作数据转发给所述主数据库。
7.一种设备,其特征在于,所述设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1或2所述的数据操作的优化方法。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1或2所述的数据操作的优化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910446756.1A CN110188114B (zh) | 2019-05-27 | 2019-05-27 | 一种数据操作的优化方法、装置、系统、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910446756.1A CN110188114B (zh) | 2019-05-27 | 2019-05-27 | 一种数据操作的优化方法、装置、系统、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110188114A CN110188114A (zh) | 2019-08-30 |
CN110188114B true CN110188114B (zh) | 2021-09-10 |
Family
ID=67718036
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910446756.1A Active CN110188114B (zh) | 2019-05-27 | 2019-05-27 | 一种数据操作的优化方法、装置、系统、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110188114B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110781214A (zh) * | 2019-09-26 | 2020-02-11 | 金蝶软件(中国)有限公司 | 数据库读写方法、装置、计算机设备和存储介质 |
CN111046100B (zh) * | 2019-11-25 | 2024-03-08 | 武汉达梦数据库股份有限公司 | 一种关系型数据库到非关系型数据库的同步方法和系统 |
CN112860788B (zh) * | 2019-11-28 | 2024-07-02 | 阿里云计算有限公司 | 事务处理方法、装置、计算机系统及可读存储介质 |
CN112307054B (zh) * | 2020-11-18 | 2023-02-28 | 太原理工大学 | 一种双活数据库主备服务器读写方法 |
CN112765198A (zh) * | 2020-12-31 | 2021-05-07 | 金蝶软件(中国)有限公司 | 数据库语句处理方法、装置、计算机设备和存储介质 |
CN112764996B (zh) * | 2021-01-27 | 2023-01-17 | 上海英方软件股份有限公司 | 一种数据库容灾环境下对目标库的会话监控的方法及装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9361306B1 (en) * | 2012-12-27 | 2016-06-07 | Emc Corporation | Managing concurrent write operations to a file system transaction log |
CN104391873A (zh) * | 2014-10-29 | 2015-03-04 | 上海达梦数据库有限公司 | 数据库操作分离方法和系统 |
US20160342646A1 (en) * | 2015-05-20 | 2016-11-24 | International Business Machines Corporation | Database query cursor management |
US10268743B2 (en) * | 2015-06-19 | 2019-04-23 | Sap Se | Distributed database transaction protocol |
CN107122357A (zh) * | 2016-02-24 | 2017-09-01 | 阿里巴巴集团控股有限公司 | 数据库读写分离方法、装置和系统 |
CN106126600A (zh) * | 2016-06-21 | 2016-11-16 | 浪潮电子信息产业股份有限公司 | 一种执行读写分离的方法、装置及系统 |
US10872074B2 (en) * | 2016-09-30 | 2020-12-22 | Microsoft Technology Licensing, Llc | Distributed availability groups of databases for data centers |
CN110955719B (zh) * | 2018-09-27 | 2023-08-01 | 阿里云计算有限公司 | 一种数据存取处理设备、系统和方法 |
CN109491961B (zh) * | 2018-10-22 | 2022-02-18 | 郑州云海信息技术有限公司 | 一种文件系统快照的方法及快照设备 |
-
2019
- 2019-05-27 CN CN201910446756.1A patent/CN110188114B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110188114A (zh) | 2019-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110188114B (zh) | 一种数据操作的优化方法、装置、系统、设备和存储介质 | |
US11176140B2 (en) | Updating a table using incremental and batch updates | |
EP3295332B1 (en) | Direct-connect functionality in a distributed database grid | |
US10936578B2 (en) | Client-driven commit of distributed write transactions in a database environment | |
CN110502507B (zh) | 一种分布式数据库的管理系统、方法、设备和存储介质 | |
EP3213230B1 (en) | Efficient maintenance of column store indexes on memory-optimized tables | |
US9760584B2 (en) | Systems and methods for supporting inline delegation of middle-tier transaction logs to database | |
EP3170109B1 (en) | Method and system for adaptively building and updating column store database from row store database based on query demands | |
EP2653986B1 (en) | Client-side caching of a database transaction token. | |
CN111433764A (zh) | 全局一致分片式oltp系统的高吞吐量分布式事务管理及其实现方法 | |
CN111190935B (zh) | 数据读取方法、装置、计算机设备及存储介质 | |
US20220229822A1 (en) | Data processing method and device for distributed database, storage medium, and electronic device | |
US20160314177A1 (en) | Method and apparatus of maintaining data for online analytical processing in a database system | |
CN106354732B (zh) | 一种支持并发协同的离线数据版本冲突解决方法 | |
US20230342353A1 (en) | Targeted sweep method for key-value data storage | |
US20210365439A1 (en) | Distributed transaction execution in distributed databases | |
WO2016085488A1 (en) | Database transfer of changes | |
US11714794B2 (en) | Method and apparatus for reading data maintained in a tree data structure | |
US11625503B2 (en) | Data integrity procedure | |
US12007985B2 (en) | Executing transactions on distributed databases | |
WO2023202394A1 (zh) | 分区表建立、针对分区表的数据写入、读取方法及装置 | |
US8812468B2 (en) | Database management method | |
CN112867999A (zh) | 基于版本的表锁定 | |
CN111352936A (zh) | Es重建索引的方法、存储介质 | |
CN110168514B (zh) | 一种事务处理方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |