CN105989195A - 用于处理数据库数据的方法和系统 - Google Patents
用于处理数据库数据的方法和系统 Download PDFInfo
- Publication number
- CN105989195A CN105989195A CN201610166387.7A CN201610166387A CN105989195A CN 105989195 A CN105989195 A CN 105989195A CN 201610166387 A CN201610166387 A CN 201610166387A CN 105989195 A CN105989195 A CN 105989195A
- Authority
- CN
- China
- Prior art keywords
- data
- time
- capsule
- record
- deletion action
- 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.)
- Granted
Links
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/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- 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/235—Update request formulation
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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/2308—Concurrency control
-
- 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/2365—Ensuring data consistency and integrity
-
- 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
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)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
在用于在数据库管理系统中处理数据的方法中,处理器对第一数据容器执行删除操作,其中第一数据容器包括一个或多个数据记录,删除操作逻辑删除一个或多个数据记录中的至少一个数据记录。处理器将所执行的删除操作的时间与第一数据容器相关联。处理器对第一数据容器的第一数据记录执行写入操作。处理器将所执行的写入操作的时间与第一数据容器的第一数据记录相关联。响应于接收针对第一数据容器的数据库查询,至少基于所执行的写入操作的时间按时间顺序在所执行的删除操作的时间之后,处理器准许对第一数据容器的第一数据记录的访问。
Description
技术领域
本发明涉及数据库管理系统,更具体地,涉及由数据库管理系执行的删除操作。
背景技术
一些数据库管理系统用标记更新表的每一行,以便指示所标记的行应当被视为已删除。用于处理标记的扫描过程和计算开销可导致全表删除的较慢性能。
许多分析系统的全删除操作性能可能很慢,因为分析系统通常对于分析查询和处理任务是性能优化的,而并非对于批量删除。特别地,在提供快照隔离的数据库管理系统中的全删除操作,如例如在多版本并发控制(MVCC)系统中,趋于较慢,因为这种系统扫描表的每个单行,包括检查已经被逻辑删除的记录,以便执行全删除操作。删除单独行可能导致这种系统中的较差性能,而全表删除可能导致阻塞后续的写入事务,并因此可能阻塞并且与将要执行的分析和/或其它任务冲突。例如,在全表删除已经完成之前,重载通常不能开始。
发明内容
本发明的实施例的各方面公开了用于在数据库管理系统中处理数据的方法、计算机程序产品和计算机系统。处理器对第一数据容器执行删除操作,其中第一数据容器包括一个或多个数据记录,删除操作逻辑删除一个或多个数据记录中的至少一个数据记录。处理器将所执行的删除操作的时间与第一数据容器相关联。处理器对第一数据容器的第一数据记录执行写入操作。处理器将所执行的写入操作的时间与第一数据容器的第一数据记录相关联。响应于接收针对第一数据容器的数据库查询,至少基于所执行的写入操作的时间按时间顺序在所执行的删除操作时间之后,处理器准许对第一数据容器的第一数据记录的访问。
附图说明
下面,作为示例,参考附图对本发明的实施例进行详细的描述,其中:
图1描绘了根据本发明的实施例的包括数据库管理系统的计算系统;
图2描绘了根据本发明的实施例的计算机实现的方法;
图3描绘了根据本发明的实施例的第一数据容器的数据块。
具体实施方式
现在参考附图详细描述本发明。
图1描绘了根据本发明的一个实施例的计算机系统,其被标记为102。图1描绘了根据本发明的说明性实施例的计算机系统102的组件的框图。应当知道,图1仅仅提供一个实现的图示,并不意味着对其中可实现不同实施例的环境的任何限制。可以对所描绘的环境进行许多修改。
计算机系统102可以是管理服务器、网络服务器、或者能够接收和发送数据并处理程序指令的任何其它电子装置或计算系统。在一些实施例中,计算机系统102可以是膝上型计算机、平板计算机、上网本计算机、个人计算机(PC)、桌上型计算机、或任何可编程电子装置。
根据本发明的实施例,计算机系统102包括数据库管理系统(DBMS)132。DBMS 132包括第一数据容器116,其包括多个数据记录134。第一数据容器116可以是例如数据库表或数据库表的分区。DBMS 132还包括用于接收数据库查询的接口110。接口110可以是例如结构化查询语言(SQL)接口。DBMS 132还包括程序逻辑114。程序逻辑114可以被配置为:在对第一数据容器116执行了创建或修改第一数据容器116的一个数据记录的写入操作后,与所述数据记录相关联地存储当前时间作为创建时间(参见图1,列124)(参见图2,步骤202);在对第一数据容器116执行了删除第一数据容器116的全部数据内容的全删除操作后,与第一数据容器116相关联地存储当前时间作为全删除时间(例如,全删除时间136、138),全删除时间采用每一全删除操作和每一数据内容被完全删除的第一数据容器116对单一数据值的形式存储(参见图2,步骤204);响应于接收针对第一数据容器116的数据库查询,评估与第一数据容器116相关联的一个或多个单值全删除时间,诸如全删除时间136、138,并有选择地提供所接收的数据库查询对在第一数据容器116中包含的数据记录134中所分配的创建时间比与第一数据容器116相关联地存储的最新全删除时间晚的数据记录的访问。例如,有选择地提供对数据记录(诸如来自数据记录134的数据记录)的访问可包括允许读取和/或写入操作知道数据记录的存在并分析该数据记录的数据内容。读取和/或写入操作可例如被客户端计算机(未示出)请求。例如,所接收的数据库查询可以是SELECT、UPDATE或DELETE语句。
图2描绘了根据本发明的实施例的用于操作DBMS(例如DBMS 132)的程序逻辑114的流程图。例如,DBMS可被实现为如图1所描绘的DBMS132。DBMS 132被配置为管理第一数据容器116。第一数据容器116包括多个数据记录134。
在步骤202中,在对第一数据容器116执行创建或修改第一数据容器116的多个数据记录134中的一个数据记录时,程序逻辑114将当前时间与所述数据记录相关联地存储,作为创建时间(参见图1,列124)。
在步骤204中,在对第一数据容器116执行删除第一数据容器116的全部数据内容的全删除操作时,程序逻辑114将当前时间与第一数据容器116相关联地存储,作为全删除时间(例如,全删除时间136、138)。在一些实施例中,全删除时间(例如,全删除时间136、138)采用每一全删除操作和每一数据内容被完全删除的第一数据容器116对单一数据值的形式存储。
在步骤206中,响应于接收针对第一数据容器116的数据库查询,程序逻辑114评估与第一数据容器116相关联的一个或多个单值全删除时间(例如136、138),并有选择地提供对在第一数据容器116中包含的多个数据记录134中所分配的创建时间比与第一数据容器116相关联地存储的最新全删除时间(例如,138)晚的数据记录的访问。
例如,所接收的数据库查询可以是读取SQL查询(例如,SELECT语句)或写入SQL查询(例如,UPDATE、INSERT或DELETE语句)。如果所述数据记录的创建时间指示所述数据记录在对所述数据容器(例如,第一数据容器116)执行的最新全删除操作之前创建,则数据库查询将被DBMS 132或其中的程序逻辑禁止访问和识别特定数据记录的存在。
全删除功能可以由DBMS 132或其中的程序逻辑提供,其能够通过仅存储与被执行了全删除功能的第一数据容器116相关联的单一数据值,快速禁止对巨量数据记录(例如,在诸如第一数据容器116的数据容器中存储的所有数据记录,诸如多个数据记录134)的访问。无需将单独的数据记录标记为“已删除”或“不可见”。存储指示最新全删除时间的单一数据值所需的时间将阻止随后的事务一段时间。
第一数据容器116可以是例如数据库表。在这种实施例中,全删除操作是对第一数据容器116有选择地执行的全表删除操作。
可替代地,第一数据容器116可以是数据库表分区。在这种实施例中,全删除操作是对第一数据容器116有选择地执行的全分区删除操作。DBMS 132可包括一些是数据库表的数据容器和其它是数据库表分区的数据容器,DBMS或其中的程序逻辑能够执行全表删除操作以及全表分区删除操作。其数据内容应被删除的表可由表标识符来标识,分区可由分区标识符来标识。
根据一些实施例,全删除操作可由全表刷新命令或全分区刷新命令、TRUNCATE语句、或者缺少WHERE子句的DELETE FROM TABLE语句来触发。根据一些实施例,DELETE FROM TABLE语句以与TRUNCATE语句相同的方式实现。在这两种情况下,例如,用于物理删除未使用的逻辑删除的数据记录的过程(例如GROOM TABLE过程)可在逻辑全删除过程之后执行。用于物理删除的过程与全删除操作异步执行。在这两种情况下,物理删除操作可无需阻止任何事务大量时间地执行。这与当前的TRUNCATE实现不同,由于它是清空整个表的数据定义语言(DDL)语句,因此,它迫使事务发出TRUNCATE以进行等待,直到所有其它当前使用该表运行的事务已经完成它们各自的工作,如果使用该表的事务正使用长期运行(或破碎)的事务进行分析工作,则有些可能花费很长的时间,如通常在线分析处理(OLAP)优化系统上的情况。
根据优选的实施例,全删除操作是没有物理移除受影响的数据记录的数据的逻辑删除操作。在已经执行了全删除操作后,DBMS 132可将创建时间比最新全删除时间早的所有数据记录看作被逻辑删除的数据记录。因此,用于全表删除命令或全分区删除命令的更有效的实现可被提供以用于快速地逻辑删除数据记录。
根据一些实施例,每个全删除操作和所述全删除操作的全删除时间136的存储在相应的全删除事务内执行。如果在全删除事务开始之前已经对第一数据容器开始执行的事务的读取或写入语句并行地对第一数据容器执行,则DBMS 132执行每个全删除事务。因此,全删除事务没有被延迟到所有在前的事务已经开始,而是可以立即开始执行。全删除操作是逻辑删除操作,其只对用于在全删除操作以后的数据库查询的数据记录的可访问性(“可见性”)有影响。并行执行的读取或写入语句不受分配给第一数据容器116的最新全删除时间(例如全删除时间138)的任何变化的影响。在一些实施例中,与第一数据容器116相关联地存储新的全删除时间(例如,全删除时间136、138)可以不干扰或影响任何先前开始并且当前仍在进行中的事务(从第一数据容器116读取数据或将数据写入第一数据容器116)的结果。有关哪些数据记录可被访问以及哪些对所述先前开始的事务可见的决策取决于先前执行的第一数据容器116的全删除操作的先前存储的全删除时间(例如,全删除时间136、138),所述先前存储的全删除时间(例如,全删除时间136、138)是在所述先前开始并仍在进行中的事务开始执行的时刻的最新全删除时间。可以确保事务数据一致性,而不必延迟全删除操作,直到对与全删除操作相同的第一数据容器(例如,第一数据容器116)操作的所有进行中的事务已被提交。未提交的事务可对旧数据继续工作,当全删除操作在对第一数据容器116执行时(甚至在之后),因为DBMS 132根据先前存储的全删除时间(例如,全删除时间136、138)准许或拒绝对第一数据容器的记录的访问(例如,通过允许或禁止SQL语句知道特定数据记录的存在,即,“看见”所述数据记录)。因此,涉及将当前时间存储为最新全删除时间的全删除操作可以开始,而没有由仍在进行中的事务引起的任何延迟,由此,可以提供事务一致性。
例如,用10亿个记录填充表“test_table”的加载事务“TL”可能在时间t1开始执行,包括针对所述“test_table”的选择语句的另一个事务可能在时间t2开始,包括全删除语句的再一个事务可能在时间t3开始,由此,时间点t1可位于t2之前,而时间点t2可位于t3之前。本发明的实施例认识到采用当前的技术,全删除不能在加载事务完成之前开始工作,因为全删除需要标记被加载事务插入的所有行。在本发明的一些实施例中,全删除语句可立即开始,并可与加载操作和SELECT操作并行地操作,而对于事务一致性没有冲突。加载事务可继续插入行:行可被分配例如加载事务的事务ID或者加载事务的开始时间t1,作为各自的创建时间t1。由于t1在t3之前,因此,它们对随后在时间t2开始的SELECT事务是可访问的(“可见的”),并对随后在时间t3开始的全删除语句是可访问的(“可见的”),而对在全删除事务开始以后开始的任何事务是不可访问的(“不可见的”)。对于一致性,诸如程序逻辑114的程序逻辑可要求具有SELECT语句的第二个事务在加载事务完成之前(可能很长的时间)不开始,并且在全删除事务的开始时间t3之后开始的任何事务不能在全表删除语句已被提交之前开始执行(这可能很快),因为只有单一数据值需要被存储。全表删除操作允许用户和/或诸如程序逻辑114的程序逻辑将还未插入的行“标记”为逻辑删除,而当前运行的事务继续用旧的事务ID工作。
根据一些实施例,用作全删除时间(例如,全删除时间136、138)的当前时间是在执行全删除操作时由时钟确定的时钟时间。用作创建时间的当前时间是在执行写入操作(例如,INSERT或UPDATE语句)时由时钟确定的时钟时间。根据实施例,特别是在对称多处理(SMP)或集群环境中,采用本领域已知的各种手段和机制(例如,共享主存储器(例如存储器108),其对于由管理系统(例如计算机系统102)的所有处理器(例如处理器104)的单一操作系统实例控制的所有I/O装置(未示出)是可访问的)以保证集群中的时钟被同步,并且保证单独的处理器核(例如,处理器104的单独的处理器核)在确定当前时间时生成唯一的时间戳,即使是并行运行。例如,用作全删除时间的当前时间可以是在开始包括全删除操作的事务时由时钟确定的时钟时间。用作创建时间的当前时间可以是在开始执行将创建或更新数据库中的所述数据记录的INSERT、UPDATE或加载操作的事务时由时钟确定的时钟时间。
根据替代实施例,用作全删除时间(例如全时间删除136、138)的当前时间是在其中执行全删除操作的全删除事务的事务ID。用作创建时间的当前时间是创建或修改了数据记录的数据库事务的事务ID。由DBMS 132管理的事务(包括全删除事务和创建、读取或修改数据记录的事务)的事务ID按时间顺序排序,并且是唯一的编号。
根据替代实施例,该方法包括:响应于接收针对第一数据容器116的数据库查询,创建第二数据容器130。第二数据容器130最初可以不包括任何数据。例如,第二数据容器130可以是附加数据库表、物化视图或数据库视图。该方法还可包括从第一数据容器116中提取所分配的创建时间值比与第一数据容器116相关联地存储的最新全删除时间(例如全删除时间138)晚的数据记录,并使用第二数据容器130以用于返回所提取的数据。例如,在第二数据容器130是视图的实施例中,可实现经由第二数据容器130提取和返回数据,以使得对其创建了第二数据容器130的数据库查询对第二数据容器130(视图)执行。因此,所述视图可被调用,所执行的视图可检索尚未被逻辑删除(即,被渲染成不可访问)的数据记录。所检索的数据记录例如被返回给客户端。可替代地,如果另一个数据库表或物化视图用作第二数据容器130,则所提取的数据可被暂时存储在第二数据容器130中,并可以从临时存储装置(例如存储装置106)中返回。在一些实施例中,该方法还包括由程序逻辑有选择地提供对多个数据记录134中所分配的创建时间值比与第一数据容器116相关联地存储的最新全删除时间(例如全删除时间138)早的数据记录的访问。这可以包括改写所接收的数据库查询,以使得被改写的数据库查询访问第二数据容器130而不是第一数据容器116,并执行被改写的数据库查询,而不是所接收的数据库查询。
例如,为了有选择地准许或拒绝对查询所针对的第一数据容器116中多个数据记录134中的特定数据记录的访问,响应于接收数据库查询,DBMS 132自动执行以下SQL语句:“CREATE VIEW container2view ASSELECT*FROM TABLE container1table WHERE creat-time>=full-delete-time”。第二数据容器130即视图container2view将没有已由全删除操作逻辑删除的数据记录。
根据一些实施例,特别是其中DBMS 132提供MVCC功能以便有选择地准许或拒绝对第一数据容器中的特定数据记录的访问的实施例,响应于接收数据库查询,DBMS 132或其中的程序逻辑自动执行以下SQL语句:
“query-exec-time”可指示已经接收了查询(例如SELECT语句)的DBMS 132创建包括实现所述查询的一个或多个语句的事务的时刻,该事务被DBMS 132调度以用于执行。例如,查询执行时间“query-exec-time”可以是执行所接收的查询的事务的事务ID。可替代地,“query-exec-time”可以是其执行由所接收的查询触发的事务的开始时间。所接收的数据库查询例如可由DBMS 132自动改写,以使得被改写的查询访问所创建的第二数据容器130,而不是第一数据容器116。例如,如果所接收的数据库查询是“SELECT zip-code from container1table WHERE name=‘Miller’”,则被改写的查询可以是“SELECT zip-code from container2view WHEREname=’Miller’”。
如果第二数据容器130是视图,则程序逻辑,例如所存储的SQL查询,能够从第一数据容器116中检索结果,由此,客户端可被启动以与客户端可查询第一数据容器116相同的方式来查询视图(即,第二数据容器130)。例如,在呈现给客户端时,视图(即第二数据容器130)可以“显示”与第一数据容器116相同的列号和名称。所述视图的程序逻辑可包括SELECT语句,其能够有选择地从第一数据容器116中检索所分配的创建时间比与第一数据容器116相关联地存储的最新全删除时间(例如全删除时间138)早的数据记录。所述SELECT语句可以在创建第二数据容器130时通过评估和使用最新已对第一数据容器116执行的全删除操作的全删除时间来动态地创建。因此,用作第二数据容器130的视图是动态计算或整理的“虚拟表”,以允许被改写的数据库查询对该视图执行。响应于随后的数据库查询,在视图被创建后应用于第一数据容器116中的数据的变化在创建视图(第二数据容器)的较新版本时反映。
在一些实施例中,随后执行的物理删除操作对第一数据容器116执行。如果第二数据容器130被实现为(非物化)数据库视图,则用于所述视图的物理删除操作可以不需要,因为所述视图不包括第一数据容器116的数据记录的物理副本。然而,由于视图在每次接收到数据库查询后重新创建,因此,DBMS 132可以在一段时间之后删除旧的视图。
第一数据容器116可以例如是表分区。每一个表分区可具有所分配的分区ID,并可被分配全删除时间(例如全删除时间136、138),由此,特定数据库表的不同分区的全删除时间可以彼此相同或不同。在一个实施例中,如果在这种情况下创建第二数据容器130,则DBMS 132可以执行以下命令:“CREATE VIEW container2view AS SELECT*FROM TABLEcontainer1table WHERE
(partition-ID=1and create-time>=full-delete-time-partition-1)OR
(partition-ID=2and create-time>=full-delete-time-partition-2)OR
(partition-ID=3and create-time>=full-delete-time-partition-3)OR
[…]
(partition-ID=n and create-time>=full-delete-time-partition-n)”.
在其它实施例中,DBMS 132可以执行以下命令:“CREATE VIEWcontainer2view AS SELECT*FROM TABLE container1table WHERE
(partition-ID=1and create-time>=full-delete-time-partition-1ANDIDRDC*)OR
(partition-ID=2and create-time>=full-delete-time-partition-2ANDIDRDC*)OR
(partition-ID=3and create-time>=full-delete-time-partition-3ANDIDRDC*)OR
[…]
(partition-ID=n and create-time>=full-delete-time-partition-n ANDIDRDC*)”。
表达式IDRDC是参数“单独数据记录删除条件”。如果(record-delete-time IS NULL OR record-delete-time>query-exec-time),则IDRDC是“真”。
在一个示例中,数据库表可以按日期分区,以使得每个月有一个分区,或者根据任何其它分区标准来分区。在接收或执行用于对被分区的数据库表的全表删除的命令时,DBMS 132可以自动生成多个全删除命令,其分别针对所述被分区的数据库表的不同分区。因此,全表删除语句可采用多个全分区删除操作的形式执行,由此DBMS 132自动确定数据库表是否被分区,并且如果需要,则根据单一全表删除语句来自动生成多个全分区删除语句。
具有一些选择标准的删除语句也可以被转换成一个或多个全分区删除语句,其仅影响所述表的可用分区的子集。例如,如果表通过日期分区,以使得每个月有一个分区,并且DBMS 132接收到删除一年以前的所有数据记录的查询,则DBMS 132可自动识别包括一年以前的数据记录的分区子集,并且DBMS 132将创建有选择地针对所识别的分区的全分区删除语句。
根据实施例,只有当所接收的数据库查询是或者包括对第一数据容器116的数据记录的读取操作时,第二数据容器130才被创建。读取操作是读取数据记录的数据的语句,或者用于返回所述数据或者用于识别将被更新或删除的数据。例如,SQL SELECT语句是这种读取操作。UPDATE语句和DELETE语句每一个是所述含义内的“读取操作”,因为每个操作需要将对其执行所述语句的数据记录的标识。因此,SELECT、UPDATE或DELETE语句能够触发第二数据容器130的创建。然而,根据所述术语的上述指定的含义,SQL INSERT语句不是读取操作。因此,INSERT语句可对第一数据容器116直接执行,并且可不触发第二数据容器130的创建。对第一数据容器执行INSERT语句可确保新添加的数据不丢失,因为数据总是存储在“基础”容器中。
在所描绘的示例中,第一数据容器116包括列120、122、124、126、128。一些列,诸如列120和122,可包括用户数据或任何其它种类的数据。另一个列124可包括多个数据记录134中的数据记录的创建时间(例如,已创建了所述数据记录的事务的事务ID)。另一个列126可包括多个数据记录134中被单独删除(例如,通过DELETE SQL语句删除)的数据记录的删除时间。在一些实施例中,列128实际上可以不是表116的列。在所描绘的实施例中,列128被描述以说明哪些事务将能够访问并因此“看见”特定数据记录,这取决于所述数据记录的创建时间、所述数据记录的删除时间,如果有的话,取决于当前事务的执行时间(由所述事务的ID指示),并取决于与第一数据容器116相关联地存储的最新全删除时间138。
在一些实施例中,事务的事务ID按时间排序,例如,具有事务IDTXID102被排在具有事务ID TXID200的事务之前,并比它早。
根据一些实施例,只读事务(例如,只包括一个或多个SELECT语句的事务)可能没有被分配按时间排序的唯一的事务ID,因为只读事务将不修改多个数据记录134中的任何现有数据记录的创建时间,并且也不导致新数据记录的插入。因此,多个只读事务可使用相同的事务ID,因为每个只读事务可具有数据库表内容上的相同视图。这可能是有利的,因为必须生成和管理较少的唯一的事务ID,因此,事务ID消耗较少的存储器。这在其中所有I/O装置(未示出)可访问的共享主存储器(例如,存储器108)用于同步分布系统中的时钟的环境中特别有利,其中所有I/O装置由管理系统(例如计算机系统102)的所有处理器(例如处理器104)的单一操作系统实例控制,因为在这种系统中的主存储器通常被占用了其容量。
例如,用于访问第一数据容器116的一些数据记录的查询可由DBMS132接收。DBMS 132在事务TX156(未示出)中执行所述查询。响应于接收查询,DBMS 132可自动生成第二数据容器130,其在一些实施例中可以是数据库视图,该第二数据容器有选择地包括多个数据记录134中具有比最新全删除操作晚的创建时间并且没有被DELETE语句单独删除的那些数据记录。例如,在TX156的时间,最新全删除操作由事务TX100执行(参见图1,全删除时间表115)。
根据实施例,对第一数据容器116执行的每个全删除操作的全删除时间被存储为在各自的全删除操作期间创建的第二数据容器130的模式定义的一部分。关于特定的第一数据容器116的相关信息可被存储为各自的第二数据容器130的元数据的一部分,其可以减轻数据库的维护。
根据上面呈现的示例,其中第二数据容器130被表示为container2view,全删除时间(例如,全删除时间136、138)可被存储为例如视图container2view的模式定义的一部分。全删除操作可通过使用用于视图中的“full-delete-time”常数的当前时间,例如当前执行权删除操作的事务的事务ID,来改变视图定义。不是第一数据容器container1table的单个数据记录需要被修改或标记为“已删除”,以便完成数据记录的逻辑删除操作。
根据替代实施例,DBMS 132包括至少一个全删除时间表115。全删除时间表115是存储一个或多个第一数据容器(例如第一数据容器116)的全删除时间(诸如全删除时间136和全删除时间138)的单独的数据库。对于一个或多个第一数据容器(例如第一数据容器116)中的每个数据容器,全删除时间表115包括分配给所述第一数据容器的一个或多个单值全删除时间。每个全删除时间指示对分配给所述全删除时间的第一数据容器(例如第一数据容器116)执行全删除操作的时间。第一数据容器116的全删除时间被存储在全删除时间表115中。所分配的创建时间比第一数据容器116的最新全删除时间晚的数据记录的提取可通过执行SELECT语句来完成。SELECT语句从全删除时间表115中读取被分配给第一数据容器116的最新全删除时间,并使用所读取的最新全删除时间(例如,全删除时间138)以用于从第一数据容器116中有选择地读取所分配的创建时间值比所读取的最新全删除时间晚的所有数据记录。在单独的表(例如全删除时间表115)中存储全删除时间可帮助避免与执行用于修改数据库目录112中的数据容器的元数据所需的DDL语句相关联的计算开销。数据库目录112是DBMS 132的组件,其包括其中存储了诸如库表、视图、同义词、值范围、索引、用户和用户组的数据库对象的定义的元数据。此外,可以避免同时访问第一数据容器116和第一数据容器116的模式定义的DDL或DML语句的冲突。
根据上面呈现的示例,其中container2view被创建为第二数据容器130,全删除时间可被存储为作为单独的数据容器(例如表“全删除时间表”)的一部分的单一数据值。全删除时间表115还可存储其它第一数据容器(例如,除了第一数据容器116之外的第一数据容器)的全删除时间。
例如,第二数据容器130可通过命令“CREATE VIEW container2viewAS SELECT*FROM TABLE container1table WHEREcreate-time>=(SELECT full-delete-time from full-delete-time-table WHEREtablename=’container1table)’”创建。根据其它实施例,执行以下的SQL语句:“CREATE VIEW container2view AS SELECT*FROM TABLEcontainer1table WHEREcreate-time>=(SELECT full-delete-time from full-delete-time-tableWHERE tablename=’container1table)AND(record-delete-time IS NULL ORrecord-delete-time>query-exec-time)”。
根据替代实施例,有选择地准许对多个数据记录134中所分配的创建时间值比与第一数据容器116相关联地存储的最新全删除时间晚的数据记录的访问包括:响应于接收数据库查询,读取指示对第一数据容器116执行的最新全删除操作的时间的单一数据值;改写所接收的数据库查询,以使得改写的数据库查询包括必须由对于所接收的查询可访问的数据记录满足的附加条件,该附加条件是与所述数据记录相关联地存储的创建时间必须比由所读取的单一数据值指示的最新全删除操作晚的条件;以及执行改写的数据库查询而不是所接收的数据库查询。
例如,所接收的具有事务ID 500(未示出)的查询可包括语句:“SELECT name from customer where zip-code is“12345””。最新全删除可能在事务ID=200处进行(参见图1,全删除时间表115)。因此,已被分配介于1和199之间的创建时间的数据记录应被视为逻辑删除,并且对于客户端应当不可见。为此,在一个实施例中,上述的命令被DBMS 132改写为以下的语句:“SELECT name from customer where zip-code=“12345”and create-time<200”。因此,DBMS 132将只返回已经由事务ID小于200的事务创建的数据记录。在一些实施例中,原始语句可被改写为:“SELECTname from customer where zip-code=“12345”and create-time<200AND(record delete time IS NULL OR record-delete-time>500)”。
该方法的好处是无需创建附加的第二数据容器(例如第二数据容器130),并且可避免与第二数据容器的创建相关联的计算开销。
根据一些实施例,DBMS 132提供了控制功能。控制功能可被实现为硬件逻辑。控制功能可被配置为允许所接收的数据库查询有选择地访问第一数据容器116中包含的多个数据记录134中所分配的创建时间比与第一数据容器116相关联地存储的最新全删除时间晚的数据记录。例如,步骤206(见图2)可由所述控制功能执行,其可对应于MVCC可见性功能,而步骤202和204可由DBMS 132的其它模块实现。DBMS 132可响应于接收数据库查询而执行控制功能。在一些实施例中,控制功能的执行包括:读取指示对第一数据容器116执行最新全删除操作的时间的全删除时间(例如全删除时间138);有选择地允许数据库查询访问第一数据容器116的多个数据记录134中所分配的创建时间(参见图1,列124)比所读取的最新全删除时间晚的任何一个数据记录;以及有选择地拒绝数据库查询访问第一数据容器116的多个数据记录134中所分配的创建时间比所读取的最新全删除时间(例如全删除时间138)早的任何数据记录。
由此,可以实现有选择地提供对第一数据容器116中包含的多个数据记录134中所分配的创建时间比与第一数据容器116相关联地存储的最新全删除时间(例如全删除时间138)晚的数据记录的访问。
将控制功能实现为硬件逻辑可加速执行逻辑删除过程的速度。硬件逻辑可以是例如集成电路(例如,使用专用硬件门实现的具有MVCC可见性相关指令的处理器)。硬件门可使用超高速集成电路硬件描述语言(VHDL)或其它硬件描述语言来定义。如在此使用的“可见性相关指令”是控制特定数据库语句是否被允许知道特定数据记录是否存在的指令。所述控制可被施加(例如,DBMS 132和/或在DBMS 132中包含的或与DBMS132耦合的MVCC逻辑)。如在此使用的“对于特定语句可见的数据记录”是其存在被传送到所述语句的数据记录。对于特定语句不可见的数据记录是其存在对所述语句隐藏的数据记录,其结果是所述语句既不知道所述记录的存在,也不可访问上述数据记录。硬件逻辑可被实现为例如现场可编程门阵列(FPGA)。
根据一些实施例,控制功能被实现为软件逻辑。
根据实施例,DBMS 132被配置为经由MVCC逻辑来控制对第一数据容器(例如第一数据容器116)的数据的并行访问。在一些实施例中,MVCC逻辑或另一个后台进程可周期性地执行物理删除操作,以扫过并删除旧的和/或过时的数据记录,从而—除了其它方面之外—评估与每个数据容器(例如第一数据容器116)相关联的一个或多个全删除时间(例如,全删除时间134、136)以确定多个数据记录134中的数据记录或数据记录块是否应被删除。
根据一些实施例,基于硬件或软件的控制功能被实现为MVCC逻辑的MVCC可见性功能。第一数据容器116可以是MVCC使能表,全表删除时间被存储为与所述MVCC使能表相关联的单一数据值。在对第一数据容器116执行多个全删除操作的情况下,多个全删除时间可与第一数据容器116相关联地存储,并且每当数据应被访问时由MVCC逻辑使用和评估,以便有选择地提供对属于特定版本的数据记录的查询访问。在一些实施例中,对一个或多个第一数据容器(例如第一数据容器116)并行执行的单独的全删除操作之间的时间间隔可构成属于同一版本的一组数据记录。
DBMS 132可被配置为管理多个第一数据容器(例如第一数据容器116)。DBMS 132可包括至少一个全删除时间表115。对于每个第一数据容器(例如第一数据容器116),全删除时间表115包括分配给第一数据容器116的一个或多个单一数据值,每个单一数据值是指示对各自所分配的第一数据容器(例如第一数据容器116)执行全删除操作的时刻的全删除时间。全删除时间被存储在全删除时间表115中。在一些实施例中,全删除时间表115是MVCC表,即,由MVCC功能使用以提供多版本控制的附加表。
根据一些实施例,该方法可进一步包括:响应于接收删除第一数据容器116的多个数据记录134中的数据记录的请求,与多个数据记录134的所述数据记录相关联地存储当前时间作为记录删除时间;响应于接收针对第一数据容器116的数据库查询,评估与第一数据容器116相关联的一个或多个单值全删除时间、与第一数据容器116的多个数据记录134中的数据记录相关联的创建时间和记录删除时间(如果有的话),并有选择地准许访问第一数据容器116中包含的多个数据记录134中满足以下要求的数据记录:a)与多个数据记录134中的数据记录相关联的创建时间(参见图1,列124)比与第一数据容器116相关联地存储的最新全删除时间138晚;b)多个数据记录134中的数据记录缺乏所分配的记录删除时间。创建时间和记录删除时间的组合可提供数据记录的有效间隔。
根据一些实施例,有选择地准许或拒绝对多个数据记录134中的特定数据记录的访问的步骤包括:评估组成所述数据记录的与第一数据容器116相关联的一个或多个全删除时间(例如,全删除时间136、138),评估所述数据记录的创建时间,以及评估所述数据记录的记录删除时间。如果数据记录的创建时间比第一数据容器116的最新全删除时间(例如全删除时间138)晚,并且如果数据记录没有被分配在对所述数据记录的访问应被准许或拒绝的所接收的数据库查询的执行时间之前的记录删除时间,则DBMS 132准许所接收的查询对数据记录的访问。
例如,所接收的数据库查询可在具有事务ID 324的事务中执行。查询可以针对具有所分配的全删除时间100和200(例如全删除时间136、138)的第一数据容器116,由此,100和200是在过去已对第一数据容器116执行了全删除操作的事务的标识符。多个数据记录134中的第一数据记录可具有所分配的创建时间202(已创建了第一数据记录的事务的事务ID)和记录删除时间228。多个数据记录134中的第二数据记录可能被分配了创建时间207(已创建了第二数据记录的事务的事务ID),并且可能未被分配任何记录删除时间。在这种示例中,DBMS 132可准许所接收的查询对第二数据记录的访问,因为创建时间207比最新全删除时间200晚,并且第二数据记录没有被分配位于所接收的数据库查询的执行时间(即事务ID:324)之前的记录删除时间。然而,DBMS 132可拒绝所接收的查询对第一数据记录的访问,因为第一数据记录具有在所接收的数据库查询的执行时间(即事务ID:324)之前的所分配的记录删除时间228。因此,当扫描第一数据容器116时,所接收的查询将“看见”第二数据记录,而不是第一数据记录,因为第一数据记录相对于所接收的查询处于“逻辑删除”状态。
如上所述,一些实施例在提供MVCC功能的DBMS(例如DBMS 132)中实现。关于多个数据记录134中的数据记录是否具有在所接收数据库查询的执行时间之前的所分配的记录删除时间的评估可在提供MVCC支持的DBMS中使用。在这种DBMS中,数据库查询可能被分配了指示位于过去的时刻的事务ID。若干数据记录可能被分配了在所接收的数据库查询的执行时间之后来临的记录删除时间。这种数据记录将不被视为逻辑删除,因为记录删除操作是在接收并执行了数据库查询之后在MVCC-DBMS中执行的。例如,数据库查询可以针对几天或几个月前的数据的版本。
根据一些实施例,DBMS 132物理删除第一数据容器116的多个数据记录134中的多个数据记录。这种物理删除可包括:识别当前访问第一数据容器116的一个或多个读取和/或写入事务中最早的一个。在可替代实施变型中,识别当前访问由DBMS 132管理的多个第一数据容器(例如第一数据容器116)中的任何一个的所有事务中最早的一个。最早的当前所执行的事务是被识别以用于将被物理删除的特定第一数据容器(例如第一数据容器116)还是被识别以在全局用于DBMS 132的所有第一数据容器的问题可取决于所使用的DBMS的类型的特殊性,例如,两个选项中的哪个可以更快地执行的问题。最早的所识别的事务可包括读取数据操作语言(DML)语句(特别是SELECT语句)和/或例如UPDATE或INSERT语句的写入数据操作语言语句的任意组合。这种物理删除也可包括:识别阈值时间,该阈值时间指示在开始所识别的最早的事务的时刻被分配给第一数据容器116的最新全删除时间(例如全删除时间138);评估被分配给第一数据容器116的多个数据记录134中的每个数据记录的创建时间值(参见图1,列124);和/或有选择地物理删除第一数据容器116的多个数据记录134中所分配的创建时间比所识别的阈值时间早的数据记录。
物理删除可释放不再需要的被占用的存储空间。将可通过将单一值存储为第一数据容器116的最新全删除时间来非常快速地执行的逻辑删除操作与可在稍晚的时刻执行的物理删除操作相分离可以是有益的,因为物理删除操作可花费更多的时间,并在一些情况下可包括单独访问将被物理删除的每个数据记录。然而,由于物理删除过程与逻辑删除操作异步执行,因此,在逻辑删除操作之后的其它数据库操作不会被物理删除过程延迟。识别阈值时间可确保没有仍然被正在进行中的事务访问的数据记录被物理删除。
在没有事务在DBMS 132执行物理删除操作时执行的情况下,DBMS132使用在开始物理删除操作后识别的最新全删除时间(例如,全删除时间138)作为阈值时间。在一些实施例中,物理删除操作定期执行,诸如根据指定的时间间隔。物理删除操作是恢复由多个数据记录134中被逻辑删除的数据记录占用的磁盘空间的操作。相比而言,对第一数据容器116的全删除操作可能没有从第一数据容器116中物理删除MVCC系统中的旧的数据记录或者其旧的版本。例如,物理删除操作可被实现为SQL“GROOM table”命令。用户可在物理删除操作正在发生时做诸如SELECT、UPDATE、DELETE和INSERT操作的任务。
根据实施例,多个第二数据容器(例如第二数据容器130),例如多个数据库视图,可存在以用于访问特定第一数据容器(例如第一数据容器116)的多个数据记录134中的数据记录。在这种实施例中,如果将被删除的数据记录经由仍在使用并充当第二数据容器(例如第二数据容器130)的任何当前已有视图是不可访问(“不可见”)的,则可以只对第一数据容器116执行物理删除操作。
根据一些实施例中,物理删除操作被实现为第一数据容器116的数据记录的顺序扫描,以用于识别并物理删除多个数据记录134中已被逻辑删除并且当前未被DML语句访问的数据记录。
根据其它实施例,如例如在图3中所描绘的,该方法包括对第一数据容器116执行逐个数据块的物理删除操作。第一数据容器116包括多个数据块(例如,数据块302、304、306和308)。每个数据块包括第一数据容器116的多个数据记录134中的多个数据记录。每个数据块具有所分配的块开始时间。块开始时间是数据块的具有所述数据块的所有数据记录的最晚创建时间的数据记录的创建时间。该方法可以进一步包括:由DBMS132或其中的逻辑执行用于物理删除第一数据容器116的一个或多个数据块的数据记录的物理删除操作;对于第一数据容器116的每个数据块,物理删除操作包括:识别当前访问第一数据容器116的所有事务中的最早的事务;可替代地,识别当前访问由DBMS 132管理的所有第一数据容器中的任何一个的所有事务中的最早的事务。例如,最早的当前执行的事务是被识别以用于将被物理删除的特定第一数据容器还是被识别以在全局上用于DBMS 132的所有第一数据容器的问题可以取决于例如所使用的DBMS的类型的特殊性。物理删除操作可以进一步包括:识别阈值时间,该阈值时间指示在开始所识别的最早的事务的时刻被分配给第一数据容器116的最新全删除时间(例如全删除时间138);识别数据块的块开始时间;例如,块开始时间可以是已经更新或插入了所述数据块的最新数据记录并且由此已经创建了所述数据记录的创建时间的写入事务的事务ID;所述事务ID可能已被使用并存储为所述数据记录的创建时间。优先地,块开始时间从所述数据块的元数据中读取。物理删除操作可以进一步包括:如果所识别的块开始时间比所识别的阈值时间早,则有选择地物理删除数据块;以及如果所识别的块开始时间比所识别的阈值时间晚,则跳过数据块的物理删除。
如果没有事务在DBMS 132执行逐块物理删除操作时执行,则DBMS132使用在开始物理删除操作后识别的最新全删除时间(例如全删除时间138)作为阈值时间。
逐块物理删除操作可进一步提高性能,因为无需评估数据块的每个单独数据记录的创建时间。维持和评估块特定的块开始时间可以允许识别块开始时间比所识别的阈值时间早的数据块。这表示所述数据块不包括当前被仍然未完成的并行事务访问的数据记录。如果块开始时间比阈值时间晚,则所述数据块可以包括当前被并行事务访问的数据记录。在这种情况下,当前评估的数据块没有被物理删除。相反,评估下一个数据块。
根据所述实施例,无需评估每一逻辑全表删除的多个“删除标记”,而是只评估每一逻辑全表删除和每一第一数据容器(例如第一数据容器116)的一个“删除标记”。
根据一些实施例,物理删除操作由DBMS 132有选择地执行以用于物理删除先前被执行了逻辑全删除操作的第一数据容器(例如第一数据容器116)的数据块,同时省略单独已被逻辑删除的数据记录的物理删除。
根据一些实施例,物理删除操作被实现为能够访问第一数据容器116的块元数据的功能。块元数据是指示在第一数据容器116的各个数据块302至308中存储的数据记录的元数据。“数据块”可以是主存储器(例如存储器108)的段或被保留以用于存储预定量的数据的非易失性存储装置的段。每个数据块可被分配块ID,并可被分配在所述数据块中包含的最早的数据记录的创建时间。在块中包含的最新数据记录的创建时间在此被称为“块开始时间”。优先地,每个数据块的块开始时间可被存储在数据块特定的元数据中。例如,块开始时间可在创建所述数据块的第一数据记录时存储在块的元数据中。这可允许快速导出块开始时间,例如,当对包括所述数据块的数据容器执行物理删除操作时,通过从元数据中读取预先计算的数据值,而不是顺序地评估数据块中的所有数据记录的创建时间。
根据一些实施例,逐块物理删除操作被执行为相对于逻辑删除操作的异步过程,即定期执行,优选地,在后台中和/或在降低的系统负载时。
通常,至少一些数据块包括已经被分配了创建时间的时间顺序并且被存储在连续的存储器或数据存储元件中的数据记录。这可以是以下的情况:大多数的创建时间值从INSERT命令导出,只有少数的数据记录受到UPDATE操作影响,导致创建时间值比创建记录的INSERT操作晚的。
优选地,将被物理删除的一个或多个数据块被物理删除,而无需顺序地扫描在所述数据块中包含的每一个数据记录。例如,单步物理删除操作可在单个步骤中通过使用已被识别为物理可删除的块的块ID以用于快速识别和访问数据块、以及删除所有它们的记录来执行。例如,DBMS 132可对每个数据块存储所述块的最新数据记录的存储器地址或存储地址。当对所述数据块的所有后续连续存储的数据记录计算偏移信息,并可选地对已被确定为物理可删除的连续数据块计算偏移信息时,所述地址可被用作基地址。将被物理删除的所述数据块的最后一个记录的存储器位置或存储位置可被快速地计算,例如通过将在所述块中包含的连续的数据记录的数量与数据记录大小相乘。如果多个连续的数据块,例如数据块302和304,将被物理删除,则确定第一数据块(例如数据块302)的第一数据记录的基地址。此外,将被删除的所述连续的数据块的序列中的最后一个记录的存储器位置或存储位置可被快速地计算,例如,通过将将被删除的连续的数据块的数量与数据块大小相乘。数据块大小可通过将每一数据块的数据记录的数量与数据记录大小相乘来计算。其结果是,扫描数据块以用于单独删除数据记录是不必要的。
例如,在图3所描绘的实施例中,第一数据容器116,例如数据库表,可包括多个数据块302、304、306、308。每个数据块在其元数据中被分配了块开始时间。例如,块302可被分配了块开始时间150,其可对应于已创建了所述块302的最新数据记录的事务TX150。数据块304可被分配了对应于已经创建了块304的最新数据记录的事务TX200的块开始时间200,等等。当执行物理删除操作时,可能存在仍然对第一数据容器116操作的两个事务,例如,TX267和TX291,由此所识别的最早的事务是事务TX267。DBMS 132保持跟踪当前被事务访问的数据记录的数据块。例如,由阴影“B”(参见图3,图例)标记的数据记录314和316当前被包括对所述数据记录操作的一个或多个DML语句的事务TX267和TX291分别访问。事务TX255是在所识别的最早的事务TX267开始执行的时刻已经对第一数据容器116执行了最新逻辑全删除操作的事务。因此,事务ID 255可被识别为阈值时间,因为它反映了在所识别的最早的DML语句TX 267开始执行的时刻与第一数据容器116相关联的最新全删除时间。如果物理删除操作在单独的数据记录的水平上执行,则创建时间比所识别的阈值时间TX 255早的所有数据记录被物理删除。因此,块306的具有创建时间250至254(在各自的INSERT事务的事务ID中指定)的数据记录(如果有的话)以及块302和304的所有数据记录被物理删除。在执行每一记录的物理删除时允许被物理删除的所有数据记录用阴影“C”指示。
然而,如果物理删除以逐块的方式执行,则没有块306的数据记录被删除,并且块302和304的所有数据记录都可被物理删除,优选地,在每一块或每一相邻块的序列的单个删除动作中。例如,每一个块302和304可通过只识别将被删除的数据块的最新数据记录(例如,在数据块304的时间200创建的数据记录)的标识符来非常快速地删除。所述记录标识符可以是例如用作计算偏移信息的基地址的地址。块306是不可删除的,因为它包括当前被访问的数据记录。块308是不可删除的,因为它的块开始时间300比阈值时间TX255晚。
例如,定期执行的用于执行物理删除操作的后台进程可以执行以下规定为伪代码的逻辑:
对于每个第一数据容器(a):
识别仍被执行并在数据库上运行或者在将被物理删除的单独的第一数据容器上运行的最早的事务“OT”;
识别与数据容器a相关联的另一个全删除时间“FMRFDT(aOT)”,该另一个全删除时间FMRFDT(aOT)是在所识别的最早的仍被执行的事务OT开始执行的时刻的最新全删除时间;
对于第一数据容器a的具有blockNumber b的每个数据块:
如果(块开始时间(b)比“FMRFDT(aOT)”早),
则物理删除块b;
结束
由此,blockNumber充当块的标识符,即“块ID”;块开始时间(blockNumber)指示在数据块blockNumber中包含的最新数据记录的创建时间。物理删除意味着从物理删除的数据块b的所有数据记录中释放存储空间。
在图3所描绘的示例中,事务TX267是针对数据容器116的最早的并行执行的事务。被事务TX267“看见”的与数据容器116相关联的最新全删除时间是事务ID TX255或者是由时钟确定的所述事务TX255的开始时间。所述最新全删除时间被识别为阈值时间,可执行物理删除直到该时间。
事务ID TX340没有被识别为如上所述的用于当前物理删除操作的阈值时间,但可被识别为稍后执行的物理删除例程的阈值时间。因此,事务ID TX340可充当在稍后执行的物理删除操作中的阈值时间。由于创建时间比被识别以用于所述稍后的物理删除操作的阈值时间晚而在所述稍后的物理删除操作中没有被逻辑删除并且也没有被允许物理删除的数据记录用阴影“D”表示。因此,全删除操作逻辑删除具有在开始所述全删除操作之前的创建时间的所有数据记录。因此,那些在时间点TX340没有被逻辑删除的记录也不被允许物理删除。
多个数据记录的逐块物理删除可导致存储空间或存储器空间在单个操作中的迅速重新获得,而无需执行数据记录的顺序扫描。相反,可被安全地物理删除的数据记录经由它们的块ID来识别。该特征在如下的DBMS中特别有利:大多数的数据记录被顺序地插入相同的第一数据容器中,以使得它们主要存储在连续的存储空间或存储器空间中,并且所述数据记录的创建时间没有被后面的UPDATE语句修改。
通常,数据块的数据记录根据它们的创建时间排序,并且被存储在连续的存储器空间或存储空间中。因此,在数据块被物理删除的情况下,将被重新获得的连续的存储空间可以非常迅速地识别,而无需执行将被物理删除的数据记录的顺序扫描。
根据实施例,物理删除操作与逻辑删除操作异步地执行。例如,逻辑删除操作可以由DELETE FROM TABLE命令触发,物理删除操作可以稍后执行,例如,响应于定期执行的GROOM TABLE命令或者任何其它定期执行的物理删除命令、或者在清理系统的利用率低的时候。
在此所使用的“全删除操作”是删除数据容器(例如,数据库表、物化数据库视图、或数据库表的分区)中的所有数据记录的过程。
在此使用的“全删除时间”是指示全删除操作对特定数据容器执行的时间的数据值。例如,所述时间可以是在执行全删除操作的事务被提交时由时钟提供的时间。根据另一个示例,全删除时间可以是执行全删除操作的事务的事务ID。
在此使用的“记录删除时间”是指示删除操作对特定数据记录执行的时间的数据值。例如,所述时间可以是在执行记录特定的DELETE语句的事务被提交时由时钟提供的时间。根据另一个示例,记录删除时间可以是执行记录特定的DELETE语句的事务的事务ID。在此使用的“创建时间”是指示数据记录例如通过INSERT或UPDATE语句被创建或修改的时间的数据值。例如,所述时间可以是在执行INSERT或UPDATE语句的事务被提交时由时钟提供的时间。根据另一个示例,创建时间可以是执行INSERT或UPDATE语句的事务的事务ID。
在此使用的“当前时间”是指示确定所述数据值的特定操作或功能被执行的时间的数据值。例如,由删除操作确定的当前时间是所述全删除功能执行时的时刻。
在此使用的“模式定义”是例如数据表的数据容器的结构的定义,该定义采用DBMS所支持的形式语言来提供。在关系数据库中,模式定义可指定表名称、其中包含的列和列与表之间的关系。
在此使用的“数据容器”是用于以结构化方式存储和/或动态检索数据的数据结构。数据容器可以是例如数据库表、物化视图或“传统的”非物化数据库视图。根据一些实施例,第一数据容器是由DBMS管理的数据库表、物化或非物化数据库视图或文件、或者其混合。根据一些实施例,第二数据容器是响应于数据库查询而动态创建的数据容器。根据一些实施例,第二数据容器可被实现为非物化数据库视图。
在此使用的“目录”或“数据库目录”是数据库管理系统的包括元数据的组件,其中存储了诸如基表、视图、同义词、值范围、索引、用户和用户组的数据库对象的定义。
在此使用的“逻辑删除”是导致逻辑删除的数据记录对于在逻辑删除操作以后的标准DML语句隐藏的操作。然而,逻辑删除的数据记录的信息被保持,并可通过专用工具和功能恢复。
在此使用的“物理删除”是导致重新获得由物理删除的数据记录占用的存储空间以用于其它目的的操作。通常,执行数据记录的信息的物理删除,以使得不可能进行信息恢复。
参考图1,图1示出了用于操作数据库管理系统132的计算机程序产品。该计算机程序产品包括其中具有程序指令的计算机可读存储介质(例如,存储装置106),该程序指令可由处理器104执行以使处理器执行根据先前的描述的方法。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行装置使用的指令的有形装置。计算机可读存储介质例如可以是――但不限于――电存储装置、磁存储装置、光存储装置、电磁存储装置、半导体存储装置或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码装置、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理装置,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储装置。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理装置中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理装置中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、设备(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理设备的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理设备的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的设备。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理设备和/或其他装置以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理设备、或其它装置上,使得在计算机、其它可编程数据处理设备或其它装置上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理设备、或其它装置上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
Claims (13)
1.一种用于在数据库管理系统中处理数据的方法,包括:
由一个或多个处理器对第一数据容器执行删除操作,其中,所述第一数据容器包括一个或多个数据记录,所述删除操作逻辑删除所述一个或多个数据记录中的至少一个数据记录;
由一个或多个处理器将所执行的删除操作的时间与所述第一数据容器相关联;
由一个或多个处理器对所述第一数据容器的第一数据记录执行写入操作;
由一个或多个处理器将所执行的写入操作的时间与所述第一数据容器的所述第一数据记录相关联;以及
响应于接收针对所述第一数据容器的数据库查询,由一个或多个处理器至少基于所述所执行的写入操作的时间按时间顺序在所述所执行的删除操作的时间之后,准许对所述第一数据容器的所述第一数据记录的访问。
2.根据权利要求1所述的方法,其中,所述第一数据容器是数据库表,所述删除操作是对所述第一数据容器有选择地执行的全表删除操作。
3.根据权利要求1所述的方法,其中,所述第一数据容器是数据库表分区,所述删除操作是对所述第一数据容器有选择地执行的全分区删除操作。
4.根据权利要求1所述的方法,其中,所述第一数据容器包括多个数据块,所述多个数据块中的一个或多个数据块包括所述一个或多个数据记录中的数据记录,包括所述一个或多个数据记录中的数据记录的每个数据块具有指示在所述数据块中存储的最新创建的数据记录的关联时间。
5.根据权利要求4所述的方法,其中,对所述第一数据容器执行删除操作包括:
由一个或多个处理器对所述多个数据块中的所述一个或多个数据块执行物理删除操作,其中,所述物理删除操作包括:对于所述一个或多个数据块中的每个数据块,
由一个或多个处理器基于与在所述数据块中存储的每个数据记录相关联的时间,识别所述数据块的最新数据记录;
由一个或多个处理器将与在所述数据块中存储的最新数据记录相关联的时间与所述所执行的删除操作的时间进行比较;以及
响应于与在所述数据块中存储的最新数据记录相关联的时间按时间顺序在所述所执行的删除操作的时间之前,由一个或多个处理器物理删除所述数据块。
6.根据权利要求1所述的方法,其中,所述所执行的删除操作的时间是在执行所述删除操作时的当前时间和日期值;
所述所执行的写入操作的时间是在执行所述写入操作时的当前时间和日期值。
7.根据权利要求1所述的方法,其中,所述所执行的删除操作的时间是与所执行的删除操作相关联的事务标识(ID);
所述所执行的写入操作的时间是与所执行的写入操作相关联的事务标识(ID);
每个事务ID用唯一的编号按时间顺序排序。
8.根据权利要求1所述的方法,还包括:
响应于接收针对所述第一数据容器的数据库查询,由一个或多个处理器创建第二数据容器,其中,所述第二数据容器包括从所述第一数据容器提取的数据记录,其中,每个所提取的数据记录的关联时间按时间顺序在所述所执行的删除操作的时间之后;
其中,准许对所述第一数据容器的所述第一数据记录的访问包括:
由一个或多个处理器写入替代数据库查询,以使得所述替代数据库查询访问所述第二数据容器;以及
由一个或多个处理器执行所述替代数据库查询。
9.根据权利要求8所述的方法,其中,所述第二数据容器的模式定义至少包括所述所执行的删除操作的时间。
10.根据权利要求1所述的方法,其中,所述所执行的删除操作的时间是单一数据值。
11.根据权利要求1所述的方法,其中,准许对所述第一数据容器的所述第一数据记录的访问包括:
由一个或多个处理器取得所述所执行的删除操作的时间;
由一个或多个处理器写入替代数据库查询,其中,所述替代数据库查询指定将要由每个数据记录满足以便提供对每个数据记录的访问的条件,其中,所述条件指定各个数据记录的所执行的写入操作的时间按时间顺序在所述所执行的删除操作的时间之后;以及
由一个或多个处理器执行所述替代数据库查询。
12.根据权利要求1所述的方法,还包括:
由一个或多个处理器将所述所执行的删除操作的时间与所述一个或多个数据记录中的所述至少一个数据记录相关联;
其中,准许对所述第一数据容器的所述第一数据记录的访问进一步基于所述第一数据记录与所述所执行的删除操作的时间不关联。
13.一种用于在数据库管理系统中处理数据的计算机系统,包括:
一个或多个计算机处理器,
一个或多个计算机可读存储介质,以及
在所述一个或多个计算机可读存储介质上存储的程序指令,所述程序指令用于由所述一个或多个处理器中的至少一个执行,以执行权利要求1至12的任何一项中的步骤。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/665232 | 2015-03-23 | ||
US14/665,232 US9996563B2 (en) | 2015-03-23 | 2015-03-23 | Efficient full delete operations |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105989195A true CN105989195A (zh) | 2016-10-05 |
CN105989195B CN105989195B (zh) | 2019-09-13 |
Family
ID=56974156
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610166387.7A Active CN105989195B (zh) | 2015-03-23 | 2016-03-22 | 用于处理数据库数据的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (2) | US9996563B2 (zh) |
CN (1) | CN105989195B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106649552A (zh) * | 2016-11-07 | 2017-05-10 | 湖北省农村信用社联合社网络信息中心 | 常态化数据清理方法 |
CN107368563A (zh) * | 2017-06-30 | 2017-11-21 | 北京奇虎科技有限公司 | 数据库数据的删除方法及装置、电子设备、存储介质 |
CN108563694A (zh) * | 2018-03-19 | 2018-09-21 | 广州视源电子科技股份有限公司 | 对逻辑删除的sql执行方法、装置、计算机设备和存储介质 |
CN109947773A (zh) * | 2017-10-26 | 2019-06-28 | Sap欧洲公司 | 在多租户数据库系统中部署对键模式的改变 |
CN110019215A (zh) * | 2017-10-26 | 2019-07-16 | Sap欧洲公司 | 多重租赁数据库系统中的键模式管理 |
CN110147407A (zh) * | 2017-09-29 | 2019-08-20 | 华为技术有限公司 | 一种数据处理方法、装置及数据库管理服务器 |
CN112912868A (zh) * | 2018-09-24 | 2021-06-04 | 易享信息技术有限公司 | 用于批量移除数据库中的记录的系统和方法 |
CN114116913A (zh) * | 2022-01-26 | 2022-03-01 | 苏州浪潮智能科技有限公司 | 一种分布式存储系统存储桶处理方法、装置及终端 |
Families Citing this family (58)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10380086B2 (en) | 2015-09-11 | 2019-08-13 | International Business Machines Corporation | Deleting rows from tables in a database without an index |
US10204130B2 (en) * | 2016-03-23 | 2019-02-12 | International Business Machines Corporation | Transactional table truncation for concurrent transactions |
US10261949B2 (en) | 2016-04-01 | 2019-04-16 | Arista Networks, Inc. | Packed row representation for efficient network serialization with direct column indexing in a network switch |
US10860568B2 (en) | 2016-04-01 | 2020-12-08 | Arista Networks, Inc. | External data source linking to queries in memory |
US10783144B2 (en) | 2016-04-01 | 2020-09-22 | Arista Networks, Inc. | Use of null rows to indicate the end of a one-shot query in network switch |
US10783147B2 (en) | 2016-04-01 | 2020-09-22 | Arista Networks, Inc. | Query result flow control in a network switch |
US10642844B2 (en) * | 2016-04-01 | 2020-05-05 | Arista Networks, Inc. | Non-materialized tables with standing queries |
US10984044B1 (en) | 2016-09-26 | 2021-04-20 | Splunk Inc. | Identifying buckets for query execution using a catalog of buckets stored in a remote shared storage system |
US11586627B2 (en) | 2016-09-26 | 2023-02-21 | Splunk Inc. | Partitioning and reducing records at ingest of a worker node |
US11243963B2 (en) | 2016-09-26 | 2022-02-08 | Splunk Inc. | Distributing partial results to worker nodes from an external data system |
US10353965B2 (en) | 2016-09-26 | 2019-07-16 | Splunk Inc. | Data fabric service system architecture |
US11567993B1 (en) | 2016-09-26 | 2023-01-31 | Splunk Inc. | Copying buckets from a remote shared storage system to memory associated with a search node for query execution |
US11604795B2 (en) | 2016-09-26 | 2023-03-14 | Splunk Inc. | Distributing partial results from an external data system between worker nodes |
US11222066B1 (en) | 2016-09-26 | 2022-01-11 | Splunk Inc. | Processing data using containerized state-free indexing nodes in a containerized scalable environment |
US11232100B2 (en) | 2016-09-26 | 2022-01-25 | Splunk Inc. | Resource allocation for multiple datasets |
US11663227B2 (en) | 2016-09-26 | 2023-05-30 | Splunk Inc. | Generating a subquery for a distinct data intake and query system |
US11023463B2 (en) | 2016-09-26 | 2021-06-01 | Splunk Inc. | Converting and modifying a subquery for an external data system |
US11550847B1 (en) | 2016-09-26 | 2023-01-10 | Splunk Inc. | Hashing bucket identifiers to identify search nodes for efficient query execution |
US11580107B2 (en) | 2016-09-26 | 2023-02-14 | Splunk Inc. | Bucket data distribution for exporting data to worker nodes |
US11416528B2 (en) | 2016-09-26 | 2022-08-16 | Splunk Inc. | Query acceleration data store |
US11321321B2 (en) | 2016-09-26 | 2022-05-03 | Splunk Inc. | Record expansion and reduction based on a processing task in a data intake and query system |
US11314753B2 (en) | 2016-09-26 | 2022-04-26 | Splunk Inc. | Execution of a query received from a data intake and query system |
US11461334B2 (en) | 2016-09-26 | 2022-10-04 | Splunk Inc. | Data conditioning for dataset destination |
US11599541B2 (en) | 2016-09-26 | 2023-03-07 | Splunk Inc. | Determining records generated by a processing task of a query |
US11294941B1 (en) | 2016-09-26 | 2022-04-05 | Splunk Inc. | Message-based data ingestion to a data intake and query system |
US11250056B1 (en) | 2016-09-26 | 2022-02-15 | Splunk Inc. | Updating a location marker of an ingestion buffer based on storing buckets in a shared storage system |
US11163758B2 (en) | 2016-09-26 | 2021-11-02 | Splunk Inc. | External dataset capability compensation |
US10956415B2 (en) | 2016-09-26 | 2021-03-23 | Splunk Inc. | Generating a subquery for an external data system using a configuration file |
US11126632B2 (en) | 2016-09-26 | 2021-09-21 | Splunk Inc. | Subquery generation based on search configuration data from an external data system |
US20180089324A1 (en) | 2016-09-26 | 2018-03-29 | Splunk Inc. | Dynamic resource allocation for real-time search |
US11615104B2 (en) | 2016-09-26 | 2023-03-28 | Splunk Inc. | Subquery generation based on a data ingest estimate of an external data system |
US11620336B1 (en) | 2016-09-26 | 2023-04-04 | Splunk Inc. | Managing and storing buckets to a remote shared storage system based on a collective bucket size |
US11442935B2 (en) | 2016-09-26 | 2022-09-13 | Splunk Inc. | Determining a record generation estimate of a processing task |
US11593377B2 (en) | 2016-09-26 | 2023-02-28 | Splunk Inc. | Assigning processing tasks in a data intake and query system |
US10977260B2 (en) | 2016-09-26 | 2021-04-13 | Splunk Inc. | Task distribution in an execution node of a distributed execution environment |
US11874691B1 (en) | 2016-09-26 | 2024-01-16 | Splunk Inc. | Managing efficient query execution including mapping of buckets to search nodes |
US11269939B1 (en) | 2016-09-26 | 2022-03-08 | Splunk Inc. | Iterative message-based data processing including streaming analytics |
US11281706B2 (en) | 2016-09-26 | 2022-03-22 | Splunk Inc. | Multi-layer partition allocation for query execution |
US11106734B1 (en) * | 2016-09-26 | 2021-08-31 | Splunk Inc. | Query execution using containerized state-free search nodes in a containerized scalable environment |
US11860940B1 (en) | 2016-09-26 | 2024-01-02 | Splunk Inc. | Identifying buckets for query execution using a catalog of buckets |
US11003714B1 (en) | 2016-09-26 | 2021-05-11 | Splunk Inc. | Search node and bucket identification using a search node catalog and a data store catalog |
US11921672B2 (en) | 2017-07-31 | 2024-03-05 | Splunk Inc. | Query execution at a remote heterogeneous data store of a data fabric service |
US11989194B2 (en) | 2017-07-31 | 2024-05-21 | Splunk Inc. | Addressing memory limits for partition tracking among worker nodes |
CN107395735B (zh) * | 2017-08-03 | 2020-06-09 | 成都精灵云科技有限公司 | 一种容器集群的延时缩容调度方法及系统 |
US10896182B2 (en) | 2017-09-25 | 2021-01-19 | Splunk Inc. | Multi-partitioning determination for combination operations |
US11151137B2 (en) | 2017-09-25 | 2021-10-19 | Splunk Inc. | Multi-partition operation in combination operations |
US10831745B2 (en) * | 2018-01-30 | 2020-11-10 | Walmart Apollo, Llc | Database protocols and retrieval techniques |
US11334543B1 (en) | 2018-04-30 | 2022-05-17 | Splunk Inc. | Scalable bucket merging for a data intake and query system |
US11042522B2 (en) * | 2018-06-11 | 2021-06-22 | International Business Machines Corporation | Resolving versions in an append-only large-scale data store in distributed data management systems |
US11599403B2 (en) * | 2018-10-03 | 2023-03-07 | SK Hynix Inc. | Logging mechanism for memory system |
US11086840B2 (en) | 2018-12-07 | 2021-08-10 | Snowflake Inc. | Transactional streaming of change tracking data |
KR102085899B1 (ko) * | 2018-12-10 | 2020-03-06 | 현대오트론 주식회사 | 자동차 전자제어장치의 사용량 모니터링 방법 및 모니터링 유닛 |
WO2020220216A1 (en) | 2019-04-29 | 2020-11-05 | Splunk Inc. | Search time estimate in data intake and query system |
US11715051B1 (en) | 2019-04-30 | 2023-08-01 | Splunk Inc. | Service provider instance recommendations using machine-learned classifications and reconciliation |
US11494380B2 (en) | 2019-10-18 | 2022-11-08 | Splunk Inc. | Management of distributed computing framework components in a data fabric service system |
US11640370B2 (en) * | 2019-12-18 | 2023-05-02 | Sap Se | Data migration using transactional data as primary object |
US11922222B1 (en) | 2020-01-30 | 2024-03-05 | Splunk Inc. | Generating a modified component for a data intake and query system using an isolated execution environment image |
US11704313B1 (en) | 2020-10-19 | 2023-07-18 | Splunk Inc. | Parallel branch operation using intermediary nodes |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040083240A1 (en) * | 2002-07-08 | 2004-04-29 | Akihiro Sekine | Data synchronization method between a plurality of information apparatus, information processing apparatus for executing the method, and program for executing the method |
US20060095399A1 (en) * | 2004-10-21 | 2006-05-04 | Konica Minolta Business Technologies, Inc. | Storage portion management device, image processor, method for controlling the same and computer program product |
CN102110121A (zh) * | 2009-12-24 | 2011-06-29 | 阿里巴巴集团控股有限公司 | 一种数据处理方法及其系统 |
CN102750376A (zh) * | 2012-06-25 | 2012-10-24 | 天津神舟通用数据技术有限公司 | 一种多版本数据库存储引擎系统及其相关处理的实现方法 |
US20130124466A1 (en) * | 2011-11-14 | 2013-05-16 | Siddartha Naidu | Data Processing Service |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7756821B2 (en) | 2006-11-02 | 2010-07-13 | Microsoft Corporation | Virtual deletion in merged file system directories |
US8219522B2 (en) | 2010-06-29 | 2012-07-10 | Asserted Versioning, Llc | Management of temporal data by means of a canonical schema |
US9454572B2 (en) | 2013-03-14 | 2016-09-27 | Oracle International Corporation | Out-of-place materialized view refresh |
-
2015
- 2015-03-23 US US14/665,232 patent/US9996563B2/en not_active Expired - Fee Related
-
2016
- 2016-02-12 US US15/042,466 patent/US10262013B2/en active Active
- 2016-03-22 CN CN201610166387.7A patent/CN105989195B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040083240A1 (en) * | 2002-07-08 | 2004-04-29 | Akihiro Sekine | Data synchronization method between a plurality of information apparatus, information processing apparatus for executing the method, and program for executing the method |
US20060095399A1 (en) * | 2004-10-21 | 2006-05-04 | Konica Minolta Business Technologies, Inc. | Storage portion management device, image processor, method for controlling the same and computer program product |
CN102110121A (zh) * | 2009-12-24 | 2011-06-29 | 阿里巴巴集团控股有限公司 | 一种数据处理方法及其系统 |
US20130124466A1 (en) * | 2011-11-14 | 2013-05-16 | Siddartha Naidu | Data Processing Service |
CN102750376A (zh) * | 2012-06-25 | 2012-10-24 | 天津神舟通用数据技术有限公司 | 一种多版本数据库存储引擎系统及其相关处理的实现方法 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106649552A (zh) * | 2016-11-07 | 2017-05-10 | 湖北省农村信用社联合社网络信息中心 | 常态化数据清理方法 |
CN107368563A (zh) * | 2017-06-30 | 2017-11-21 | 北京奇虎科技有限公司 | 数据库数据的删除方法及装置、电子设备、存储介质 |
CN107368563B (zh) * | 2017-06-30 | 2021-02-23 | 北京奇虎科技有限公司 | 数据库数据的删除方法及装置、电子设备、存储介质 |
CN110147407A (zh) * | 2017-09-29 | 2019-08-20 | 华为技术有限公司 | 一种数据处理方法、装置及数据库管理服务器 |
CN110147407B (zh) * | 2017-09-29 | 2023-02-14 | 华为技术有限公司 | 一种数据处理方法、装置及数据库管理服务器 |
CN109947773A (zh) * | 2017-10-26 | 2019-06-28 | Sap欧洲公司 | 在多租户数据库系统中部署对键模式的改变 |
CN110019215A (zh) * | 2017-10-26 | 2019-07-16 | Sap欧洲公司 | 多重租赁数据库系统中的键模式管理 |
CN109947773B (zh) * | 2017-10-26 | 2023-09-12 | Sap欧洲公司 | 在多租户数据库系统中部署对键模式的改变 |
CN110019215B (zh) * | 2017-10-26 | 2023-10-20 | Sap欧洲公司 | 多重租赁数据库系统中的键模式管理 |
CN108563694B (zh) * | 2018-03-19 | 2021-04-13 | 广州视源电子科技股份有限公司 | 对逻辑删除的sql执行方法、装置、计算机设备和存储介质 |
CN108563694A (zh) * | 2018-03-19 | 2018-09-21 | 广州视源电子科技股份有限公司 | 对逻辑删除的sql执行方法、装置、计算机设备和存储介质 |
CN112912868A (zh) * | 2018-09-24 | 2021-06-04 | 易享信息技术有限公司 | 用于批量移除数据库中的记录的系统和方法 |
CN114116913A (zh) * | 2022-01-26 | 2022-03-01 | 苏州浪潮智能科技有限公司 | 一种分布式存储系统存储桶处理方法、装置及终端 |
Also Published As
Publication number | Publication date |
---|---|
CN105989195B (zh) | 2019-09-13 |
US20160283545A1 (en) | 2016-09-29 |
US20160283528A1 (en) | 2016-09-29 |
US9996563B2 (en) | 2018-06-12 |
US10262013B2 (en) | 2019-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105989195A (zh) | 用于处理数据库数据的方法和系统 | |
CN105786955B (zh) | 数据库管理系统中的数据复制 | |
EP3446242B1 (en) | Query plan generation and execution in a relational database management system with a temporal-relational database | |
CN103154935B (zh) | 用于查询数据流的系统和方法 | |
CN104239357B (zh) | 用于数据库事务的并发请求处理 | |
US11874839B2 (en) | Adaptive big data service | |
US8396863B2 (en) | Temporal class loader | |
US9672241B2 (en) | Representing an outlier value in a non-nullable column as null in metadata | |
US6408312B1 (en) | Method and system for supporting multiple, historical, and future designs in a relational database | |
CN107077492A (zh) | 可扩展的基于日志的事务管理 | |
JP2022534215A (ja) | ハイブリッド・インデックス作成方法、システム、プログラム | |
KR101636594B1 (ko) | 데이터 베이스 내 대용량 업데이트를 실시간으로 집적하는 방법 | |
US20070198591A1 (en) | Partition by growth table space | |
CN109891402A (zh) | 可撤销和在线模式转换 | |
CN105630860A (zh) | 具有事务控制块索引的数据库系统 | |
CN107148617A (zh) | 日志协调存储组的自动配置 | |
CN100594497C (zh) | 一种实现网络查询缓存的系统和查询方法 | |
US10650027B2 (en) | Access accelerator for active HBase database regions | |
US20130086092A1 (en) | Systems and methods related to a temporal log structure database | |
CN106575297A (zh) | 使用盲更新操作的高吞吐量数据修改 | |
US7685127B2 (en) | Database access system, method of accessing a database, and method of designing a database access system | |
CN101268439A (zh) | 数据库片段克隆和管理 | |
CN101765831A (zh) | 数据库不一致的处理方法 | |
CN108205560A (zh) | 一种数据同步方法以及装置 | |
US11334600B1 (en) | Partial reloading in data synchronization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |