文档详情

ORACLE数据库优化-分区.doc

发布:2018-03-12约6.05千字共9页下载文档
文本预览下载声明
ORACLE数据库优化-分区   摘要:电信行业数据库的数据量非常庞大,仅仅一张表就可能达到几百G以上,如果不对这种大表进行优化,则数据访问的性能就会受到很大影响。该文主要讲解ORACLE分区技术,并利用分区技术来实现对大型数据库的大表进行优化。   关键词:性能调优;分区   中图分类号:T311 文献标识码:A文章编号:1009-3044(2010)17-4602-03   Oracle Database Performance Tuning-Partition   QI Wei-wei   (Laiwu Vocational and Technical College, Laiwu 271100, China)   Abstract: The database is very large in Telecommunications industry , only one table may reach above hundreds of G,if the big table is not optimized, the performance of data access will be greatly affected. This paper explain partition technology, and by using the partition technology for large database technology to realize the big table is optimized.   Key words: performance tuning; partition      1 Partition技术介绍   ORACLE的分区是一种处理超大型表、索引等的技术。通过将大表和索引按照分区规则分成可以管理的若干小块,从而避免了对每个表作为一个大的、单独的对象进行管理,为大量数据提供了可伸缩的性能。分区通过将操作分配给更小的存储单元,减少了需要进行管理操作的时间,并通过增强的并行处理提高了性能,通过屏蔽故障数据的分区,还增加了可用性。   在oracle 10gR2版本中,支持以下几种分区类型:1) 范围分区(range);2) 列表分区(list);3) 散列分区(hash);4) 组合分区(range-list 和 range-hash)。   范围分区(range):范围分区就是对数据表中的某个值的范围进行分区,根据某个值的范围,决定将该数据存储在哪个分区上。如根据业务记录的创建日期进行分区等。   散列分区(Hash):散列分区为通过指定分区编号来均匀分布数据的一种分区类型,因为通过在I/O设备上进行散列分区,使得这些分区大小一致。   列表分区(List):当你需要明确地控制如何将行映射到分区时,就使用列表分区方法。与范围分区和散列分区所不同,列表分区不支持多列分区。如果要将表按列分区,那么分区键就只能由表的一个单独的列组成,然而可以用范围分区或散列分区方法进行分区的所有的列,都可以用列表分区方法进行分区。   2 数据库分区设计优化方案   2.1 确定哪些大表需要进行分区   使用分区技术时,并不是对数据库中的所有表都进行分区,而只针对数据量比较大的一些大表才进行分区。根据分区的定义可知,分区其实就是将一个大数据段按规则划分成若干个小数据段,如果表对象本身很小,就失去了分区的意义。   根据经验,数据量大于1000万的表才需要做分区。   SQL select owner, table_name, num_rows   from dba_tables    where num_rows    and partitioned = NO;   说明:   在使用以上语句统计需要做分区的大表时,必须先收集数据库系统的统计信息。否则num_rows的数据不准确,无法正确表达出表对象的记录数。   2.2 讨论分区类型及分区字段的选择:   这一步至关重要,分区类型和分区字段的选择严重影响到数据表的访问性能。选择了错误的分区类型或分区字段给数据库性能带来的负面影响会比不做分区更大,因此在决定分区类型和分区字段时一定要与项目组讨论,按照业务需求及业务逻辑共同制定。   根据经验,选择分区类型的步骤:   1) 先确定该表中哪个字段在select语句的谓词中使用最频繁.此字段将做为分区字段。   因为分区的目的是将一个大表的数据段按规则分离成若干个小数据段,索引也分离为若干小索引段,在数据访问时,根据索引只需要访问其中的一个小索引段,最后访问其中的一个数据段,从而减小了需要访问的数据量,达到优化的目的。如果selec
显示全部
相似文档