关于oracle大表分区的一点点心得.doc_第1页
关于oracle大表分区的一点点心得.doc_第2页
关于oracle大表分区的一点点心得.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库大表的优化:采用蔟表(clustered tables)及蔟索引(Clustered Index) 蔟表和蔟索引是Oracle所提供的一种技术,其基本思想是将几张具有相同数据项、并且经常性一起使用的表通过共享数据块(data block)的模式存放在一起。各表间的共同字段作为蔟键值(cluster key),数据库在访问数据时,首先找到蔟键值,以此同时获得若干张表的相关数据。蔟表所能带来的好处是可以减少I/O和减少存储空间,其中我更看重前者。采用表分区(partition) 表分区技术是在超大型数据库(VLDB)中将大表及其索引通过分区(patition)的形式分割为若干较小、可管理的小块,并且每一分区可进一步划分为更小的子分区(sub partition)。而这种分区对于应用来说是透明的。通过对表进行分区,可以获得以下的好处: 1)减少数据损坏的可能性。 2)各分区可以独立备份和恢复,增强了数据库的可管理性。 3)可以控制分区在硬盘上的分布,以均衡IO,改善了数据库的性能。 蔟表与表分区技术的侧重点各有不同,前者侧重于改进关联表间查询的效率,而表分区侧重于大表的可管理性及局部查询的性能。而这两项对于我的系统来说都是极为重要。由于本人技术限制,目前尚不确定两者是否可以同时实现,有那位在这方面有经验的给点指导将不胜感激。在两者无法同时实现的情况下,应依照需实现的功能有所取舍。综合两种模式的优缺点,我认为采用表分区技术较为适用于我们的应用。 Oracle的表分区有以下几种类型: 1)范围分区:将表按某一字段或若干个字段的取值范围分区。 2)hash分区:将表按某一字段的值均匀地分布到若干个指定的分区。 3)复合分区:结合了前面两种分区类型的优点,首先通过值范围将表进行分区,然后以hash模式将数据进一步均匀分配至物理存储位置。 综合考虑各项因素,以第三种类型最为优越。(本人实在技术有限仅采用了第1种范围分区,因为比较简单,便于管理) 优化的具体步骤: 1确定需要优化分区的表: 经过对系统数据库表结构和字段,应用程序的分析,现在确定那些大表需要进行分区: 如帐户交易明细表acct_detail. 2确定表分区的方法和分区键: 分区类型:采用范围分区。 分 区 键: 按trans_date(交易时间)字段进行范围分区. 3确定分区键的分区范围,及打算分多少分区: 如:帐户交易明细表acct_detail. 根据字段(trans_date)分成一下分区: 1)分区1:09/01/20032)分区2:10/01/20033)分区3:11/01/20034)分区4:12/01/20035)分区5:01/01/20046)分区6:02/01/2004 该表明显需要在以后增加分区。 4建立分区表空间和分区索引空间 1)建立表的各个分区的表空间: 1分区1:crm_detail_200309 CREATE TABLESPACE crm_detail_200309DATAFILE /u1/oradata/orcl/crm_detail_20030901.dbf SIZE 2000M EXTENT MANAGEMENT LOCAL UNIFORM size 16M; 其它月份以后同以上(我在此采用oracle的表空间本地管理的方法)。 2). 建立分区索引表空间 1分区1:index_detail_200309 CREATE TABLESPACE index_detail_200309DATAFILE /u3/oradata/orcl/index_detail_20030901.dbf SIZE 2000MEXTENT MANAGEMENT LOCAL UNIFORM size 16M; 5建立基于分区的表: createtabletable name ( . enable row movment -此语句是能修改行分区键值,也就是如不添加该句不能修改记录的分区键值,不能使记录分区迁移 PARTITION BY RANGE(TRANS_DATE) ( PARTITION crm_detail_200309VALUESLESS THAN(TO_DATE (09/01/2003,mm/dd/yyyy TABLESPACE crm_detail_200309, 其他分区. ; 6建立基于分区的索引: createindex index_nameon table_name (分区键+) global-这里是全局分区索引,也可以建本地索引 PARTITION BY RANGE(TRANS_DATE) ( PARTITION index_detail_200309VALUESLESS THAN (TO_DATE (09/01/2003,mm/dd/yyyy ) TABLESPACE index_detail_200309, 其他索引分区. ; 对表的分区就这样完成了,第一次主要确定表分区的分区策约是最重要的,可我觉得对表分区难在以后对表分区的管理上面,因为随着数据量的增加,表分区必然存在删除,扩容,增加等。在这

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论