数据仓库大型表分区策略研究

时间:2022-03-09 01:32:25

数据仓库大型表分区策略研究

摘要:企业级数据仓库一般都由超大型数据库(VLDB)所组成,数据量以数百GB计算,甚至以TB计算。当数据表增长到一定数据量之后,交易性能会发生非常明显的下降。通过对数据表分区可以将数据分为更小、更容易管理的部分,从而改善大型表以及具有各种访问模式的表的可伸缩性和可管理性。本文通过对表分区特点的分析,具体研究了关系型数据仓库分区的影响因素,并提出了表分区的相关策略。

关键词:数据仓库;超大型数据库;表分区;data warehouse;VLDB;Partition Table

中图分类号:TP311.13 文献标识码:A 文章编号:1007-9599 (2011) 21-0000-01

Data Warehouse Large Table Partitioning Strategy Study

Zhu Weihua

(Electronics and Information Engineering,Tongji University,Shanghai 200092,China)

Abstract:General enterprise data warehouse by the very large database(VLDB)are composed of hundreds of GB of data to calculate,even TB calculations.When the data table to grow to a certain amount of data,the transaction will occur very significant performance drop.By partitioning the data table data can be divided into smaller,more manageable parts,thus improving a large table and a table with various access patterns scalability and manageability.Based on the analysis of the characteristics of the table partitioning,specific studies of relational data warehouse partition factors,and proposed a partition table related strategies.

Keywords:Data warehouse;Very large databases;Table partitions;Data warehouse;VLDB;Partition Table

在关系型数据仓库的实现时可以采用表分区的方法或者一个(巨大)事实表的方法。对于使用分区还是不分区方式的设计选择主要依赖于数据量、数据维护窗口、存档和备份策略等要素。但是值得肯定的是关系型数据仓库可以从数据分区中获益。如何对表进行分区是整个模型设计的重要任务,本文将对表分区的相关策略进行研究和分析。

一、表分区的优点

(1)增强可用性:如果表的一个分区由于系统故障而不能使用,表的其余好的分区仍可以使用;(2)减少关闭时间:如果系统故障只影响表的一部份分区,那么只有这部份分区需要修复,可能比整个大表修复花的时间更少;维护轻松:如果需要得建表,独产管理每个公区比管理单个大表要轻松得多;(3)均衡I/O:可以把表的不同分区分配到不同的磁盘来平衡I/O改善性能;(4)改善性能:对大表的查询、增加、修改等操作可以分解到表的不同分区来并行执行,可使运行速度更快,在数据仓库的TP查询特别有用。分区对用户透明,最终用户感觉不到分区的存在。

二、影响表分区的因素

(一)数据量大小

事实表的数据量大小是基于应用程序的特点并且由每一种实现方式所决定的。

(二)数据加载

当使用单表时,排它锁就会阻止所有其它的用户在表加载的过程中访问它。分区方式让数据被批量加载到各自的分区表中,每一段都代表了一个确定的分区范围。由于每一个分区逻辑上都是由一个单独的分段表来代表的,因此步进的批量导入不会对任何针对现有数据的查询造成可用性和性能上的影响。

(三)索引维护

在单独的分区上重建和重组索引,因而便于更好的管理分区索引。

(四)数据过期

数据过期可以通过一个滑动窗口来有效的处理。如果数据被分区了,一个滑动窗口的实现就成为了可能。

(五)数据归档

对于一个几TB规模的数据仓库的成功实现并不以构建一个良好性能以及线性扩展的系统而结束。它也必须是一个高度可维护的系统。如果数据被分区了,在数据库中的分散备份就可以实现。在数据中的分散备份以及还原操作为分区的管理提供了更大的灵活性。

(六)查询性能

应用程序的特点以及查询所产生的结果的性质对于关系型数据仓库的分区有着极大的影响。

三、表分区的策略

(一)策略I:将一个分区绑定到它自己的表空间

一个分区可以使用以下的步骤被逻辑的绑定到一个表空间:创建带有多个表空间的数据库,每一个表空间将会逻辑的对应一个分区。每个表空间中有一个文件。表空间可以包含一个或多个物理文件,并且这些文件可以在一个或多个逻辑卷/物理磁盘上创建。创建分区函数并将分界点映射到相应的表空间,使用分区架构来创建一个在表空间和分区之间的一一对应的关系。

(二)策略II:将两个或更多分区绑定到同样的表空间

第二个策略是将一个或者多个分区映射到同样的表空间。表空间可以由一个(或者多个)分布在跨越一个(或者多个)逻辑卷/物理磁盘的物理文件来组成。

四、两种策略的优缺点分析

(一)数据导入

策略I:在SELECT/INTO SQL语句中不能明确的指定表空间。由于这一限制,在使用一个SELECT/INTO语句时无法采用并行方式来完成初始转换,步进的数据导入不会被分区策略所影响。

策略II:当所有的分区映射到同一个表空间时转换可以采用并行的方式完成,步进的数据导入不会被分区策略所影响。

(二)备份/还原

策略I:在表空间和分区之间创建一个一一对应的关系让在分区级别的零散备份和还原操作得以进行,在备份数据库之前确保分区被标记了只读状态。如果没有,当还原数据库时事务日志必须被前滚。

策略II:如果所有的分区被映射到了同一个表空间,分区表作为一个整体可以使用单个的命令进行备份和还原。此策略在单个分区的粒度下不提供零散备份的灵活性。

(三)查询性能

策略I:如果表空间只包含一个文件,并且表会采用一个接一个的串行方式来进行填充,对这样的对象的扩展盘区的分配是连续的。因为数据是连续的,因此对于大量的连续扫描可以提供更好的工作负荷。

策略II:如果表空间是由多个表空间成的,使用按比例填充机制,这样会导致扩展盘区出现碎片。类似的,在并行操作比如并行数据导入操作期间为对象/分区分配的扩展盘区无法保证是连续的。因为数据分布在许多的物理磁盘上,因此它有助于在进行大量的并发随机I/O操作时提供更好的工作负荷性能。

五、结语

本文针对大型数据表的分区策略进行了技术分析,如对比所示,各种策略都有各自的优缺点,世界上并不存在一种完美的分区策略。数据模型设计的时候需要同时考虑各种因素,平且平衡个因素之间的需求,这样才能设计出一个合理的数据模型。

参考文献:

[1]Claudia Imhoff,Nicholas Galemmo,Jonathan G.Geiger,王付明.数据仓库设计[M].机械工业出版社,2004

[2]Kimberly L.Tripp.SQL Server 2005中的分区表和索引[J].Microsoft,2004

[3]Ralph Kimball.数据仓库生命周期工具箱(第二版)[M].清华大学出版社,2009

[4]陈京民.数据仓库原理,设计与应用[M].中国水利水电出版社,2004

[5]盖国强,冯春培,叶梁,冯大辉.Oracle数据库性能优化[M].人民邮电出版社,2005

上一篇:计算机在林业制图中的应用探究 下一篇:关于多级数据库安全的建议