使用优化的表的制作方法

文档序号:6443348阅读:130来源:国知局
专利名称:使用优化的表的制作方法
技术领域
本发明涉及数据库技术,尤其涉及数据库中的表。
背景技术
在大的数据库系统中输入/输出(“I/O”)操作是昂贵的。大的数据库系统管理即使没有成百万也有成千个不同的表。这样的数据库系统持续接收与驻留在数据库系统中许多不同的表有关的I/O请求。I/O请求通常与不是当前加载和/或驻留在存储器中的表有关。为了执行请求,数据库系统必须分配存储器或重用数据库高速缓存资源并加载目标表。在大的数据库系统中,对于每一 I/O请求,通常需要对表的分配和加载。本发明的各实施例正是对于这一一般环境而构想的。虽然本背景技术中着眼于特定的问题,但本发明决不旨在限于解决那些特定问题。

发明内容
本发明的各实施例涉及用于采用具有使用优化的表的计算机数据库系统的各系统和方法。在各实施例中,将数据库命令放置在使用优化的表(此处也被称为“0T”)中。 OT与数据库系统中的多个真实表相关联。OT存储针对与OT相关联的真实表的数据库命令的实例。数据库命令保留在OT中直到达到转储清除条件,在那时数据库请求被传送给相关联的真实表。在一个实施例中,读取命令不将OT的内容转储清除到真实表中。执行读取命令的计算机数据库可考虑读取命令所请求的数据中的某些是驻留在OT上的。由此,计算机数据库系统还可在执行读I/O操作时检查0T。在其他实施例中,也可将该读操作的结果以及可任选地其他预期的读操作放置在OT中,以便增加数据库系统的效率。本发明的其他实施例涉及将存储在OT上的I/O操作传送到与OT相关联的多个真实表中。在描述的各实施例中,传送I/O操作在到达转储清除条件时发生。然而,在特定情况下,忽略该转储清除条件并继续使用OT而不是将其内容传送到底层真实表可能更高效。 在这样的情况下,OT可被修改以便继续存储数据库命令或记录请求。在其他实施例中,I/O 操作无限地保留在OT上。提供本发明内容以便以简化的形式介绍将在以下的具体实施方式
中进一步描述的一些概念。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。


