CN112534419A - 到备用数据库的自动查询卸载 - Google Patents
到备用数据库的自动查询卸载 Download PDFInfo
- Publication number
- CN112534419A CN112534419A CN201980052057.7A CN201980052057A CN112534419A CN 112534419 A CN112534419 A CN 112534419A CN 201980052057 A CN201980052057 A CN 201980052057A CN 112534419 A CN112534419 A CN 112534419A
- Authority
- CN
- China
- Prior art keywords
- database
- query
- database system
- backup
- primary
- 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.)
- Pending
Links
- 238000011156 evaluation Methods 0.000 claims abstract description 6
- 238000000034 method Methods 0.000 claims description 33
- 230000008859 change Effects 0.000 claims description 25
- 230000004044 response Effects 0.000 claims description 19
- 230000003111 delayed effect Effects 0.000 claims description 9
- 230000001960 triggered effect Effects 0.000 abstract description 6
- 230000003362 replicative effect Effects 0.000 abstract description 5
- 238000004891 communication Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 11
- 230000002085 persistent effect Effects 0.000 description 11
- 238000012545 processing Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 7
- 201000006681 severe congenital neutropenia Diseases 0.000 description 6
- 125000000858 thiocyanato group Chemical group *SC#N 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000008520 organization Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000001131 transforming effect Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 239000002253 acid Substances 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
-
- 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
-
- 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/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- 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
- G06F16/2435—Active constructs
-
- 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
- G06F16/2457—Query processing with adaptation to user needs
-
- 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/25—Integrating or interfacing systems involving database management systems
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/273—Asynchronous replication or reconciliation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Operations Research (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
实施例允许主数据库系统(“主”)自动检测可以被卸载到备用数据库系统(“备用”)的定向到主数据库的查询,然后将符合卸载要求的查询自动卸载到备用。主基于复制主数据库的每个备用内的最新的数据库对象的记录来识别符合卸载要求的查询。基于来自每个备用的心跳消息来更新最新的备用对象的记录,并提交对于主上的事务的时间戳。通过一个或多个触发条件来触发对查询是否符合卸载要求的评估,该触发条件包括:在查询中包括卸载优化器提示、查询的估计运行时间等。实施例还允许对主数据库中特定更改的数据进行卸载查询,以在备用数据库上访问对主数据库中的特定数据做出的未提交的更改。
Description
相关申请的交叉引用
本申请与于2018年1月31日提交的题为“Method And System For SupportingData Consistency On An Active Standby Database After DML Redirection To APrimary Database”的美国申请No.15/885,281相关,该申请的全部内容通过引用并入本文,如同在此完全阐述一样。
技术领域
本发明涉及在主数据库上发起的查询的自动检测并将该查询卸载到数据库的副本,而不损失查询结果的正确性。
背景技术
本节中描述的方法是可以采用的方法,但不一定是先前已经设想或采用的方法。因此,除非另有指示,否则不应当仅因为本节中所述的任何方法包括在本节中而将其假设为现有技术。
在主数据库处的数据损坏或系统故障的情况下,可以将主数据库的一个或多个物理或逻辑拷贝维护为称为备用数据库的单独数据库。因此,如果主数据库发生故障,那么可以执行到备用数据库的故障转移。通常,在远程连接的单独数据库系统中维护主数据库和备用数据库。例如,图1描绘了通信耦合的多个数据库系统。参考图1,主数据库系统110维护主数据库132,并且备用数据库系统140维护备用数据库162。
主数据库系统和备用数据库系统可以各自对应于许多不同类型的数据库系统中的任何一个,诸如集群数据库系统(如针对备用数据库系统140所描绘的)、单服务器数据库系统(如针对主数据库系统110所描绘的)和/或多租户数据库系统(在图1中未绘出)。在图1的示例中,主数据库系统110包括数据库服务器计算设备120和持久性存储装置130。数据库服务器计算设备120运行数据库服务器实例122,该数据库服务器实例122是与主数据库132交互的处理和存储器的集合。数据库服务器实例122实现主数据库系统110的服务器侧功能。
备用数据库系统140包括数据库服务器计算设备150A-N和持久性存储装置160(它们可以或可以不分布在数据库服务器计算设备150A-N的持久性存储装置之间)。“150N”以及本文中的任何其它标号中的标签“N”表示在实施例中可以存在或使用任何数量的元素、项目或项目集,如在“1至n个项目”中那样。数据库服务器计算设备150A-N对应于各自运行数据库服务器实例152A-N之一的集群节点。实例152A-N中的每个实例都是与备用数据库162交互的处理和存储器的集合。实例152A-N共同实现备用数据库系统140的服务器侧功能。备用数据库服务器计算设备150A-N可以经由互连(未示出)彼此通信。
除了驻留在持久性存储装置130和持久性存储装置160上之外,如图1中所描绘的,主数据库132和备用数据库162可以各自驻留在易失性存储装置(诸如在设备120和/或设备150A-N中的任何一个设备上运行的易失性存储器)中。此外,主数据库132和备用数据库162可以各自存储在虚拟盘和/或物理盘集上。
维护数据库之间的一致性
维护主数据库和备用数据库之间的一致性涉及在备用数据库上复制对主数据库的更改。维护主数据库的物理副本的备用数据库将以逐块(block-by-block)级别来复制主数据库。因此,物理备用数据库中的系统更改号(SCN)表示与正要复制的主数据库的对应SCN相同的数据库状态。图2是描绘用于维护主数据库和备用数据库之间的一致性的方法的框图,其中备用数据库是主数据库的物理副本。
参考图2,(一个或多个)事务202实现了对主数据库132的一个或多个更改。主数据库系统110在更改记录206A-N中记录该一个或多个更改,并将这些更改记录发送到备用数据库系统140用于复制。示例更改记录包括重做记录或重做信息(如在2007年1月29日提交的美国专利申请No.11/818,975;2010年8月30日提交的美国专利申请No.12/871,805;2011年6月15日提交的美国专利申请No.13/161,315;以及2014年7月21日提交的美国专利申请No.14/337,179中所描述的),这些申请中的每个申请的全部内容通过引用并入本文。
(一个或多个)事务202基于被处理为单个逻辑操作的一条或多条指令来实现对主数据库132的一个或多个更改。可以将多个数据操纵语言(DML)操作(诸如结构化查询语言命令“插入(INSERT)”、“更新(UPDATE)”和“删除(DELETE)”)以及对数据的查询也处理作为单个事务。由特定事务在数据库数据内实现的任何更改在提交事务之前只可由事务本身查看,然后在事务提交时被保留(并使得其一般可见)。未能提交的(一个或多个)事务202可以经历“回滚”操作,该“回滚”操作恢复数据的先前版本。
当在主数据库132处实现更改时,主数据库的当前系统更改号(SCN)增加。主数据库的SCN表示与主数据库的特定状态相对应的逻辑时间。例如,当特定事务开始时,主数据库的当前SCN为“1”。当特定事务做出特定更改时,主数据库的当前SCN前进到“2”。当特定事务提交时,主数据库的当前SCN前进到“3”。
针对备用数据库执行查询
用户可以选择在维护主数据库的主数据库系统上或在维护(物理或逻辑地)复制主数据库的备用数据库的备用数据库系统上发起查询。一般地,虽然备用数据库系统有任何可用的带宽用于查询执行,但是直接发布到主数据库系统的查询必须由主数据库系统来履行。由此,备用数据库系统的计算和查询能力无法自动用于卸载主数据库系统上运行的工作负载的任何部分。
用户可以通过连接到数据库服务器实例152A并直接向数据库服务器实例发布数据库命令来在备用数据库系统140上发起查询。作为另一个示例,用户可以通过连接到主数据库系统110(该主数据库系统110维护到备用数据库系统140的数据库链接)并且将数据库命令(该数据库命令通过数据库链接明确地定向)递交到备用数据库系统来发起对备用数据库系统140的查询。
为了说明,主数据库系统110维护到备用数据库系统140的数据库链接,其中在主数据库系统110中唯一识别备用数据库系统140的名称是standby_system_140。创建这样的数据库链接自动在备用数据库系统140上建立新会话,其中通过数据库链接发布的所有数据库命令都将运行。因此,用户可以通过将查询递交到主数据库服务器实例122来在备用数据库系统140上发起以下查询,其中查询所引用的Employee@standby_system_140表示备用数据库162中雇员(Employee)表的拷贝:
SELECT*FROM Employee@standby_system_140
WHERE department_id=30;
当该查询被递交给实例122时,该查询被发送到备用数据库系统140,并在由备用数据库系统140为数据库链接建立的会话内在备用数据库162内的雇员表的拷贝上运行。备用数据库系统140经由先前建立的数据库链接将查询结果返回给主数据库系统110,然后主数据库系统110将那些结果返回给发起查询的用户。
可以针对备用数据库而不是对应的主数据库执行只读事务,使得为其它任务释放主数据库资源。然而,因为备用数据库系统从主数据库复制数据,所以一般不应当在备用数据库系统中发起读写事务。因此,读写事务的工作负载落在主数据库系统上。
此外,因为备用数据库复制已在主数据库上实现了的更改,所以备用数据库通常滞后于它的主数据库。换言之,备用数据库的状态持续赶上主数据库的状态。备用数据库的滞后阻碍了将主数据库中发起的查询卸载到备用数据库的能力。例如,如果主数据库的当前SCN在100处,那么备用数据库的最新可读SCN可能在75处,并且如果主数据库的当前SCN前进到120处,那么备用数据库的最新可读SCN可能前进到100处。
有利的是,在主数据库级别,自动检测可以被重新定向到备用数据库的查询,然后将检测到的查询自动卸载到备用数据库系统,以便尽可能快地运行卸载的查询并且节省主数据库系统的资源。
附图说明
在附图中:
图1描绘了可以在其上实现实施例的示例主数据库系统和备用数据库系统。
图2是描绘了用于维护多个数据库之间的一致性的方法的框图。
图3描绘了主数据库系统自动确定是否将定向到主数据库的特定查询卸载到目标备用数据库系统,然后自动将查询重新定向到目标备用数据库系统而无需人工干预的流程图。
图4描绘了执行查询的示例请求。
图5A-5C描绘了示例最近提交表的各个状态,该示例最近提交表列出了数据库对象的最近提交时间,并且还指示了在每个备用数据库系统内哪些数据库对象是最新的。
图6描绘了具有一个或多个相同会话参数的分别由主数据库系统和备用数据库系统运行的会话。
图7是可以在其上实现实施例的计算机系统的框图。
图8是可以用于控制计算机系统的操作的基本软件系统的框图。
具体实施方式
在以下描述中,出于解释的目的,阐述了许多具体细节以便提供对本发明的透彻理解。然而,将清楚的是,可以在没有这些具体细节的情况下实践本发明。在其它实例中,以框图形式示出了众所周知的结构和设备,以避免不必要地使本发明晦涩难懂。
总体概述
实施例允许主数据库系统自动地(从定向到主数据库的只读事务和读写事务两者中)检测可以被卸载到备用数据库的查询而无需人工干预,然后将检测到的查询自动卸载到目标备用数据库系统。具体地,备用数据库系统维护备用数据库,该备用数据库与由对应的主数据库系统维护的主数据库分开,但是该备用数据库复制主数据库中的数据。
根据一个或多个实施例,主数据库系统基于最近提交对象来确定给定查询是否是符合卸载要求的(即符合被卸载到可用的备用数据库系统的要求),该最近提交对象列出了数据库对象的最近提交时间,并且还指示了在每个备用数据库系统内哪些数据库对象是最新的。根据实施例,最近提交对象可以是任何保存的或内存数据结构,包括数据库表、列表等。
根据实施例,主数据库系统维护最近提交表,该最近提交表记录了SCN,在该SCN处提交了对主数据库中的数据库对象的更改。根据实施例,对于每个数据库对象,最近提交表还包括标志集,指示在一个或多个备用数据库系统中的每一个备用数据库系统上的相应数据库对象的拷贝是否包括对数据库对象做出的最新更改(即,备用数据库对象是“最新的”)。利用这样的最近提交表通常允许主数据库系统以比等待目标备用数据库系统的当前SCN赶上查询的查询SCN所需的时间更少的时间来卸载符合卸载要求的查询。
根据实施例,主数据库基于检测到一个或多个自动触发评估的触发条件来评估查询是否符合卸载要求。示例触发条件包括检测查询中卸载优化器提示的存在、确定查询的预期运行时间高于阈值、以及确定查询从以读取为主(read-mostly)的数据库对象中读取。在该实施例中,不是对于每个查询都引起评估查询是否符合卸载要求的开销。触发条件被配置为使得在备用数据库系统中比在主数据库系统中更可能高效地执行检测到触发条件的查询。
主数据库系统自动确定哪些查询符合被卸载到备用数据库系统的要求的能力消除了针对由管理员专门确定使哪些查询人工定向到备用数据库系统而不是到主数据库系统将最高效的需要。这样的判断容易出错,从而可能导致主数据库和备用数据库系统资源的利用率低下。相反,根据实施例,主数据库系统能够至少部分地基于与一个或多个备用数据库系统的当前状态以及主数据库系统的当前状态相关的信息,来自动识别符合卸载要求的查询以卸载到备用数据库系统。因此,根据主数据库系统和备用数据库系统的当前状态,对特定查询的自动卸载最佳地利用了主数据库系统和备用数据库系统的处理能力。
在基于最近提交表确定至少一个备用数据库系统是对于未修改的数据库对象的特定查询的卸载候选后,基于相对于特定查询中所涉及的数据库对象是最新的至少一个备用数据库系统,主数据库系统自动将查询卸载到目标备用数据库系统(即,至少一个卸载候选备用系统之一)。目标备用数据库系统在其备用数据库上运行查询,并将查询结果返回到主数据库系统。进而,主数据库系统将结果返回给用户。以这种方式,在备用数据库系统处执行查询对于用户是透明的。
根据一个或多个实施例,主数据库系统110确定是否在读写事务中卸载从已被该读写事务中的先前DML语句更改的数据中读取的查询。在这种情况下,任何复制主数据库的备用数据库系统都是卸载候选。实施例允许在目标备用数据库系统上运行的查询访问对主数据库中已更改数据做出的更改。具体地,实施例使得在备用数据库系统上运行卸载查询的会话的会话参数具有与在主数据库系统上运行读写事务的会话的对应会话参数相同的值。这些通用会话参数值允许卸载的查询访问由未提交的读写事务做出的已经被传播到备用数据库的更改。
因此,对查询卸载资格的评估不限于从未修改的数据库对象读取的查询。对主数据库中具有未提交的更改的数据库对象的资源密集型查询可以被卸载到备用数据库系统,并且仍然返回相同的结果,如与假如已经在主数据库上运行该查询那样。卸载从主数据库中已更改的数据库对象读取的查询的能力可以更均匀地利用可用的备用数据库系统的处理能力,从而提高主系统和备用系统整体的效率。另外,与按最初定向的那样在超载的主数据库系统上运行查询相比,每个卸载的查询在单个的基础上被完成得更快。
根据实施例,如果仅一个备用数据库系统被确定为对于给定查询的卸载候选,那么该一个备用数据库系统被自动识别为目标备用数据库系统。然而,如果主数据库系统确定多个备用数据库是用于接收给定查询的卸载的卸载候选,那么主数据库系统在多个卸载候选数据库当中识别要向其卸载查询的目标备用数据库系统。
根据实施例,主数据库系统基于关于多个备用数据库系统的信息(诸如每个系统的当前SCN、每个系统的性能统计信息和/或每个系统的一个或多个高速缓存的内容),来从多个卸载候选备用数据库系统中识别目标备用数据库系统。例如,主数据库系统基于被估计为在最短时间量内运行查询或被估计为多个卸载候选中最快终止运行查询的目标系统,来为给定查询选择目标备用数据库系统。因为主数据库系统基于卸载候选的统计信息为给定查询自动选择目标备用系统,所以主数据库系统高效地保留了多个备用数据库系统之间的工作负载平衡,并确保了尽可能高效且快速地运行给定查询。
确定是否针对符合卸载要求来评估查询
图3描绘了用于主数据库系统自动确定是否将定向到主数据库的特定查询卸载到目标备用数据库系统,然后自动将该查询重新定向到目标备用数据库系统而无需人工干预的流程图300。具体地,在流程图300的步骤302处,第一数据库系统维护包括数据集的主数据库。例如,图1的主数据库系统110维护包括特定数据集(诸如以行和列存储关于特定公司的雇员的信息的雇员表)的主数据库132。
在步骤304处,在第一数据库系统处接收对主数据库中的数据集合的查询。例如,图4描绘了执行查询的示例请求。为了在图4的上下文中进行说明,应用发起与维护主数据库132的(主数据库系统110的)数据库服务器实例122的连接。应用经由该连接向数据库服务器实例122递交请求400,以运行从主数据库132中的雇员表读取的查询402。查询402对应于要执行查询402时的查询时间戳404。例如,查询时间戳404是主数据库系统110的SCN,其表示要在其上执行查询的主数据库132中的数据的特定状态。此外,查询402涉及主数据库132内的一个或多个数据库对象(即,在一个或多个数据库对象上运行查询),每个数据库对象已在备用数据库162内被更新为主数据库132的某个SCN。取决于将更改记录应用到备用数据库的速度,备用数据库162内在查询中所涉及的对象被更新到的SCN一般在查询402的查询SCN 404后运行。
在步骤306处,第一数据库系统自动确定是否自动将查询卸载到维护了复制主数据库的备用数据库的第二数据库系统。根据实施例,主数据库系统110评估每个查询的卸载资格,即,其中确定符合卸载要求的查询以准备好立即卸载到可用的备用数据库系统。
根据另一个实施例,当主数据库系统110检测到对于接收到的查询的一个或多个触发条件时,触发对该查询是否符合卸载要求的确定。示例触发条件包括检测查询中卸载优化器提示的存在、确定查询的预期运行时间高于阈值、以及确定查询从以读取为主的数据库对象中读取。
触发条件:卸载优化器提示
根据实施例,至少部分地通过查询402中包括的卸载优化器提示来触发对查询的卸载资格的评估。为了说明,以下是查询402的示例,其包括卸载优化器提示:
SELECT/*+REDIRECT_TO_STANDBY*/*
FROM Employee
WHERE department_id=30;
根据一个或多个实施例,在查询中包括卸载优化器提示触发主数据库系统110来评估是否将查询卸载到备用数据库,如以下进一步详细描述的。
触发条件:主数据库内的查询执行时间
根据实施例,响应于确定主数据库132内的查询的估计运行时间超过预定查询运行时间阈值,触发主数据库系统110来评估是否将查询卸载到备用数据库。
例如,主数据库系统110的查询优化器基于主数据库系统110的一个或多个优化器统计信息来估计查询402的运行时间,该统计信息包括以下一个或多个:计算设备120的CPU水平、计算设备120处的可用的易失性存储器量、访问存储主数据库132的持久性存储装置130的时延、查询的复杂性、关于主数据库系统的高速缓存内容的信息、主数据库中查询的目标数据库对象的大小,等等。
根据实施例,预定查询运行时间阈值是由管理员固定的持续时间(即,可调参数)。根据另一个实施例,预定查询运行时间阈值是由主数据库系统110基于主数据库系统110的性能统计信息自动识别出的持续时间。
触发条件:以读取为主的对象
根据实施例,响应于确定查询涉及以读取为主的对象,触发主数据库系统110来评估是否将查询卸载到备用数据库。以读取为主的对象是一种数据库对象,在对该对象发布的所有命令当中,对该对象的读取远超过对其的写入,例如,超过读取命令的阈值百分比。例如,主数据库系统110基于特定查询的优化器统计信息来确定特定查询中所涉及的对象是以读取为主的对象。另外,出于实施例的目的,只读数据库对象被认为是以读取为主的对象。使用查询在以读取为主的对象上运行这一事实高效地利用了系统资源,因为考虑到以读取为主的对象很少修改,该以读取为主的对象很可能在一个或多个备用数据库中是最新的。
返回解释触发条件的流程图300的步骤306的实施例的说明,当在主数据库系统110处接收到查询402时,系统110从查询的优化器统计信息中确定查询的预期运行时间超过时间的阈值量。响应于识别该触发条件,主数据库系统评估查询402是否符合卸载要求。
基于主数据库对象的最近提交表确定是否卸载查询
一旦主数据库系统110识别出对于查询402的一个或多个触发条件,主数据库系统110就确定是否将查询卸载到备用数据库系统,诸如备用数据库系统140,或换言之,系统110确定查询402是否符合卸载要求。具体地,返回到流程图300的步骤306的讨论,根据一个或多个实施例,主数据库系统110至少部分地基于由主数据库系统110维护的最近提交表来自动确定是否将(通过主数据库132发布的)查询402卸载到备用数据库系统140。
本文在查询402的上下文中描述了图3的流程图300,该查询402仅在还没有被包含查询402的事务中的任何DML语句修改的数据库对象上运行。下面描述其它实施例,其中查询402在已被包含查询402的事务中的一个或多个先前DML语句修改的一个或多个数据库对象上运行。此外,本文在维护主数据库的物理副本的备用数据库系统的上下文中描述了图3的流程图300。另外,虽然在最近提交表的上下文中描述了实施例,但是最近提交信息可以以任何格式被存储在主数据库系统110内,并且根据一个或多个实施例,最近提交信息不限于表格式。
维护最近提交表
根据实施例,主数据库系统110维护最近提交表,该最近提交表列出了主数据库132中的数据库对象的标识符与其在主数据库系统110内的最近提交SCN。最近提交表还包括与主数据库系统110的一个或多个备用数据库系统(包括备用数据库系统140)内各个数据库对象的状态相关的信息。根据一个或多个实施例,主数据库系统110在主数据库132的字典(dictionary)中和/或在计算设备120的易失性存储器中维护这样的最近提交数据库对象。
为了说明,图5A-5C描绘了最近提交表500,根据一个或多个实施例,主数据库系统110出于确定是否卸载给定查询的目的而创建和维护该表。最近提交表500包括主数据库132内表500中列出的用于复制主数据库132的每个相应备用数据库系统的每个数据库对象的标志。在图5A的最近提交表500的示例中,三个备用数据库系统(由列520、530和540表示)复制主数据库132。
为了清楚起见,列520、530和540的标签在括号中包括每个相应备用数据库的当前SCN。具体地,如图5A中所绘,备用数据库1的当前SCN为210,备用数据库2的当前SCN为200,并且备用数据库3的当前SCN为170。为了解释图5A的表500中的示例行,雇员表的最近提交SCN为190,并且备用数据库1和2(当前SCN分别为210和200)相对于雇员表是最新的。当前SCN为170的备用数据库3相对于雇员表不是最新的。
为了维护最近提交表500,主数据库系统110响应于主数据库132内的事务提交以及对于由事务更新或创建的每个数据库对象,来记录事务的提交SCN,如最近提交表500的列510中所绘。例如,当最近提交表500处于图5A中所绘的状态之前的状态时,在SCN 190处提交更新主数据库132内的雇员表和SSN表的特定事务。响应于特定事务的提交,如图5A中所绘的最近提交表500的列510中所示,主数据库系统110将雇员表和SSN表的提交SCN更新为事务的提交SCN(即,190)。
主数据库系统110的每个备用数据库系统将心跳消息发送到主数据库系统110。心跳消息是自动生成的消息,该消息从维护主数据库的副本的备用数据库被定期发送到主数据库系统,该消息包括指示备用系统的当前状态的统计信息。心跳消息包括发起消息的备用数据库系统的当前SCN。
在从给定的备用数据库系统接收到心跳消息后,主数据库系统110基于给定的备用数据库系统的当前SCN更新最近提交表500。具体地,主数据库系统110设置用于给定的备用数据库系统的与具有提交SCN的数据库对象相关联的任何标志,该提交SCN最多是给定的备用数据库系统的当前SCN。以这种方式,最近提交表500在复制主数据库132的每个备用数据库内跟踪相对于主数据库132内的对应数据库对象是最新的数据库对象。
为了说明,当最近提交表500如图5A中所绘时,更新雇员表和SSN表的事务在主数据库132内的SCN 220处提交。响应于事务提交,主数据库系统110更新最近提交表500以反映对于雇员表和SSN表的最近提交时间(SCN 220),如图5B中的列510中所绘。另外,主数据库系统110清除表500内用于雇员表和SSN表的所有标志,以反映没有备用数据库相对于由事务做出的更改是最新的(因为备用数据库都没有被更新到SCN 220)。
为了进一步说明,当最近提交表500如图5B中所绘时,主数据库系统110从备用数据库系统3接收心跳消息,该消息指示备用数据库3的当前SCN为220。响应于接收到该消息,如图5C中所绘,主数据库系统110更新最近提交表500,以更新用于备用数据库3的列540中的标志,以设置用于小于或等于备用数据库3的当前SCN的数据库对象的所有标志。因为除了时间(Times)表之外,所有绘出的数据库对象都具有220或更小的提交SCN,所以主数据库系统110设置用于时间表的除了复位(unset)标志之外列540中的所有标志。以这种方式,最近提交表500跟踪每个备用数据库在逐个对象级别上的最新情况。
使用最近提交表来确定是否卸载查询
以下是主数据库系统110至少部分地基于如图5A中所绘的最近提交表500来自动确定是否将(通过主数据库132发布的)查询402卸载到备用数据库系统140的说明。具体地,当最近提交表500处于图5A中所绘的状态时,主数据库系统110在SCN 250处接收从主数据库132中的雇员表和工作(Jobs)表读取的查询402。
响应于接收到查询402,主数据库系统110寻找对于查询402的至少一个触发条件以触发该查询是否符合卸载要求的确定。根据该示例,查询402包括卸载优化器提示,并且由此,主数据库系统110进入到通过确定复制主数据库132的任何备用数据库系统是否相对于查询402的数据库对象最新来确定查询402是否符合卸载条件。在图5A中,最近提交表500指示对于雇员表和工作表二者,只有备用数据库1是最新的。因此,主数据库系统110确定查询402符合被卸载到(例如,由备用数据库系统140维护的)备用数据库1的要求,其中备用数据库1是查询402的“目标”备用数据库。
作为另一个示例,已经针对其触发符合卸载要求分析的特定查询仅在时间表上操作,该时间表是主数据库132中以读取为主的表,并且在任何复制主数据库132的备用数据库中都不是最新的。根据实施例,因为没有对于特定查询中所涉及的所有数据库对象的最新的备用数据库,所以主数据库系统110在主数据库132上自动运行查询而无需将查询卸载到备用数据库系统。
延迟的查询卸载
根据另一个实施例,当主数据库系统110确定不存在对于特定符合卸载要求的查询中所涉及的所有数据库对象最新的备用数据库时,主数据库系统110基于检测到指示保证延迟的一个或多个条件来确定是否延迟卸载特定查询,直到至少一个备用系统对于特定查询中所涉及的所有数据库对象变为最新为止。
例如,指示保证延迟的条件包括主数据库系统110检测到对于查询的预期运行时间超过运行时间的阈值量。如果在缺失最新备用的情况下,给定的符合卸载要求的查询将在主数据库132上长时间运行,那么执行延迟的查询卸载对于确保不需要主数据库系统110将大量资源带宽专用于单个查询是有利的。在该示例中,复制主数据库132的所有备用数据库系统都被认为是给定查询的卸载候选。
作为指示保证给定的符合卸载要求的查询的延迟卸载的条件的另一个示例,主数据库系统110确定至少一个备用数据库系统在与对于给定的符合卸载要求的查询中所涉及的所有数据库对象最新的滞后时间的阈值量内。为了说明,滞后时间的阈值量是10SCN,并且给定的备用数据库系统的最后一个心跳消息指示备用数据库系统的当前SCN在查询中所涉及的最近提交数据库对象的最近提交SCN的10SCN内(如最近提交表500中所指示)。在这种情况下,在滞后时间的阈值量内的任何备用数据库系统都被认为是对于给定的查询的卸载候选。
根据实施例,在确定延迟特定查询后,主数据库系统110将延迟的查询注册在延迟的查询列表中,并且还从接收到查询的时间开始,使用延迟的查询中所涉及的对象的最近提交SCN来做出最近提交表500的拷贝。该最近提交表的拷贝包括对于作为特定延迟的查询的卸载候选的每个备用数据库系统的相应列。如以上结合最近提交表500的主拷贝所描述的,基于来自各个拷贝中包括的备用数据库系统的心跳消息中的信息,更新与延迟的查询相关联的最近提交表的所有拷贝。
主数据库系统110在检测到最近提交表的相关联拷贝中的目标备用数据库系统对于查询中所涉及的所有数据库对象相对于表的拷贝中列出的(在查询的SCN处记录在表500中的)SCN已经变为最新的之后,确定列表中给定的延迟查询符合卸载要求。在目标备用数据库相对于延迟的查询中所涉及的所有数据库对象变为最新的之后,将已经历延迟的卸载操作的查询卸载到目标备用数据库系统。在查询之后还包括一个或多个语句的事务中延迟该查询也延迟了后续语句,直到该查询完成为止。
从多个候选备用系统中识别用于查询卸载的目标备用数据库系统
在主数据库系统110确定查询402符合被自动卸载到备用数据库系统的要求之后。在多个备用数据库是对于查询402的卸载候选的情况下,主数据库系统110在多个卸载候选中自动识别主数据库系统110将向其卸载查询的目标备用数据库系统。具体地,主数据库系统110基于哪个候选备用数据库系统具有用于查询的最短估计运行时间和/或具有用于执行查询的最早估计终止时间来识别目标备用数据库以运行符合卸载要求的查询。
许多方面可以通知给定备用数据库系统内用于查询的估计运行时间或估计终止时间。至于与备用数据库系统的高速缓存的内容相关的信息,当数据库系统执行查询时,如果查询结果存在于由备用系统维护的高速缓存中,那么系统将返回高速缓存的结果,而无需重新执行查询,这加快了查询的执行。此外,给定的备用数据库系统中可以被包括在由系统生成的针对查询的执行计划中的索引的存在可以加快该系统中查询的执行。
根据实施例,主数据库系统110通过利用评估查询而不运行该查询的请求将该查询递交给候选备用数据库系统来检索用于该查询的估计运行时间和估计终止时间,其中每个候选备用数据库系统将用于查询的估计运行时间和估计终止时间返回到系统110。
为了说明,主数据库系统110确定备用数据库系统140和维护主数据库132的副本的另一个备用数据库系统二者都是对于给定查询的卸载候选。主数据库系统110基于以下示例情况之一将备用数据库系统140选择为用于给定查询的目标备用数据库系统:
·对于给定的查询,备用数据库系统140具有比第二备用数据库系统更短的估计运行时间,并且估计比第二备用数据库系统更快地完成给定的查询。
·尽管对于给定的查询,第二备用数据库系统具有更短的估计运行时间,但是估计备用数据库系统140比第二备用数据库系统更快地完成给定的查询。
·尽管估计第二备用数据库系统比备用数据库系统140更快地完成给定的查询,但是对于给定的查询,备用数据库系统140具有比第二备用数据库系统更短的估计运行时间。
将查询自动卸载到目标备用数据库系统
在步骤308处,响应于确定将查询卸载到第二数据库系统,第一数据库系统通过向第二数据库系统递交在备用数据库中的数据集的拷贝上运行查询的请求来自动卸载查询。例如,主数据库系统110确定查询402符合卸载要求并将备用数据库系统140识别为用于查询402的目标备用数据库系统。当备用数据库系统140对于查询402中所涉及的所有数据库对象都是最新的时,主数据库系统110向备用数据库系统140递交在请求400之后建模的请求,以在备用数据库162上运行查询402。
根据实施例,主数据库系统110发起和/或维护到备用数据库系统140的数据库链接。备用数据库系统140维护用于与主数据库系统110连接的会话。因此,为了向备用数据库系统140提交查询402,主数据库系统110通过数据库链接提交执行查询的请求。当备用数据库系统140通过数据库链接接收到执行查询402的请求时,备用数据库系统140在与数据库链接相关联的会话中运行查询。
根据实施例,主数据库系统110向备用数据库系统140发送时间戳,该时间戳指示要运行查询402的数据库的状态。例如,系统110在系统140中维护的用于与主数据库系统110连接的会话内设置一个或多个会话参数,以指示对于查询140中所涉及的对象的所有最近提交SCN中最提前的SCN的数据库的闪回(flashback)状态。备用数据库系统140在备用数据库162的状态上运行查询402,该状态与运行查询402的会话的会话参数中的闪回状态SCN对应。
在步骤310处,从第二数据库系统接收查询的结果。例如,响应于接收到运行查询402的请求,备用数据库系统140从备用数据库162中检索满足查询的数据。在完成查询402的执行之后,备用数据库系统140例如通过数据库链接将查询结果返回到主数据库系统110。主数据库系统110从备用数据库系统140接收结果,并且由此,它本身不运行查询402。
在步骤312处,第一数据库系统作为查询的结果向用户返回从备用数据库接收到的查询结果。例如,主数据库系统110向发起请求400的应用并经由在主数据库系统110上为该应用建立的会话返回从备用数据库系统140接收到的查询402的结果。因此,主数据库系统110将查询402卸载到备用数据库系统140对用户而言是透明的。
卸载在包括未提交的更改的至少一个数据库对象上运行的查询
根据一个或多个实施例,主数据库系统110确定将查询卸载到备用数据库系统140,其中该查询是已对在运行该查询的主数据库132中的数据集做出一个或多个未提交的更改的读写事务的一部分。例如,主数据库系统110基于检测到以上详细描述的触发条件中的至少一个触发条件来确定从读写事务中卸载查询。
基于数据库系统内事务的ACID属性,对数据集所做的更改在除了运行事务的会话之外的任何会话中都是不可见的,直到事务提交为止。例如,如图6中所绘,事务620包括至少一个DML语句622,该DML语句622改变主数据库132中的雇员表中的数据。事务620还包括查询624,该查询624在DML语句622之后运行,并且从由DML语句622修改的雇员表中读取。
当事务620对主数据库132做出未提交的更改时,主数据库系统110发送更改记录,该更改记录将那些更改传送到具有相关联的SCN的备用数据库系统140。备用数据库系统140及时地将未提交的更改应用于备用数据库162(其中,仅在接收到指示事务已经提交的更改记录之后才在备用数据库162中提交未提交的更改)。备用数据库162的当前SCN反映了这些未提交的更改,因为这些更改具有相关联的SCN。
根据一个或多个实施例,主数据库系统110基于跟踪每个备用数据库系统的最新SCN的最近提交表500来确定卸载查询624。具体地,(与仅在没有未提交的更改的数据库对象上运行的查询一样)系统110基于查询624中所涉及的数据库对象是否为最新的来确定查询624是否符合卸载要求。对于查询624中所涉及的、还没有被先前的DML语句修改的每个数据库对象,系统110如以上详细描述的基于表500确定对象是否是最新的。
根据实施例,对于查询624中所涉及的、已经由先前的DML语句修改的每个数据库对象,主数据库系统110基于备用数据库是否至少已经达到修改相应对象的事务620中最新DML语句的SCN,来确定相应经修改的对象是否在给定的备用数据库中是最新的。根据另一个实施例,系统110通过将备用数据库的当前SCN与对查询624中所涉及的对象做出了任何更改的事务620中最新DML语句的SCN进行比较,来确定在查询624中所涉及的、已经被先前的DML语句修改的对象在给定的备用数据库中是否是最新的。
继续以上示例说明,主数据库系统110基于备用数据库系统140对于查询624中所涉及的数据库对象是最新的,来选择备用数据库系统140作为用于查询624的目标备用数据库系统。为了确保在备用数据库162上运行查询624的结果与如果在主数据库132上运行查询624所检索的结果相同,在备用数据库系统140上运行的查询624应当可以访问由事务620在查询624之前做出的任何未提交的更改。
在主数据库系统110上,事务620在会话610内运行,该会话610至少具有包括事务标识信息和会话信息二者的会话参数612集。具体地,会话参数612包括以下一个或多个:事务620的标识符、事务620的撤消块地址、以及在主数据库系统110内发起事务620处的SCN等。
在将查询624卸载到备用数据库系统140之前,主数据库系统110在备用数据库系统140上建立新的会话630。根据实施例,由于备用数据库系统140维护主数据库132的物理副本,主数据库系统110使用已经传播到备用数据库系统140的用于会话610的用户信息和凭证建立会话630而不明确建立数据库链接。
因为会话630是由主数据库系统110而不是由应用建立的,所以主数据库系统110可以根据需要设置会话630的会话参数。因此,主数据库系统110使用与用于会话610的相同的用户凭证和信息以及与用于包括事务标识信息的会话参数612的相同的值来填充备用数据库系统140上的新会话630。例如,主数据库系统110经由先前建立的连接并使用RPC与备用数据库系统140通信,以将会话630的会话参数612的值设置为会话610的对应会话参数的值。
因为目标备用数据库系统140对于查询624是最新的,所以事务620所做的所有未提交的更改(在查询SCN之前,诸如由DML 622做出的更改)已经被应用于备用数据库162。因为在备用数据库系统140上运行查询624的会话630具有与在主数据库系统110上运行事务620的会话610相同的会话参数612的值,所以查询624可以仿佛查询实在主数据库132商运行那样访问备用数据库162中的相同的未提交的更改。具体地,因为会话630具有与会话610相同的会话参数612的值,所以在会话630内运行的查询624具有与在会话610中运行的事务620相同的启用规则和相同的特权。
以这种方式,假定在会话630内运行的任何数据库命令都可以访问如果该命令在会话610中运行那么该命令将能够访问的相同的未提交的更改,那么备用数据库系统140上的会话630变为对于会话610的代理会话。
将查询卸载到逻辑备用数据库
以上在备用数据库162是主数据库132的物理副本的上下文下描述了实施例,其中备用数据库系统140通过将从主数据库系统110接收到的更改记录应用于备用数据库162来复制主数据库132,该更改记录记录了对主数据库132中的数据所做的更改。然而,根据一个或多个实施例,备用数据库162是主数据库132的逻辑副本,其中备用数据库系统140通过在备用数据库162上执行相同的数据库命令来复制主数据库132,如主数据库系统110在主数据库132上执行的。逻辑备用数据库系统维护唯一的SCN,这防止主数据库系统110将其自己的SCN与逻辑备用数据库的SCN进行比较,以确定是否以及何时卸载给定的查询。
根据实施例,主数据库系统110基于主数据库和逻辑备用数据库中的数据库对象的版本来确定是否将作为只读事务的一部分的查询卸载到逻辑备用数据库系统。在这样的实施例中,主数据库系统110和逻辑备用数据库系统二者都记录用于数据库对象的版本标识符,其中跨两个系统用于数据库对象的相同版本号指示对象的相同提交状态。因此,为了确定是否以及何时将查询卸载到逻辑备用数据库系统,主数据库系统110针对查询检查在逻辑备用数据库中维护的目标对象的版本,以确定备用中的对象版本是否是对于给定的查询的预期版本。仅当查询的目标对象的版本与主数据库132中查询SCN处的对象的版本相同时,主数据库系统110才将查询卸载到逻辑备用数据库系统。
根据另一个实施例,针对逻辑地复制主数据库132的每个逻辑备用数据库确定水印SCN。对于给定的逻辑备用的水印SCN是逻辑备用数据库与主数据库132一致处的SCN(相对于主数据库系统110)。
例如,每次逻辑备用数据库系统成功提交给定的事务时,逻辑备用数据库系统(例如,经由心跳消息)向主数据库系统110报告事务的标识符,该标识符确认逻辑备用数据库内事务的提交状态。主数据库系统110跟踪在主数据库系统110上每个事务在其处提交的主数据库132的SCN。主数据库系统110确定逻辑备用数据库的水印SCN是主数据库132的最新的SCN,在该最新的SCN处主数据库132内提交的所有事务都已经在逻辑备用数据库中被提交。
根据另一个示例,每个逻辑备用数据库系统为其本身维护水印SCN,该逻辑备用数据库系统在心跳消息中将水印SCN提供给主系统110。具体地,主数据库系统110向每个逻辑备用数据库系统发送在其处提交给定的事务的SCN。逻辑备用数据库存储每个事务的提交SCN的记录。逻辑备用数据库定期性地向主数据库系统110发送心跳消息,该心跳消息包括指示由逻辑备用数据库系统提交的最后一个连续事务的最新的SCN。作为简单示例,逻辑备用数据库系统已经接收到主数据库系统110已在相关联的SCN处提交了以下事务(T1-T12)中的每个事务的信息。在给定心跳消息时,逻辑备用数据库系统已提交T1-T9和T11。由此,给定的心跳消息包括SCN“9”作为水印SCN,因为那是在其处主数据库和逻辑备用数据库具有相同状态的最新的SCN。
主数据库系统110以与以上针对物理备用数据库系统相同的方式使用由逻辑备用数据库系统发送的水印SCN来更新最近提交表500。因此,可以以与将这样的查询卸载到物理备用数据库系统相同的方式将在主数据库系统110处接收到的在未修改的数据库对象上运行的查询卸载到逻辑备用数据库系统。然而,因为逻辑备用数据库系统不与指示未提交的更改是否已被应用于逻辑备用数据库内的数据库对象的水印SCN相关联,所以没有将对包括未提交的更改的数据库对象的查询卸载到逻辑备用数据库系统。由此,卸载到逻辑备用数据库的查询将产生与在主数据库上执行的查询相同的数据集。
更改记录和数据块
如上所述,更改记录206A-N指定由(一个或多个)事务202做出的针对主数据库132执行的一个或多个更改。主数据库系统110将更改记录206A-N流传输到一个或多个物理地复制主数据库132的备用数据库系统(包括备用数据库系统140)。在一些示例实施例中,更改记录206A-N可以包括数据块地址208A-N。数据块是数据库服务器可以相对于存储表数据的存储设备(例如在块模式盘存储设备中)请求从中读取和向其写入的数据的原子(atomic)单位。为了说明,为了从存储设备检索行,包含该行的数据块被读入高速缓存(诸如驻留在图1的计算设备120或计算设备150A-N之一的易失性存储器中的高速缓存)并且存储的数据块的高速缓存的拷贝被检查以访问该行。
数据块被DBMS用来存储一个或多个数据库行或行的一部分(包括行的一个或多个列)。当从持久性存储装置读取行时,将包含该行的数据块复制到数据库服务器的RAM和/或主存储器中的数据块缓冲区中。数据块可以与物理存储空间的预定数量的字节相对应,并且被称为原子,因为它一般是数据库服务器可以从持久性存储设备请求的数据库数据的最小单位。例如,DBMS可以将数据存储在每个与2KB磁盘空间相对应的数据块中。当数据库服务器查找存储在数据块中的行时,该数据块只能通过在整个数据块中读取来从持久性存储设备中读取该行。
每个更改记录包括数据块地址,该数据块地址可以指示特定数据块在主数据库系统110和/或备用数据库系统140中的位置。该位置可以是在其处主数据库中发生更改的特定数据块的相对位置。因为备用数据库是主数据库的副本,所以该位置也可以是在其处备用数据库中要发生更改的特定数据块的相对位置。
在以下描述的一些示例实施例中,备用数据库系统140包括应用从设备(slave)210A-N,该从设备210A-N将更改记录206A-N中指示的更改应用于备用数据库中的对应数据块。备用数据库系统140可以基于数据块地址208A-N在应用从设备210A-N之间分配更改记录206A-N。例如,向应用从设备210A分配要在100至500的数据块地址范围中应用的任何更改记录,并且向应用从设备210B分配要在501至700的数据块地址范围中应用的任何更改记录。在以下描述的一些示例实施例中,可以基于数据块地址208A-N的散列(hash)在应用从设备210A-N之间分配更改记录206A-N。
数据库概述
本发明的实施例在数据库管理系统(DBMS)的上下文中使用。因此,提供了示例DBMS的描述。
一般地,诸如数据库服务器之类的服务器是集成的软件组件和计算资源(诸如存储器、节点以及节点上用于执行集成的软件组件的处理)的分配的组合,其中软件和计算资源的组合专用于代表服务器的客户端提供特定类型的功能。数据库服务器管理并促进对特定数据库的访问,处理客户端访问数据库的请求。
用户通过向数据库服务器递交使得数据库服务器对在数据库中存储的数据执行操作的命令来与DBMS的数据库服务器进行交互。用户可以是在与数据库服务器进行交互的客户端计算机上运行的一个或多个应用。多个用户在本文中也可以被共同称为用户。
数据库包括在诸如硬盘集之类的持久性存储器机制上存储的数据库字典和数据。数据库由其自己的单独数据库字典来定义。数据库字典包括定义数据库中包含的数据库对象的元数据。实际上,数据库字典定义了数据库的整体。数据库对象包括表、表列和表空间。表空间是用于存储对于各种类型的数据库对象(诸如表)的数据的一个或多个文件集。如果将对于数据库对象的数据存储在表空间中,那么数据库字典将数据库对象映射到保存对于数据库对象的数据的一个或多个表空间。
DBMS参考数据库字典来确定如何执行递交给DBMS的数据库命令。数据库命令可以访问由字典定义的数据库对象。
数据库命令可以是以数据库语句的形式。为了使数据库服务器处理数据库语句,数据库语句必须符合数据库服务器支持的数据库语言。许多数据库服务器支持的数据库语言的一个非限制性示例是SQL,包括由诸如Oracle之类的数据库服务器支持的SQL专有形式(例如,Oracle数据库11g)。将SQL数据定义语言(“DDL”)指令发布到数据库服务器以创建或配置数据库对象,诸如表、视图或复杂类型。数据操纵语言(“DML”)指令被发布给DBMS,以管理在数据库结构内存储的数据。例如,选择(SELECT)、插入(INSERT)、更新(UPDATE)和删除(DELETE)是一些SQL实施方式中通用的DML指令示例。SQL/XML是在对象关系数据库中操纵XML数据时使用的SQL的通用扩展。
单节点数据库系统(诸如系统110)包括运行访问和管理数据库的数据库服务器实例的单个节点。多节点数据库管理系统(诸如系统140)由互连的节点组成,该节点共享对相同数据库的访问。通常,节点经由网络互连,并在不同程度上共享对共享存储装置的访问,例如对一组盘驱动器和存储在其上的数据块(在图1中表示为持久性存储装置160)的共享访问。多节点数据库系统中的节点可以是经由网络互连的一组计算机(例如,工作站、个人计算机)的形式。可替代地,节点可以是网格的节点,该网格由以与机架上的其它服务器刀片互连的服务器刀片形式的节点组成。
多节点数据库系统中的每个节点都托管数据库服务器。诸如数据库服务器之类的服务器是集成的软件组件和计算资源(诸如存储器、节点以及节点上用于在处理器上执行集成的软件组件的处理)的分配的组合,专用于代表一个或多个客户端执行特定功能的软件和计算资源的组合。
可以分配来自多节点数据库系统中的多个节点的资源,以运行特定的数据库服务器的软件。软件和来自节点的资源的分配的每种组合都是在本文中被称为“服务器实例”或“实例”的服务器。数据库服务器可以包括多个数据库实例,其中一些或全部实例在单独的计算机(包括单独的服务器刀片)上运行。
查询处理
查询是表达、命令或命令集,在被执行时,使得服务器在数据集上执行一个或多个操作。查询可以指定要从其中确定(一个或多个)结果集的(一个或多个)源数据对象,诸如(一个或多个)表、(一个或多个)列、(一个或多个)视图或(一个或多个)快照。例如,(一个或多个)源数据对象可以出现在结构化查询语言(“SQL”)查询的FROM子句中。SQL是用于查询数据库对象的众所周知的示例语言。如本文所使用的,术语“查询”被用于指表示查询的任何形式,包括以数据库语句形式的查询和用于内部查询表示的任何数据结构。术语“表”是指被查询引用或定义并且表示行集(诸如数据库表、视图或内嵌式(inline)查询块(诸如内嵌式视图或子查询))的任何源对象。
查询可以在(一个或多个)对象被加载时以逐行基础在来自源数据对象的数据上执行操作,或者在(一个或多个)对象已被加载之后在(一个或多个)整个源数据对象上执行操作。可以使得由一些操作生成的结果集对(一个或多个)其它操作可用,并且以这种方式,可以基于一些准则将结果集过滤或缩小,和/或与(一个或多个)其它结果集和/或(一个或多个)其它源数据对象联合或组合。
一般地,查询分析器接收查询语句并生成查询语句的内部查询表示。通常,内部查询表示是互连的数据结构集,其表示查询语句的各种组件和结构。
内部查询表示可以是节点图的形式,每个互连的数据结构与节点和所表示的查询语句的组件相对应。内部表示通常在存储器中生成,以用于评估、操纵和变换。
查询优化
如本文中所使用的,当查询被(a)从第一表达或表示重写为第二表达或表示、(b)以指定或指示第一操作集(诸如第一表达、表示或执行计划)的方式接收并使用第二操作集(诸如由第二表达、表示或执行计划指定或指示的操作)执行,或(c)以指定或指示第一操作集的方式被接收并使用第二操作集被计划以执行时,查询被认为是“被变换”的。
当两个查询或执行计划(如果被执行)将产生等效结果集时,即使两个查询或执行计划以不同的方式聚集结果集,两个查询或执行计划在语义上也是彼此等效的。如果查询执行产生的结果集与该查询或执行计划(如果被执行)所产生的结果集等效,那么查询的执行在语义上等效于查询或执行计划。
查询优化器可以通过变换查询来优化查询。一般地,变换查询涉及将查询重写为另一个查询,该另一个查询产生相同的结果并且可以潜在地更高效地被执行,即,对于该查询,可以生成潜在地更高效地和/或更低成本地的执行计划。可以通过操纵查询的任何内部表示(包括其任何拷贝)来重写查询,以形成经变换的查询或经变换的查询表示。可替代地和/或附加地,可以通过生成不同但在语义上等效的数据库语句来重写查询。根据实施例,主数据库系统110的查询优化器基于确定涉及卸载查询的执行计划估计比不涉及将该查询卸载到备用数据库系统140而是在主数据库132上运行该查询的替代执行计划更高效,来确定将该查询卸载到备用数据库系统140。
替代或扩展
根据一个或多个实施例,归因于本文描述的任何处理的功能中的一个或多个可以根据任何一个或多个实施例由任何其它逻辑或物理实体来执行。在实施例中,本文描述的技术和/或功能中的每个都是自动执行的,并且可以使用通用计算机或专用计算机中任何一个中的一个或多个计算机程序、其它软件元素和/或数字逻辑来实现,同时执行涉及与计算机存储器的物理状态进行交互和变换计算机存储器的物理状态的数据检索、变换和存储操作。
硬件概述
根据一个实施例,本文描述的技术由一个或多个专用计算设备实现。专用计算设备可以是硬连线的以执行该技术,或者可以包括数字电子设备(诸如被持久地编程为执行该技术的一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA)),或者可以包括被编程为依据固件、存储器、其它存储装置或组合中的程序指令来执行该技术的一个或多个通用硬件处理器。这样的专用计算设备还可以将自定义的硬连线逻辑、ASIC或FPGA与自定义编程相结合,以实现该技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持设备、联网设备或者结合硬连线和/或程序逻辑以实现这些技术的任何其它设备。
例如,图7是示出可以在其上实现本发明的实施例的计算机系统700的框图。计算机系统700包括总线702或用于传送信息的其它通信机制,以及与总线702耦合以处理信息的硬件处理器704。硬件处理器704可以是例如通用微处理器。
计算机系统700还包括耦合到总线702的主存储器706(诸如随机存取存储器(RAM)或其它动态存储设备),用于存储要由处理器704执行的信息和指令。主存储器706还可以被用于存储在执行由处理器704执行的指令期间的临时变量或其它中间信息。这些指令当被存储在处理器704可访问的非暂时性存储介质中时,使计算机系统700成为被自定义以执行指令中指定的操作的专用机器。
计算机系统700还包括耦合到总线702的只读存储器(ROM)708或其它静态存储设备,用于存储用于处理器704的静态信息和指令。提供存储设备710(诸如磁盘、光盘或固态驱动器)并将其耦合到总线702,用于存储信息和指令。
计算机系统700可以经由总线702耦合到显示器712(诸如阴极射线管(CRT)),用于向计算机用户显示信息。将包括字母数字键和其它键的输入设备714耦合到总线702,用于将信息和命令选择传送到处理器704。另一种类型的用户输入设备是光标控制716(诸如鼠标、轨迹球或光标方向键),用于将方向信息和命令选择传送到处理器704并用于控制显示器712上的光标移动。该输入设备通常在两个轴(第一轴(例如,x)和第二轴(例如,y))上具有两个自由度,这允许设备指定平面中的位置。
计算机系统700可以使用自定义的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑(它们与计算机系统相结合,使计算机系统700成为或将计算机系统700编程为专用机器)来实现本文所述的技术。根据一个实施例,响应于处理器704执行包含在主存储器706中的一个或多个指令的一个或多个序列,计算机系统700执行本文的技术。这样的指令可以从另一个存储介质(诸如存储设备710)读入到主存储器706中。包含在主存储器706中的指令序列的执行使得处理器704执行本文所述的处理步骤。在替代实施例中,可以使用硬连线的电路系统代替软件指令或与软件指令组合。
如本文使用的术语“存储介质”是指存储使得机器以特定方式操作的数据和/或指令的任何非暂时性介质。这样的存储介质可以包括非易失性介质和/或易失性介质。非易失性介质(诸如存储设备710)包括例如光盘、磁盘或固态驱动器。易失性介质(诸如主存储器706)包括动态存储器。存储介质的常见形式包括例如软盘、柔性盘、硬盘、固态驱动器、磁带或任何其它磁数据存储介质、CD-ROM、任何其它光学数据存储介质、任何具有孔图案的物理介质、RAM、PROM和EPROM、FLASH-EPROM、NVRAM、任何其它存储器芯片或盒式盒式磁带。
存储介质不同于传输介质但可以与传输介质结合使用。传输介质参与在存储介质之间传递信息。例如,传输介质(包括包含总线702的线)包括同轴电缆、铜线和光纤。传输介质也可以采用声波或光波的形式,诸如在无线电波和红外数据通信期间生成的那些。
将一个或多个指令的一个或多个序列携带到处理器704用于执行可以涉及各种形式的介质。例如,指令最初可以在远程计算机的磁盘或固态驱动器上携带。远程计算机可以将指令加载到其动态存储器中,并使用调制解调器通过电话线发送指令。计算机系统700本地的调制解调器可以在电话线上接收数据并使用红外发送器将数据转换成红外信号。红外检测器可以接收红外信号中携带的数据,并且适当的电路可以将数据放在总线702上。总线702将数据携带到主存储器706,处理器704从主存储器706检索并执行该指令。由主存储器706接收的指令可以可选地在由处理器704执行之前或之后被存储在存储设备710上。
计算机系统700还包括耦合到总线702的通信接口718。通信接口718提供到网络链接720的双向数据通信耦合,该网络链接720连接到本地网络722。例如,通信接口718可以是集成服务数字网(ISDN)卡、电缆调制解调器、卫星调制解调器或者提供与对应类型的电话线的数据通信连接的调制解调器。作为另一个示例,通信接口718可以是局域网(LAN)卡,以提供与兼容LAN的数据通信连接。还可以实现无线链接。在任何这样的实现中,通信接口718发送和接收携带表示各种类型信息的数字数据流的电信号、电磁信号或光信号。
网络链接720通常通过一个或多个网络向其它数据设备提供数据通信。例如,网络链接720可以提供通过本地网络722到主机计算机724或到由互联网服务提供商(ISP)726操作的数据装备的连接。ISP 726进而通过全球分组数据通信网络(现在通常称为“互联网”728)提供数据通信服务。本地网络722和互联网728二者都使用携带数字数据流的电信号、电磁信号或光信号。通过各种网络的信号以及网络链接720上并通过通信接口718的信号(其将数字数据携带到计算机系统700和从计算机系统700携带数字数据)是传输介质的示例形式。
计算机系统700可以通过(一个或多个)网络、网络链接720和通信接口718发送消息和接收数据,包括程序代码。在互联网示例中,服务器730可以通过互联网728、ISP 726、本地网络722和通信接口718发送对于应用程序的所请求代码。
接收到的代码可以在被接收到时由处理器704执行,和/或存储在存储设备710或其它非易失性存储器中用于稍后执行。
软件概述
图8是可以用于控制计算机系统700的操作的基本软件系统800的框图。软件系统800及其组件,包括它们的连接、关系和功能,仅意味着示例性的,并且不意味着限制(一个或多个)示例实施例的实现。适于实现(一个或多个)示例实施例的其它软件系统可以具有不同的组件,包括具有不同的连接、关系和功能的组件。
提供软件系统800用于指导计算机系统700的操作。可以存储在系统存储器(RAM)706和固定存储装置(例如,硬盘或闪存)710上的软件系统800包括内核或操作系统(OS)810。
OS 810管理计算机操作的低级方面,包括管理处理的执行、存储器分配、文件输入和输出(I/O)以及设备I/O。表示为802A、802B、802C...802N的一个或多个应用可以被“加载”(例如,从固定存储装置710传送到存储器706中)用于由系统800来执行。意图在计算机系统700上使用的应用或其它软件也可以被存储为可下载的计算机可执行指令集,例如,用于从互联网位置(例如,Web服务器、app商店或其它在线服务)下载和安装。
软件系统800包括图形用户界面(GUI)815,用于以图形(例如,“点击”或“触摸手势”)方式接收用户命令和数据。进而,这些输入可以由系统800根据来自操作系统810和/或(一个或多个)应用802的指令来行动。GUI 815还充当显示来自OS 810和(一个或多个)应用802的操作的结果,然后用户可以供应附加的输入或终止会话(例如,注销)。
OS 810可以直接在计算机系统700的裸硬件820(例如,(一个或多个)处理器704)上执行。可替代地,管理程序或虚拟机监视器(VMM)830可以被插入在裸硬件820和OS 810之间。在这个配置中,VMM 830充当OS 810与计算机系统700的裸硬件820之间的软件“缓冲”或虚拟化层。
VMM 830实例化并运行一个或多个虚拟机实例(“访客机”)。每个访客机包括“访客”操作系统(诸如OS 810),以及被设计为在访客操作系统上执行的一个或多个应用(诸如(一个或多个)应用802)。VMM 830向访客操作系统呈现虚拟操作平台并管理访客操作系统的执行。
在一些实例中,VMM 830可以允许访客操作系统如同其直接在计算机系统700的裸硬件820上运行一样运行。在这些实例中,被配置为直接在裸硬件820上执行的访客操作系统的相同版本也可以在VMM 830上执行而无需修改或重新配置。换言之,VMM 830可以在一些实例中向访客操作系统提供完全硬件和CPU虚拟化。
在其它实例中,访客操作系统可以针对效率被专门设计或配置为在VMM 830上执行。在这些实例中,访客操作系统“意识到”它在虚拟机监视器上执行。换言之,VMM 830可以在一些实例中向访客操作系统提供半虚拟化。
计算机系统处理包括硬件处理器时间的分配,以及存储器(物理和/或虚拟)的分配:存储器的分配用于存储由硬件处理器执行的指令、用于存储由硬件处理器执行指令所生成的数据、和/或用于当计算机系统处理未运行时在硬件处理器时间的分配之间存储硬件处理器状态(例如,寄存器的内容)。计算机系统处理在操作系统的控制下运行,并且可以在计算机系统上执行的其它程序的控制下运行。
云计算
本文一般地使用术语“云计算”来描述计算模型,该计算模型使得能够按需访问计算资源的共享池,诸如计算机网络、服务器、软件应用和服务,并且允许以最少的管理工作或服务提供商交互来快速提供和释放资源。
云计算环境(有时称为云环境或云)可以以各种不同方式实现,以最好地适应不同要求。例如,在公共云环境中,底层(underlying)计算基础设施由组织拥有,该组织使其云服务可用于其它组织或公众。相反,私有云环境一般仅由单个组织使用或在单个组织内使用。社区云旨在由社区内的若干组织共享;而混合云包括通过数据和应用可移植性绑定在一起的两种或更多种类型的云(例如,私有、社区或公共)。
一般地,云计算模型使得先前可能已经由组织自己的信息技术部门提供的那些职责中的一些能够代替地作为云环境内的服务层来输送,用于由消费者使用(根据云的公共/私人性质,在组织内部或外部)。取决于特定实现,由每个云服务层提供或在每个云服务层内提供的组件或特征的精确定义可以变化,但常见示例包括:软件即服务(SaaS),其中消费者使用在云基础设施上运行的软件应用,同时SaaS提供商管理或控制底层云基础设施和应用。平台即服务(PaaS),其中消费者可以使用由PaaS提供商支持的软件编程语言和开发工具,以开发、部署和以其它方式控制它们自己的应用,同时PaaS提供商管理或控制云环境的其它方面(即,运行时间执行环境下的一切)。基础设施即服务(IaaS),其中消费者可以部署和运行任意软件应用,和/或提供进程、存储装置、网络和其它基础计算资源,同时IaaS提供商管理或控制底层物理云基础设施(即,操作系统层下面的一切)。数据库即服务(DBaaS),其中消费者使用在云基础设施上运行的数据库服务器或数据库管理系统,同时DbaaS提供商管理或控制底层云基础设施、应用和服务器,包括一个或多个数据库服务器。
为了说明可以用于实现(一个或多个)示例实施例的基本底层计算机组件的目的而呈现了上述基本计算机硬件和软件以及云计算环境。然而,(一个或多个)示例实施例不必限于任何特定的计算环境或计算设备配置。相反,根据本公开,(一个或多个)示例实施例可以在本领域技术人员将理解为能够支持本文呈现的(一个或多个)示例实施例的特征和功能的任何类型的系统体系架构或处理环境中实现。
在前述说明书中,已经参考众多具体细节描述了本发明的实施例,该细节可以从实现到实现有所变化。因此,说明书和附图应被视为说明性而非限制性的意义。本发明范围的唯一和排他性指示,以及申请人意图作为本发明范围的内容,是以发布这样的权利要求书的具体形式从本申请发布的权利要求书集合的字面和等同范围,包括任何后续更正。
Claims (14)
1.一种方法,包括:
第一数据库系统,维护包括数据集的主数据库;
在第一数据库系统处接收对主数据库中的数据集的查询;
第一数据库系统自动确定是否将所述查询卸载到第二数据库系统,该第二数据库系统维护了复制主数据库的备用数据库;
响应于确定将所述查询卸载到第二数据库系统,第一数据库系统通过向第二数据库系统递交对备用数据库中的数据集的拷贝运行所述查询的请求来自动卸载查询;
从第二数据库系统接收所述查询的结果;并且
第一数据库系统向用户返回从第二数据库系统接收到的查询结果作为所述查询的结果。
2.根据权利要求1所述的方法,还包括:
第一数据库系统在特定时间戳处检测主数据库上的事务的提交;
其中所述事务修改了主数据库中的一个或多个数据库对象;
响应于检测到所述主数据库上的事务的提交:在最近提交对象中记录与所述一个或多个数据库对象中的每个相关的特定时间戳;
其中第一数据库系统至少部分地基于最近提交对象来自动确定是否将所述查询卸载到第二数据库系统。
3.根据权利要求2所述的方法,还包括:
第一数据库系统从第二数据库系统接收指示第二数据库系统的当前时间戳的消息;
响应于接收到所述消息,第一数据库系统在对于(a)没有用于第二数据库系统设置的标志并且(b)与不大于第二数据库系统的当前时间戳的时间戳相关联的每个数据库对象的最近提交对象内,自动设置用于第二数据库系统的相应标志。
4.根据权利要求3所述的方法,其中:
所述查询是对在主数据库中的一个或多个查询数据库对象进行的;
第一数据库系统至少部分地基于最近提交对象来自动确定是否将所述查询卸载到第二数据库系统,包括:
确定是否在最近提交对象内设置了用于第二数据库系统的并与所述一个或多个查询数据库对象中的每个相关联的每个相应标志,
响应于确定在最近提交对象内设置了用于第二数据库系统的并与所述一个或多个查询数据库对象中的每个相关联的每个相应标志,自动将所述查询识别为符合卸载要求。
5.根据权利要求3所述的方法,其中:
所述查询是对所述在主数据库中的一个或多个查询数据库对象进行的;
第一数据库系统至少部分地基于最近提交对象来自动确定是否将所述查询卸载到第二数据库系统,包括:
确定是否在最近提交对象内设置了用于第二数据库系统的并与所述一个或多个查询数据库对象中的每个相关联的每个相应标志,
响应于确定在最近提交对象内未设置用于第二数据库系统的并与所述一个或多个查询数据库对象中的至少一个查询数据库对象相关联的至少一个标志,至少部分地基于确定以下一项或多项来自动确定执行所述查询到第二数据库系统的延迟的卸载:
所述查询的运行时间估计超过运行时间的阈值量,或者
第二数据库系统的当前时间戳在根据最近提交对象内的所述一个或多个查询数据库对象的最近提交时间的时间的阈值量内;
一旦第二数据库系统的当前时间戳达到最近提交对象内的所述一个或多个查询数据库对象的最近提交时间,则自动将所述查询识别为符合卸载要求;
在确定第二数据库系统的当前时间戳已达到最近提交对象内的所述一个或多个查询数据库对象的最近提交时间之后,第一数据库系统自动卸载所述查询。
6.根据权利要求3所述的方法,还包括:
在第一数据库系统处接收对主数据库中的数据集的第二查询;
其中所述第二查询是对在主数据库中的一个或多个查询数据库对象进行的;
第一数据库系统至少部分地基于最近提交对象来自动确定是否将所述第二查询卸载到包括第二数据库系统的一个或多个备用数据库系统包括,针对所述一个或多个备用数据库系统中的每个备用数据库系统:
确定在最近提交对象内未设置用于相应备用数据库系统的与所述一个或多个查询数据库对象的至少一个相应数据库对象相关联的至少一个标志;
响应于确定所述一个或多个备用数据库系统中的每个备用数据库系统与最近提交对象内的至少一个复位标志相关联,自动对主数据库运行所述第二查询。
7.根据权利要求3所述的方法,其中所述指示第二数据库系统的当前时间戳的消息是来自第二数据库系统的心跳消息。
8.根据权利要求2所述的方法,还包括:
响应于检测到所述主数据库上的事务的提交:清除与所述一个或多个数据库对象相关联的最近提交对象内的一个或多个特定于备用的标志。
9.根据权利要求1所述的方法,还包括:
第一数据库系统检测触发对所述查询符合卸载要求的评估的一个或多个条件中的至少一个条件,其中所述一个或多个条件包括:
所述查询中卸载优化器提示的存在,
所述查询中对一个或多个以读取为主的对象的标识,以及
所述查询的运行时间估计超过运行时间的阈值量;
其中,响应于第一数据库系统识别所述一个或多个条件中的至少一个条件,执行第一数据库系统自动确定是否卸载所述查询。
10.根据权利要求1所述的方法,其中:
备用数据库是主数据库的物理副本;
所述查询是在第一数据库系统上发起的事务的一部分;
所述事务包括一个或多个数据操纵语言(DML)操作,该DML操作被配置为在所述查询之前对数据集做出一个或多个更改;并且
所述方法还包括:
在自动向第二数据库系统递交对备用数据库中的数据集的拷贝运行所述查询的请求之前,所述事务执行所述一个或多个DML操作,所述DML操作对数据集做出所述一个或多个更改,以在主数据库中产生经调整的数据集;
其中所述查询被配置为在所述经调整的数据集上运行;
其中,在提交所述事务之前,执行向第二数据库系统自动递交对在备用数据库中的数据集的拷贝上运行所述查询的请求。
11.根据权利要求10所述的方法,还包括,在所述事务提交之前并且在所述事务执行对数据集做出所述一个或多个更改的所述一个或多个DML操作之后:
第一数据库系统向第二数据库系统发送一个或多个更改记录,所述更改记录反映了对主数据库中的数据集的所述一个或多个更改;
其中第二数据库系统将所述一个或多个更改记录应用于备用数据库中的数据集的拷贝,以产生备用数据库中的数据集的经调整的拷贝;
其中从第二数据库系统接收到的所述查询的结果是基于所述备用数据库中数据集的经调整的拷贝的。
12.根据权利要求11所述的方法,还包括:
第一数据库系统在第二数据库系统上自动建立第一会话;
使得第一会话的一个或多个会话参数在运行所述事务的第一数据库系统上具有第二会话的一个或多个对应会话参数的值;
第二数据库系统至少部分地基于第一会话的具有第二会话的一个或多个对应会话参数的值的所述一个或多个会话参数来在第一会话内对数据集的所述经调整的拷贝运行所述查询。
13.一种或多种非暂态计算机可读介质,存储一个或多个指令序列,所述指令序列在由一个或多个处理器执行时,使得执行权利要求1至12中的任何一项所述的步骤。
14.一种设备,包括:
一个或多个处理器;以及
存储器,其耦合到所述一个或多个处理器并包括存储在其上的指令,所述指令当由所述一个或多个处理器执行时,使得执行权利要求1至12中的任何一项所述的步骤。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/016,978 | 2018-06-25 | ||
US16/016,978 US11468060B2 (en) | 2018-06-25 | 2018-06-25 | Automatic query offloading to a standby database |
PCT/US2019/025650 WO2020005358A1 (en) | 2018-06-25 | 2019-04-03 | Automatic query offloading to a standby database |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112534419A true CN112534419A (zh) | 2021-03-19 |
Family
ID=66223845
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980052057.7A Pending CN112534419A (zh) | 2018-06-25 | 2019-04-03 | 到备用数据库的自动查询卸载 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11468060B2 (zh) |
EP (2) | EP3811230B1 (zh) |
CN (1) | CN112534419A (zh) |
WO (1) | WO2020005358A1 (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10255336B2 (en) | 2015-05-07 | 2019-04-09 | Datometry, Inc. | Method and system for transparent interoperability between applications and data management systems |
US10594779B2 (en) | 2015-08-27 | 2020-03-17 | Datometry, Inc. | Method and system for workload management for data management systems |
US11354301B2 (en) * | 2017-11-13 | 2022-06-07 | LendingClub Bank, National Association | Multi-system operation audit log |
US10902021B2 (en) * | 2018-09-24 | 2021-01-26 | Salesforce.Com, Inc. | Automated self-scaling database system for automatically scaling out read operations and method for implementing the same |
US20200097556A1 (en) * | 2018-09-24 | 2020-03-26 | Salesforce.Com, Inc. | Automated self-scaling database system and method for implementing the same |
US10891308B2 (en) * | 2018-09-24 | 2021-01-12 | Salesforce.Com, Inc. | Automated self-scaling database system for automatically scaling out write operations and method for implementing the same in a multi-tenant, cloud-based computing environment |
US10924398B2 (en) * | 2018-09-25 | 2021-02-16 | Ebay Inc. | Time-series data monitoring with sharded server |
US11436213B1 (en) | 2018-12-19 | 2022-09-06 | Datometry, Inc. | Analysis of database query logs |
US11294869B1 (en) | 2018-12-19 | 2022-04-05 | Datometry, Inc. | Expressing complexity of migration to a database candidate |
US11468043B1 (en) | 2018-12-20 | 2022-10-11 | Datometry, Inc. | Batching database queries for migration to a different database |
US11170029B2 (en) | 2019-05-31 | 2021-11-09 | Lendingclub Corporation | Multi-user cross-device tracking |
US11468090B2 (en) * | 2019-11-13 | 2022-10-11 | Google Llc | Maintain constant load on global database after regionalization |
US11182386B2 (en) * | 2020-03-24 | 2021-11-23 | International Business Machines Corporation | Offloading statistics collection |
US11423024B2 (en) * | 2020-03-30 | 2022-08-23 | Sap Se | Efficient query compilation in replicated databases |
US11379477B2 (en) * | 2020-03-31 | 2022-07-05 | Sap Se | Efficient workload balancing in replicated databases based on result lag computation |
US20220179861A1 (en) * | 2020-12-08 | 2022-06-09 | International Business Machines Corporation | Scheduling query execution plans on a relational database |
US20230208715A1 (en) * | 2021-12-29 | 2023-06-29 | Salesforce.Com, Inc. | Optimizing network transactions for databases hosted on a public cloud |
US20230281218A1 (en) * | 2022-03-03 | 2023-09-07 | International Business Machines Corporation | Query offloading in a computer system |
US11762855B1 (en) * | 2022-06-10 | 2023-09-19 | Snowflake Inc. | Incremental maintenance of query results |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130080388A1 (en) * | 2011-09-23 | 2013-03-28 | International Business Machines Corporation | Database caching utilizing asynchronous log-based replication |
CN107787490A (zh) * | 2015-05-11 | 2018-03-09 | 甲骨文国际公司 | 分布式数据库网格中的直接连接功能 |
CN108121755A (zh) * | 2016-11-28 | 2018-06-05 | Sap欧洲公司 | 使用基于提示的路由在数据库系统中的工作负载切换 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8738568B2 (en) | 2011-05-05 | 2014-05-27 | Oracle International Corporation | User-defined parallelization in transactional replication of in-memory database |
US7769722B1 (en) * | 2006-12-08 | 2010-08-03 | Emc Corporation | Replication and restoration of multiple data storage object types in a data network |
US8838919B2 (en) * | 2010-08-30 | 2014-09-16 | Oracle International Corporation | Controlling data lag in a replicated computer system |
US9805108B2 (en) * | 2010-12-23 | 2017-10-31 | Mongodb, Inc. | Large distributed database clustering systems and methods |
US9892153B2 (en) | 2014-12-19 | 2018-02-13 | Oracle International Corporation | Detecting lost writes |
EP3248101B1 (en) * | 2015-01-23 | 2021-12-08 | ServiceNow, Inc. | Distributed computing system with resource managed database cloning |
US20170017688A1 (en) * | 2015-07-13 | 2017-01-19 | Paypal, Inc. | Query result caching for database environments |
CN108431804B (zh) * | 2015-10-23 | 2022-01-14 | 甲骨文国际公司 | 将多个容器数据库分组为单个容器数据库集群的能力 |
US10372726B2 (en) * | 2016-08-09 | 2019-08-06 | International Business Machines Corporation | Consistent query execution in hybrid DBMS |
US10216582B2 (en) * | 2016-08-15 | 2019-02-26 | International Business Machines Corporation | Recovery log analytics with a big data management platform |
US10949413B2 (en) | 2017-09-29 | 2021-03-16 | Oracle International Corporation | Method and system for supporting data consistency on an active standby database after DML redirection to a primary database |
-
2018
- 2018-06-25 US US16/016,978 patent/US11468060B2/en active Active
-
2019
- 2019-04-03 EP EP19718530.9A patent/EP3811230B1/en active Active
- 2019-04-03 WO PCT/US2019/025650 patent/WO2020005358A1/en active Search and Examination
- 2019-04-03 CN CN201980052057.7A patent/CN112534419A/zh active Pending
- 2019-04-03 EP EP22154419.0A patent/EP4064067B1/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130080388A1 (en) * | 2011-09-23 | 2013-03-28 | International Business Machines Corporation | Database caching utilizing asynchronous log-based replication |
CN107787490A (zh) * | 2015-05-11 | 2018-03-09 | 甲骨文国际公司 | 分布式数据库网格中的直接连接功能 |
CN108121755A (zh) * | 2016-11-28 | 2018-06-05 | Sap欧洲公司 | 使用基于提示的路由在数据库系统中的工作负载切换 |
Also Published As
Publication number | Publication date |
---|---|
EP4064067A1 (en) | 2022-09-28 |
EP3811230B1 (en) | 2022-02-09 |
WO2020005358A1 (en) | 2020-01-02 |
EP3811230A1 (en) | 2021-04-28 |
US20190392067A1 (en) | 2019-12-26 |
EP4064067B1 (en) | 2023-12-27 |
US11468060B2 (en) | 2022-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4064067B1 (en) | Automatic query offloading to a standby database | |
CN107209704B (zh) | 用于数据库管理的方法、系统和装置 | |
US11836155B2 (en) | File system operation handling during cutover and steady state | |
US10489181B2 (en) | Entity database browser | |
US10732836B2 (en) | Remote one-sided persistent writes | |
US8972405B1 (en) | Storage resource management information modeling in a cloud processing environment | |
US10942814B2 (en) | Method for discovering database backups for a centralized backup system | |
US8904120B1 (en) | Segmented fingerprint datastore and scaling a fingerprint datastore in de-duplication environments | |
US10528262B1 (en) | Replication-based federation of scalable data across multiple sites | |
US10802766B2 (en) | Database with NVDIMM as persistent storage | |
US20120158670A1 (en) | Fingerprints datastore and stale fingerprint removal in de-duplication environments | |
CA3070006C (en) | Method for reading data stored in a non-volatile cache using rdma | |
US11263236B2 (en) | Real-time cross-system database replication for hybrid-cloud elastic scaling and high-performance data virtualization | |
US11188516B2 (en) | Providing consistent database recovery after database failure for distributed databases with non-durable storage leveraging background synchronization point | |
US20230409431A1 (en) | Data replication with cross replication group references | |
US10740320B2 (en) | Systems and methods of operation lock management and system catalog overrides in database systems | |
US11354252B2 (en) | On-demand cache management of derived cache | |
US20230145520A1 (en) | Optimized synchronization for redirected standby dml commands | |
US20240143594A1 (en) | Offloading graph components to persistent storage for reducing resident memory in distributed graph processing | |
US20240184803A1 (en) | Data guard at pdb (pluggable database) level | |
US20230342355A1 (en) | Diskless active data guard as cache |
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 |