用于并发数据库管理系统表操作的方法和设备技术方案

技术编号:2882918 阅读:318 留言:0更新日期:2012-04-11 18:40
通过运行相当于位于多个独立的、保存数据库表的存储装置(310)上的输出目录(320)的数目个线程(400)来卸载数据库表。给每个线程分配一个数据库表以卸载(420)。从每个数据库表卸载的数据被存储在对应的输出目录(320)中。通过从每个表读取数据块并存除该数据登记到输出目录(320)中来从每个数据库表中卸载该数据。每个线程都由对称多处理(SMP)环境中的独立处理管理。重复该处理直到卸载完每个数据库表为止。然后,通过首先创建相当于线程数目个临时表(600),接着读取一组存储在输出目录(320)中的数据并存储该数据到临时表来将该数据装入数据库表。(*该技术在2019年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及以这卸载和装入数据库表的处理。本专利技术尤其涉及增加数据库表卸载和装入的速度的并行处理技术的应用。本专利技术更进一步涉及在对称多处理(SMP)环境中应用于卸载和装入数据库表的并行处理技术。
技术介绍
现代数据库管理系统日益受到保存更大的数据存储量的要求。此外,由于数据库的增大,现代数据库内的结构越来越复杂。一般来说,数据库以表格形式保存数据,每个表保存一或多行相关数据。例如,一个基本数据库表可以保存多个,例如,具有属于一团体的个人的名称、社会保险号、地址和电话的行。当该团体增加新成员时该数据库增大,而当包括成员的附加信息时该数据库不但增大而且还变得复杂。例如,更大更复杂的数据库除了保存以上信息外,还可以保存可能为图形格式的、示出俱乐部成员的居住地的地图。通过包括工作单位地址和示出工作单位地点的附加图形体图,该数据库再增加大小和复杂度。通过保存的数据库其它表或行指针,还可能增加该数据库表的复杂度。例如,指向在另一表中保存的一组同事的指针,指向邻近团体成员的指针,或指向可以保存附加成员数据的任意多项的指针。常规的数据库管理系统(DBMS)通过分配存储块来提供建造数据库表的空间。一旦定义了表,DBMS就会分配存储相关数据行所必需的存储块。例如,如果一个表将建造成含有100,000行,并且该表的行被限定为使得每一存储块可以装下100行,那么DBMS就会分配1,000块来建造该表。DBMS系统一般以邻接的存储块组分配存储块。一个邻接的被分配的存储块组通常称为一个盘区。一般来说,各个盘区的大小是变化的。使用上述示例,DBMS可以利用1,000个存储块构成的单一盘区、500个存储块构成的2个盘区或盘区大小的其它组合,来分配所需要的1,000个存储块以便建造该表。一旦分配了所需要的存储块,就在利用这些分配的存储块的表的行中存储数据。在建造数据库之后,可以添加附加数据给该表,并且该DBMS会按需要分配附加的存储块。例如,如果用户给该表添加250行,使用以上参数,则需要分配附加的3个存储块。在建造数据库之后,也可以删除数据库中的信息。此时,行删除通过使用SQL发生以删除表中的行。例如,用户可以从存储块1删除50行、从存储块20删除40行和从存储块60删除30行。当发生这种情况时,会使得在该表中存在比保存出现在该表中的数据所需的存储块更多的存储块。此外,该数据库内的数据会被更新。例如,使用上述数据库表,还没有参加工作的团体成员可以在保存他/她的名称、地址、社会保险号和电话号码的分配表中占有一行。在参加工作时,该行将更新为包括工作单位地址和相关信息的行。但是,如果作为更新的结果添加实质性的信息量,那么原来的行可能没具有足够数据存储块来保存更新的信息。当一行被更新并且原来的行没具有足够空间保存全部更新的信息时,发生行移动。当这种情况发生时,行被移动到有更多空间的存储位置,并且在原来的行驻留的存储块中放一指针,该指针设置成指向移往的行的存储位置。如果表存在实质性更新并且没有足够的空间分配给原来的行,则引起大量行移动。在一个存储块时常没有足够的空间保存更新的行。在这种情况下,该行被移往和原来的行驻留的地方完全不同的存储块,在原来的行的位置放一指向该不同的存储块中的更新的行的指针。行移动的时候,引起被称为存储碎片现象。存储碎片引起数据库信息的检索时间大大增加,原因是除了读取存储块外,还必须读取和解释指针。在行移动到另一存储块时,为了检索行的具体信息,必须读取至少两个存储块(包含指针的存储块和包含移动的和被破成存储碎片的行)。数据库表中的其它结构型的改变也会引起存储碎片和相关的效率问题(例如,行链接)。数据库管理员(DBA)经常会对提供关于表的条件的信息的DBMS表进行分析。例如,数据库管理员可能察看关于删除的行的数量的信息以便弄清有关于有多少个存储块保存着删除的行的效率信息。作为另一个示例,数据库管理员可能察看表的多少行已经由其它处理进行了移动和被破成存储碎片了。如果出现很多存储碎片,则指示可以更有效地分配存储块大小和行空间,并且在进行的表数据检索效率低。出现这种情况时,数据库管理员可能会决定重建该表。在创建表时,DBA通过设置自由存储块的百分率(PCTFREE)或使用过的存储块的百分率(PCTUSED),作出一个关于数据库表的结构的判定。当DBMS用行或表信息装填每一存储块时,它会保留至少等于百分率PCTFREE的一个自由存储块的百分率。DBA依据如何使用数据库表来设置PCTFREE变量。例如,如果表要经常更新,那么会设立附加PCTFREE,以便有足够的空间用来允许任何必要的行移动发生在同一存储块内。如以上所讨论的那样,统一存储块中的行移动不会使得表变成存储碎片。移动过但未变成存储碎片的行以读取单一存储块检索,而不用像移动过的行变成存储碎片时出现的那样,进行读取存储块、解释指针和读取第二存储块(或更多的存储块)的繁琐处理。因此,适当的PCTFREE设置使得虽然可以修改数据库表,但DBMS性能保持不变。PCTUSED是允许DBA控制DMBMS表的结构的另一参数。DBMS防止附加行放到存储块中,除非那一存储块的百分率降低到PCTUSED之下。PCTUSED在这样一种意义下不同于PCTFREE,即虽然如果存在更新则存储块可以用,但它不能用于插入新行,除非存储块中用过的百分率低于PCTUSED。涉及大量OLTP活动(插入、更新和删除)的DBMS表随着时间的推移,可能会经历行移动、存储碎片、行链接等。此外,在第一次建造时各种数据库表可能不需要具有适当的设置(例如PCTFREE、PCTUSED),或者数据库表的要求发生变化,导致表的附加移动、删除或存储碎片。而这又导致数据检索性能和空间使用恶化。DBA会执行分析以确定该表是否有效地存储着数据。结果,可能确定出来一个或多个DBMS表在存储和检索数据方面效率低下。重新组织(重建)该表是解决该问题的一个解决方案。为了得到最大的性能,需要将该表重建(即,将数据卸载到辅助空间并重建该表的新实例)。这种处理避免了很多上面提到的不必要的影响,原因是变成存储碎片的行以无存储碎片的方式卸载和存储在重建表中。结构良好的数据库使得有效地使用磁盘空间。它们需要更少的存取时间、减少了正常处理所需的时间、并且给用户提供了更好的响应时间。即使Oracle和其它现代数据库系统使用有效的数据安排逻辑,随着时间的推移,正常活动也会引起磁盘上的数据的实际配置降级,并且增加空间需求。这导致为了执行表扫描、数据库备份和其它功能,需要使用过多空间和额外的时间。部分空页和未使用的盘区空间提供给额外的空间使用。此外,如果非顺序的行和盘区交错问题不周期性地解决,那么它们会严重降低性能。保证数据库保持高效(增加生产率)的一种方法是有规律地对数据库的数据进行重新组织。目前,有用于重新组织DBMS表的产品。但是,即使用自动重新组织工具,数据库表的重新组织也可能需要大量的时间。执行重新组织所需要的时间对需要数据库存取的商店的收入和生产率具有实质性的影响。例如,当数据库离线时,某些商店可能受到大约一小时$100,000的损失(例如参见1997年12月的Oracle杂志,“Reorgs in a Non-Stop Shop”)。因本文档来自技高网...

【技术保护点】
一种卸载数据库表的方法,该方法包括步骤:运行多个线程来处理该数据库表;分配所述数据库表的各自一个与所述线程对应;以及通过对应的线程的处理卸载各自数据库表。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:罗西塔米尔扎德
申请(专利权)人:电脑联合想象公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利