在所有的图中,相同标号表示相同元素或相同类型的元素。图1是表示具有使用优化的表的数据库系统100的体系结构的示意图的实施例。图2是用于采用使用优化的表来执行数据库操作的方法200的实施例。
图3是用于采用使用优化的表来处理读操作的方法300的实施例。图4是用于触发使用优化的表的转储清除的方法400的实施例。图5示出用于实现本文公开的各方法的计算机环境和计算机系统500的实施例。
具体实施例方式本发明现将参考其中示出了一些可能的实施例的附图来更完整地描述各示例性实施例。然而,其他方面能以许多不同的形式来实现,并且在本发明中包括各具体实施例不应被解释为将这些方面限于在此阐明的各实施例。相反,包括附图中描绘的各实施例是为了提供全面和完整且将预期的范围完全地传达给本领域技术人员的公开。在参考附图时, 使用相同的附图标记来指示所有附图所示的相同的结构和元素。大的数据库系统通常管理即使没有成百万也有成千个关系表。通常,这些表是关联的,使得对来自一个表的数据进行更新和/或读取的单个请求需要对多个表进行更新和 /或读取。一般地,目标表将不被加载或呈现在数据库的可操作存储器中。由此,为了执行更新和/或读取请求,需要数据库分配存储器并加载多个表,从而增加了执行单个更新和/ 或读取请求所需的输入/输出(“I/O”)操作的数量。由于I/O操作是数据库所执行的最昂贵的操作之一,因此减少数据库系统所执行的I/O操作的数量大大增加了系统的操作效率。I/O操作可包括两个不同操作。在计算机数据库系统中,I/O操作可包括将真实表从持久存储(例如磁盘驱动器、硬盘驱动器、固态驱动器等)加载到工作存储器(例如RAM)以便执行数据库命令(例如创建、更新或删除命令)。在分布式数据库(例如跨多个计算机或服务器分布的数据库)中,I/O操作可包括从远程计算机获取真实表并将该真实表加载到本地计算机的工作存储器中。本发明的各实施例降低了这些昂贵的I/O操作被数据库系统所执行的次数。本发明的各实施例涉及用于采用具有使用优化的表的数据库系统的各系统和方法。在各实施例中,将数据库命令放置在使用优化的表(也被称为“0T”)中。OT与数据库系统中的多个真实表相关联。OT存储涉及对与其相关联的每一真实表的I/O请求的数据库命令的实例和/或记录。数据库命令保留在OT中直到达到转储清除条件,在那时数据库命令被传输给作为数据库命令的目标的真实表。此外,为了维护与现有应用的兼容性和总体简易性,使用优化的表以透明的方式来实现。换言之,数据库系统的应用和用户可能不知道使用优化的表的存在,更不用说OT中存在的内容。由于在各实施例中只有数据库系统知晓使用优化的表,因此数据库系统用对特定请求的响应来修改其功能以便考虑OT的存在。数据库系统可以是位于单个计算机上的数据库、或位于跨一个或多个计算机或服务器的分布式数据库。在各实施例中,数据库系统包括软件和硬件两者。数据库系统的软件组件可用于执行由数据库命令指定的动作。软件组件还可用于执行本文公开的关于使用优化的表的各系统和方法。数据库系统的硬件组件可包括持久存储(例如磁盘驱动器、硬盘驱动器、固态等)以及被用于存储使用优化的且真实的表的工作存储器(例如RAM)。本发明的数据库系统的一个实施例在下文中参考图5讨论。为了使效率最大化,将数据库命令存储在OT中直到满足转储清除条件。在各实施例中,读取请求不触发OT表将其内容传送给与其相关联的一个或多个真实表。由此,利用使用优化的表的数据库系统在执行读取请求时考虑使用优化的表。例如,如果读取请求针CN 102542036 A说明书3/10 页
对特定记录,数据库系统在从真实表检索该记录之前首先检查OT以寻找该特定记录。这一步骤由数据库系统自动执行,因为OT可包含特定记录的最新实例,而进行请求的应用或用户不知晓OT的存在。同样,读取可要求数据库系统执行对来自OT和真实表的缝合信息以便产生所请求的视图。本发明的各实施例现在将参考附图来讨论。为了清楚地示出本发明的特征,各实施例将进一步参考实例实施例来讨论,在实例实施例中在数据库系统中采用使用优化的表用于电子邮件管理。本领域技术人员将理解该特定实施例仅出于说明目的。本发明的各实施例可以用任何数据库系统来实践。图1是表示具有使用优化的表的数据库系统100的体系结构的示意图的实施例。 如上所述,数据库系统100可包括硬件和软件组件两者。数据库系统100包括降低用于将表从持久存储加载到工作存储器以便对数据库表执行操作通常所需的I/O操作量的各种组件。数据库系统100可包括优化的表模块108,该优化的表模块108包含用于创建使用优化的表并执行本文公开的各方法的计算机可执行指令和逻辑。为增加效率,由数据库系统100接收到的数据库操作102中的许多由优化的表模块108输入到一个或多个使用优化的表104的集合中。例如,在电子邮件数据库系统中,使用优化的表的集合可包含对应于驻留在该电子邮件数据库系统中的每一邮箱的使用优化的表。数据库操作可包括创建、更新、 删除、或通常由数据库执行的任何其他类型的读和/或写操作。每一使用优化的表都与一个或多个真实表106相关联。真实表106是用于将信息存储在数据库系统中的关系数据库表。例如,在电子邮件管理环境中,真实表106可能用于存储与邮箱有关的信息。每一邮箱可具有与该邮箱相关联的多个真实表,用于存储与该邮箱和/或有关的邮箱应用的不同方面和功能的信息,诸如与邮箱相关联的个人信息管理器(PIM)。邮箱可能具有与邮箱中的每一文件夹(例如,收件箱文件夹、已发送邮件文件夹、已删除邮件文件夹等)对应的真实表 106。这些表可用于存储每一文件夹中存在的电子邮件消息和/或电子邮件对话。电子邮件数据库还可包含不同的真实文件夹106,用于存储与邮箱的索引有关的信息、与邮箱的不同视图有关的信息、邮箱管理信息(例如处理规则、账户信息等)、邮箱账户统计(例如对邮箱中的项的计数等)、以及个人信息、或邮箱所使用的任何其他类型的数据。尽管真实表106中的每一个都可存储不同的信息,但它们可以是相关的使得对数据库系统作出的每一 I/O请求可涉及多个真实表。在示例电子邮件数据库系统中,在接收到消息之后多个表可被更新。例如,包含电子邮件消息的文件夹表可被更新以便包括消息, 索引表可被更新,以及任何账户统计表可被更新。如通过上文讨论的电子邮件示例所示出的,对数据库系统的单个数据库操作(例如更新操作)可导致多个I/O请求以便更新所有有关的表。尽管所描述的示例与电子邮件数据库系统有关,但许多数据库系统面临相似的 I/O要求。由数据库系统执行的任何单个创建、读取、更新或删除操作可涉及多个表,并因此导致多个I/O操作以便访问每一表。然而,参考图1,数据库系统100在接收到数据库操作102时可以用使用优化的表来减少I/O操作的数量。在这样的实施例中,数据库系统可创建与底层真实表中的一个或多个相关联的使用优化的表的集合。在各实施例中,来自该一个或多个使用优化的表104 的集合的单个使用优化的表与有关真实表106相关联。例如,数据库表可为数据库系统中的每一邮箱创建使用优化的表,从而将邮箱的真实表106中的每一个与该使用优化的表相关联。因此,可在数据库系统100中提供一个或多个使用优化的表104的集合。之后,针对邮箱的每一数据库操作将被放置在使用优化的表中而不是邮箱的真实表106中。这在两方面减少了数据库系统所需的I/O的量。第一,由于数据库操作102被放置在使用优化的表 104中,因此使用优化的表很可能先前被访问过且因此已经在存储器中,从而阻止数据库执行I/O操作来访问使用优化的表104。第二,即使如先前描述的需要I/O操作来加载使用优化的表102,单个数据库操作102可与多个数据库表相关,这会需要多个I/O操作以执行单个命令。然而,由于数据库操作被放置在单个使用优化的表104中,因此在各实施例中,在将多个数据库操作102传送到真实表106时将需要较少的I/O命令。使用优化的表导致较高的密度并实现空间局部性,从而导致较少的I/O操作来执行存储。为了存储对多个真实表106的数据库操作102,使用优化的表104以模式无关的方式存储命令。在各实施例中,使用优化的表将数据库命令102存储为二进制大对象(BLOB)。 此外,使用优化的表标识真实表106以及作为数据库命令的目标的特定记录。这可通过修改进入使用优化的表104的条目的键来实现。在各实施例中,每一条目的键包括真实表106 的ID (例如,表ID、B树ID、目标ID等)以及作为数据库命令102的目标的记录的主键。如将参考图2和4进一步详细描述的,数据库命令102保留在使用优化的表中,直到达到转储清除条件。在达到转储清除条件时,使用优化的表的内容在实现过程中被传送给真实表106。在实现过程之前已经通过所提交的数据库命令写入使用优化的表104中的值被传送给真实表。类似地,数据库系统100,尤其是优化的表模块108,在创建和返回一视图时还考虑使用优化的表104的内容。由于使用优化的表104是以透明方式实现的,因此数据库系统100和优化的表模块108自动执行操作来将使用优化的表以及真实表数据缝合在一起以便向应用和/或用户返回准确的视图。尽管数据库系统100被描述为将数据库操作102存储在使用优化的表104中,但在替换实施例中,可代替数据库操作本身或作为其补充将数据库操作102的结果(例如记录、行等)存储在使用优化的表104中。图2是用于采用使用优化的表来执行数据库操作的方法200的实施例。在一个实施例中,方法200可由数据库、在数据库系统中操作的数据库管理组件、数据库应用、与数据库接口的外部应用来执行,或由利用数据库的任何其他类型的应用来执行。方法200的各操作可以用硬件、软件或两者的组合来实现。流程在操作202处开始,其中使用优化的表被创建。如先前描述的,使用优化的表将接收对多个真实表的数据库操作(例如,创建、更新、以及删除操作)。在各实施例中,使用优化的表是持久表。在这样的实施例中,使用优化的表连同真实表一起被持久地存储在数据库中。在各实施例中,使用优化的表可以显式地或隐式地与特定真实表相关联。例如,使用优化的表可显式地定义它将接收对其的操作的特定真实表。在其他实施例中,使用优化的表可隐式地与一个或多个真实表相关联。例如,使用优化的表可被创建以将最近更新的数据或最近检索到的数据放置在一起以实现高数据密度和更好的I/O特性。在这一实施例中,该使用定义的表接收旨在用于真实表之一的操作。该使用定义的表可接收所有操作或操作的特定子集。例如,数据库可仅将特定操作放置在使用优化的表中。在创建使用优化的表之后,流程前进至操作204。在操作204,接收数据库操作。在各实施例中,数据库操作可以是创建操作、更新操作、删除操作、或本领域已知的任何其他类型的数据库操作。流程前进至操作206,其中方法200确定数据库命令的目标。如所讨论的,数据库命令可具有多个目标。例如,接收电子邮件可要求对文件夹表、索引表、统计表或任何其他数量的表的更新。因此,在操作206,标识数据库操作的每一分量。在各实施例中,标识每一分量可要求标识对受到接收到的数据库操作影响的所有表并且方法200标识要执行的动作。在各实施例中,如果在操作204接收到的数据库操作包括多个更新,则数据库操作被拆分成数据库系统可对受影响的真实表执行的底层动作。返回该电子邮件数据库示例,与将电子邮件消息添加到邮箱有关的数据库操作、与该邮箱有关的多个表可被更新、 诸如更新文件夹表、索引表、统计表。在操作206,在这一示例中,标识这三个更新。在替换实施例中,在方法200的执行之前标识数据库命令的分量。在操作204,可个别地接收每一分量。在这一情形中,操作206包括标识动作的目标。例如,目标可以是动作针对的真实表、 动作针对的记录、或两者的组合。这样的信息可例如通过解析数据库命令或通过本领域已知的任何其他过程来收集。在标识底层动作之后,流程前进至操作208。在操作208,将数据库操作存储在使用优化的表中。在各实施例中,数据库操作并不是作为单个操作来存储,而是作为用于满足该命令要执行的多个操作来存储。返回该电子邮件数据库示例,如果将消息添加到文件夹可能要求对文件夹表、索引表以及统计表的更新,则这三个更新被分开地存储在使用优化的表中。代替在操作208仅存储原始数据库命令,可个别地存储实现数据库命令可能需要的每一动作。尽管已参考将数据库命令存储在使用优化的表中而不是执行使用优化的表中的数据库命令来对方法200进行了讨论,但方法200的另一实施例涉及执行命令以及将结果存储在使用优化的表中。再次参考该电子邮件数据库示例,在操作208,可存储对文件夹表、 索引表、以及统计表进行更新的结果。此外,这一实施例向存储方面添加了额外粒度。例如, 如果更新仅涉及记录的一个列,则只有该列的值需要被存储。记录的其余部分不需要出现在使用优化的表中。这增加了使用优化的表的存储效率。在这样的实施例中,也可将列标识符保存在使用定义的表中。尽管在图2中未示出,数据命令可在存储操作208之前的任何时间被执行。在各实施例中,每一命令、分量、或结果在使用优化的表中被存储为BLOB和键。通过将该值存储为BL0B,使用优化的表能够存储任何类型的值,而无需知道该值或数据库真实表的模式。键用于标识动作的目标。在各实施例中,键用于标识真实表以及作为动作的目标的记录。在其他实施例中,键可进一步定义用于标识存储在使用优化的表中的值的位置的列标识符。如先前讨论的,在操作206,这一信息可被确定。这一信息用于在使用优化的表被转储清除时标识动作的目标。在存储数据库命令之后,流程前进至判定框210,其中确定是否存在转储清除条件。转储清除条件是存储在使用优化的表上的命令和动作应被实现的指示。转储清除条件参考图4更详细地讨论。如果不满足一个或多个转储清除条件,流程分支至“否”并返回操作204,其中该方法继续至接收到的数据库命令并将这些命令添加到使用优化的表。如果一个或多个转储清除条件已满足,则流程前进至操作212,且存储在使用命令表中的数据库命令分量或结果被实现、或被传送到其对应的真实表。传送数据库命令分量可包括使命令在真实表上被执行。传送结果可包括将结果写入真实表。在各实施例中,存储使用定义的表的内容的实现过程包括将动作传送到真实表。本领域技术人员将理解,这可以按至少两种方式来实现,这两种方式都与方法200的操作一致。第一,方法200可通过执行存储在使用优化的表中的数据库命令来实现命令。在这一实施例中,直到使用优化的表被转储清除才执行数据库命令。在替换实施例中,命令中的某些或全部都已被数据库执行。在这一实施例中,在208处代替存储数据库操作,该操作的所得结果被存储在使用优化的表中。在这一实施例中,实现过程212涉及在操作212处将这些值写入其对应的真实表。如先前描述的,在各实施例中,使用优化的表是连同真实表一起存储在数据系统中的持久表。由于使用优化的表仅在特定情况下被转储清除,因此当数据库访问真实表时, 数据库考虑使用优化的表中的有关信息。本文公开的各系统和方法的各实施例通过维护数据库对象(例如,记录、条目、值、表、或存储在使用优化的表中的任何其他类型的数据库实体)的双重当前键值(dualcurrency)来实现这一点。如果数据库对象位于真实表中,则该真实表具有该对象的当前键值。然而,也可在使用优化的表中维护该对象的经修改的版本。 由此,数据库系统也可将当前键值设置到使用优化的表。在各实施例中,由于使用优化的表将总是包含该对象的最新近版本,因此任何冲突将总是以有利于使用优化的表的方式来解决。由于可存在双重当前键值,因此根据本发明的诸如数据库系统100(图1)等数据库系统实现用于处理读操作的方法。图3是用于在包括使用优化的表的数据库环境中处理读操作的方法300的实施例。流程在操作302开始,在那里接收要读取记录的请求。由于使用优化的表正被利用,因此所请求的记录可驻留在使用优化的表或真实表上。流程前进至操作304,在那里作出关于使用优化的表中的数据是否满足该读操作的确定。由于读操作标识真实表,因此该确定可通过对使用优化的表执行经索引的搜索来作出。如先前讨论的, 使用优化的表包含存储在表中的每一条目的真实表ID (例如,表ID、B树ID、对象ID等)。 在操作304,可执行对使用优化的表的真实表ID的经索引的搜索,以便确定所请求的记录是否在使用优化的表中。如果所请求的记录存在于使用优化的表中,则流程分支“是”到操作306,且记录从使用优化的表中返回。流程然后终止。在各实施例中,待决更新命令可驻留在使用优化的表中。由于待决更新命令可能未被写入其对应的真实表,因此数据库系统从待决更新命令中提取更新信息并将该信息包括在读命令的结果中。如果所请求的记录不在使用优化的表中,则流程分支“否”到判定框308,并且作出关于底层真实表中的记录是否可满足读取请求的确定。如果所请求的读取记录位于真实表中,则流程分支“是”到操作306,并且真实表的记录被访问以执行读操作。流程然后前进至判定操作312,在那里作出将读取记录或有关数据添加到使用优化的表的确定。在各实施例中,该确定可基于许多不同因素。在另一实施例中,该确定可基于数据库系统的会话配置状态。例如,在某些配置中,特定读取数据可被添加。在一个示例中,在数据库系统的登录状态期间,数据库系统可将请求读取的项添加到使用优化的表,因为这些项将有可能被再次访问。在其他状态中,只有特定请求读取的项可被添加。在这样的实施例中,这些项可由管理员或开发者来确定和预设。在另一实施例中,对是否应将请求读取的数据添加到使用优化的表中的确定312可基于数据本身。在一个这样的实施例中,数据的类型可以是一个因素。例如,数据库可设置以下规则将特定类型的所有请求读取的数据读入使用优化的表中。在另一实施例中, 这一确定可基于读取请求中返回的数据的大小。例如,如果返回数据不太大,则可以将返回数据存储在使用优化的表上。相反,如果返回数据太大,则可以不存储返回数据。在另一这样的实施例中,实际数据本身可用于确定实际数据是否将被包括在使用优化的表中。在这样的实施例中,该确定可基于数据的目的或数据的用途。返回电子邮件数据库示例,邮箱通常包括用于处理电子邮件的一组规则(例如,垃圾邮件规则、处理规则等)。由于每次接收邮件时都访问这些规则,因此可以确定在读取请求时这些规则总是被存储在使用优化的表中。在又一实施例中,确定312可基于访问模式。在各实施例中,访问模式可以静态地定义。例如,数据库可以静态地定义以下规则如果一个项被读取或访问则另一个项应被添加到使用优化的表中。在另一实施例中,访问模式可基于使用统计或其他系统信息由数据库系统动态地确定。除了这些单独因素以外,操作312处的确定可基于各种不同因素的组合。尽管已经参考确定在读取请求之后是否对使用优化的表制作条目描述了各因素和策略的具体示例,但提供这些因素和策略仅作为示例且并不旨在限制本文公开的各系统和方法的范围。还可使用其他模型,诸如但不限于,最近使用的方法、AI驱动的算法、或预测算法。本领域技术人员将理解,任何数量的模型、因素、策略和/或算法可被单独实施或与本文公开的各系统和方法组合实施。尽管操作312讨论了在确定是否应对使用优化的表制作条目时可评估的因素,本领域技术人员将理解这些因素还可用于确定是否向使用优化的表添加在非读取请求中产生的条目。例如,可采用相同因素来确定在创建、更新或删除情形中是否将条目添加到使用优化的表中。尽管未示出,这些因素还可与图2中描述的方法一起使用。如果确定应将在操作310所访问的记录添加到使用优化的表,则流程分支“是”到操作314,在那里如参考图2所讨论的,记录被存储在使用优化的表中。如果确定不应添加记录,则流程分支“否”且该方法终止。返回操作308,在某些情形中,使用优化的表或真实表都不能单独执行在操作302 处所接收的读取请求。例如,读取请求可针对一视图。由于该视图可包含来自使用优化的表和真实表两者的数据,因此这两个表都被读取以便执行读取请求。在该情形中,流程分支 “否”至操作316。在操作316,方法300维护使用优化的表和真实表两者上的当前键值,并执行操作以缝合或联结使用优化的表和真实表以产生准确且新近的视图。使用优化的表和真实表可包含冲突的记录。在各实施例中,使用优化的表将总是具有最新近的记录信息,并且由此将在的冲突情况下总是获胜。在操作316处创建表之后,流程前进至操作318并且该视图被返回。然后可向用户显示所返回的视图。在其他实施例中,也可存储该视图。如所描述的,创建、读取、更新和/或删除命令或来自每一命令的结果可被存储在使用优化的表中。鉴于此,使用优化的表一般将出现在数据库系统的工作存储器(例如 RAM)中。因此,在发出命令时需要最小量的I/O操作。如所讨论的,使用优化的表是维护其条目直到达到转储清除条件的持久表。当使用优化的表被转储清除时,将来自使用优化的表的条目被实现成其对应的真实表。在某些实施例中,使用优化的表的实现可能未曾发生过。例如,这对于具有随时间保持静态的数据的小表可能发生。在这样的情况下,表数据保持位于同处而不影响实际模式或用户可见性。在此时,使用优化的表中的条目被传送并由此被最终持久保存到其相应的真实表。在这样做时,避免了通常在数据库系统中发生的随机更新的写入,从而导致I/O操作的更大接合。在各实施例中,使用优化的表按以下方式来转储清除对应于特定真实表的使用优化的表中的各条目例如通过执行批处理被同时传送。在使用优化的表的生存期期间(例如,从创建到转储清除或从转储清除到转储清除),这大大减少了需要被执行的I/O操作的数量。例如,使用优化的表可包含与特定真实表有关的10个条目。由于这些是最初写入使用优化的表中的,因此与写入随时间分摊的单个条目相比,在写该10个条目时的I/O使用是最小的。当使用条目表被转储清除时,这10个条目同时被写入其特定的真实表,这只需要单个I/O操作。另一方面,在没有使用优化的表的情况下,这10个操作会已随时间散布, 这会需要多达10个I/O操作来将这些操作提交给它们的表。可使用许多不同条件来触发转储清除。例如,转储清除可基于访问特定表、基于来自数据库系统或另一应用的命令、基于定时器、或基于本领域已知的任何其他类型的条件或触发由特定动作触发。本领域技术人员将理解,任何类型的触发可以用于本文公开的各系统和方法。在一个实施例中,转储清除可基于使用优化的表的大小来触发。为了限制I/O操作,使用优化的表可能不被允许增长得太大,否则对于使用优化的表可能需要多个I/O操作。在各实施例中,使用优化的表的大小取决于用于存储数据库的底层介质。在一个实施例中,使用优化的表的大小等于在底层介质上单个I/O操作所访问的存储器的大小。图4是用于触发使用优化的表的转储清除的特定方法400的实施例。流程在操作 402处开始,在那里作出是否已达到转储清除条件的确定。流程前进至判定框404,在那里方法400确定转储清除条件是否基于大小。如前所述,可能存在许多不同类型的用于将使用优化的表的内容写入真实表的触发。在大多数情况下,一旦满足条件,转储清除就应自动发生。在这样的情形中,流程分支“否”至操作406,且将使用优化的表的内容传送给真实表。然而,如果条件基于大小,则流程分支“是”至判定框408。在判定框408处,作出关于是否应允许使用优化的表增长的确定。在特定情况下, 允许使用优化的表增长而不是将内容写入真实表可以增加效率。例如,如果当许多事务正发生的时间期间达到大小限制,则延迟写入使用优化的表的内容直到事务的速率减缓可能是更高效的。在这样的实施例中,流程分支“是”至操作412,在那里增加使用优化的表的大小。在一个实施例中,可将使用优化的表增大一附加页大小。在其他实施例中,可将使用优化的表增大以下大小对用于存储该表的存储介质的单个I/O读取的大小。流程然后前进至操作414,在那里数据库继续将操作和/或结果输入使用优化的表中,如参考图2和3描述的。该方法然后终止。返回判定框408,如果增加使用优化的大小不是高效的,则流程分支“否”至操作 410,且使用优化的表的内容被传送给真实表。参考图5,用于实现本文描述的各实施例的计算环境的一实施例包括计算机系统, 如计算机系统500。所描述的各实施例的任何和所有组件可以作为客户机计算机系统、服务器计算机系统、客户机和服务器计算机系统的组合、手持式设备、以及本文描述的其他可能的计算环境或系统来执行或在它们之上执行。如此,以下描述可应用于所有这些环境的基本计算机系统。在其最基本的配置中,计算机系统500包括至少一个处理单元或处理器504和系统存储器505。计算机系统500的该最基本配置在图5中由虚线502来示出。在各实施例中,所描述的系统的一个或多个组件被加载到系统存储器506中,并由处理单元504从系统存储器506中执行。取决于计算机系统500的确切配置和类型,系统存储器506可以是易失性(如RAM)、非易失性(诸如ROM、闪存等)或这两者的某种组合。另外,计算机系统500还可具有附加特征/功能。例如,系统500包括附加存储介质508,如可移动和/或不可移动存储,包括但不限于磁盘、光盘或磁带。在一些实施例中, 软件或可执行码以及用于所描述的系统的任何数据被持久存储在存储介质508中。存储介质508包括以存储如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。在各实施例中,将持久的使用优化的表520和真实表522存储在存储介质508中。在各实施例中,将持久的使用优化的表520和真实表522加载到系统存储器506中,以便对表执行数据库操作。在这样的实施例中,将持久的使用优化的表520和真实表522加载到系统存储器506中需要一 I/O操作。系统存储器506和存储介质508都是计算机存储介质的示例。计算机存储介质包括,但不限于,RAM、ROM、EEPR0M、闪存或其他存储器技术、CD-ROM、数字多功能盘(“DVD”) 或其他光学存储、磁带盒、磁带、磁盘存储、其他磁性存储设备、固态存储、或能用于存储所需信息且可以由计算机系统500和处理器504访问的任何其他介质。任何这样的计算机存储介质都可以是计算机系统500的一部分。在各实施例中,系统存储器506和/或存储介质508存储用于执行本文公开的各方法和/或形成本文公开的系统的数据,这些方法和系统诸如创建所得到的表和执行继承增长模式的方法。在各实施例中,系统存储器506存储诸如使用优化的表518和表数据514以及使用优化的指令516 (例如优化的表模块108)等信息来执行本文描述的各方法。计算机系统500还可包含允许该设备与其他设备通信的通信连接510。在各实施例中,通信连接510可被用来在发送者设备、中间设备、以及接收者设备之间传送和接收消息。通信连接510是通信介质的一个示例。通信介质可包含诸如载波或其他传输机制等已调制数据信号并且包括任何信息传递介质,它能以已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据。术语“已调制数据信号”指的是其一个或多个特征以在数据信号中编码信息或消息的方式被设定或更改的信号。作为示例而非限制,通信介质包括有线介质,诸如有线网络或直接线连接,以及无线介质,诸如声学、RF、红外线和其他无线介质。在分布式数据库实施例中,通信连接510可用于检索远程表并通过执行I/O操作将远程表加载到本地计算机系统的工作存储器中。在一些实施例中,计算机系统500还包括内部和外部输入和输出连接512以及接口和外围设备,如图形用户界面。输入设备也被称为用户界面选择设备并且包括但不限于, 键盘、鼠标、笔、语音输入设备、触摸输入设备等。输出设备也被称为显示器,并且包括但不限于,阴极射线管显示器、等离子屏显示器、液晶屏显示器、扬声器、打印机等。或单独地或组合地连接到输入和输出连接512的这些设备被用来显示本文描述的信息。所有这些设备在本领域是众知的并且不必在此详细讨论。
在一些实施例中,本文描述的组件包括可由计算机系统500执行的、可以存储在计算机存储介质中和其他有形介质中并在通信介质中传送的模块或指令。计算机存储介质包括以用于存储如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。以上的任何组合也应包括在可读介质的范围内。在一些实施例中,计算机系统500是将数据存储在远程存储介质中以供计算机系统500使用的网络的一部分。本说明书参考附图描述了一些实施例,附图中只示出了可能的实施例中的一些。 然而,其他方面能以许多不同的形式来实现,并且不应被解释为被限定于在此所阐述的各实施例。相反,提供这些实施例以使得本公开变得透彻和完整,并且向本领域技术人员完全传达可能实施例的范围。虽然以结构特征和/或方法动作以及包含这样的动作的计算机可读介质专用的语言来描述了各实施例,但是应该理解,在所附权利要求书中所定义的可能的实施例不一定仅限于此处所描述的具体结构或动作或介质。所属领域技术人员将认识到在本公开的范围和精神内的其他实施例或改进。因此,具体结构、动作或介质只是作为说明性实施例来公开的。本发明由所附权利要求书进行定义。
权利要求
1.一种用于减少由数据库系统执行的I/O操作量的计算机实现的方法,所述方法包括创建使用优化的表O02);将所述使用优化的表与一个或多个真实表相关联;接收数据库操作004),其中所述数据库操作针对所述一个或多个真实表中的至少两个;以及将所述数据库操作存储在所述使用优化的表中(208)。
2.如权利要求1所述的计算机实现的方法,其特征在于,还包括 接收读操作(301);返回所述读操作的结果(306);在返回所述读操作的结果之后,确定所述使用优化的表已达到预定阈值O10);以及将所述数据库操作传送给所述一个或多个真实表012)。
3.如权利要求1所述的计算机实现的方法,其特征在于,所述数据库操作是写操作。
4.如权利要求1所述的计算机实现的方法,其特征在于,将所述数据库操作存储在所述使用优化的表中的数据库操作还包括将所述数据库操作存储为记录,所述记录包括主键;以及表示所述数据库操作的二进制大对象(BLOB)。
5.如权利要求1所述的计算机实现的方法,其特征在于,将所述数据库操作存储在所述使用优化的表中还包括为所述数据库操作针对的一个或多个真实表中的每一个将分开的条目存储在所述使用优化的表中。
6.一种用于减少在数据库环境中执行的I/O操作的数量的系统,所述系统包括 至少一个处理器(504);以及耦合至所述至少一个处理器的存储器(508),所述存储器包括计算机可执行指令,当所述计算机可执行指令由所述至少一个处理器执行时执行包括以下各步骤的方法 创建使用优化的表002); 将所述使用优化的表与一个或多个真实表相关联; 接收对所述真实表的更新操作(204); 将所述更新操作存储在所述使用优化的表中(208);接收读操作(302),其中所述读操作向所述更新操作请求数据并向所述真实表请求信息;以及联结所述使用优化的表和所述真实表以返回所述读操作的结果(316)。
7.如权利要求6所述的系统,其特征在于,所述方法还包括确定是否应将所述读操作的结果存储在所述使用优化的表中(312);以及基于所述确定,将所述读操作的结果添加到所述使用优化的表中(314)。
8.如权利要求6所述的系统,其特征在于,所述方法还包括,在联结步骤之后实现对所述真实表的所述更新操作012)。
9.一种包括计算机可执行指令的计算机可读介质,当所述计算机可执行指令由处理器执行时,执行一种用于减少数据库系统中的I/O操作的方法,所述方法包括创建使用优化的表002);将所述使用优化的表与一个或多个真实表相关联;接收数据库操作004),其中所述数据库操作针对驻留在所述一个或多个真实表中的至少两个上的记录;将所述数据库操作存储在所述使用优化的表中O08); 接收读操作(302); 返回所述读操作的结果(306);在返回所述读操作的结果之后,确定所述使用优化的表已达到预定阈值O10);以及将所述数据库操作传送给所述一个或多个真实表012)。
10.如权利要求9所述的计算机可读介质,其特征在于,将所述数据库操作存储在所述使用优化的表中的数据库操作还包括将所述数据库操作存储为记录,所述记录包括 主键;以及表示所述数据库操作的二进制大对象(BLOB)。
全文摘要
本发明涉及使用优化的表。公开了用于将使用优化的表用于计算机数据库系统的各系统和方法。在一个实施例中,数据库系统将创建、更新和删除数据库操作存储在使用优化的表中。这些创建、更新和删除数据库操作保留在使用优化的表中直到达到转储清除条件。当达到转储清除条件时,这些创建、更新和删除操作被传送给其对应的真实表。在各实施例中,读操作不将使用优化的表的内容转储清除到真实表。在这样的实施例中,数据库系统修改读操作以考虑驻留在使用优化的表上的数据。
文档编号G06F17/30GK102542036SQ20111044313
公开日2012年7月4日 申请日期2011年12月13日 优先权日2010年12月14日
发明者B·A·雪莉, M·E·马尔凯维奇, N·森达拉姆 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1