Oracle数据库:分区,重组,性能优化。

来源:互联网 发布:网络兼职打字员靠谱吗 编辑:程序博客网 时间:2024/05/16 19:03

Oracle数据库:分区,重组,性能优化。

为什么要考虑使用分区。原因是多方面的,可能是分区能提高数据的可用性,或者是可以减少管理员(DBA)的负担,另外在某些情况下,还可能提高性能。一旦很好地了解了使用分区的原因,接下来将介绍如何对表及其相应的索引进行分区。

分区的好处:
1.提高数据的可用性:这个特点对任何类型的系统都适用,而不论系统本质上是OLTP还是仓库系统。
2.由于从数据库中去除了大段,相应地减轻了管理的负担。在一个100GB的表上执行管理操作时(如重组来删除移植的行,或者在“净化”旧信息后回收表左边的“空白”空间),与在各个10GB的表分区上执行10次同样的操作相比,前者负担要大得多。另外,通过使用分区,可以让净化例程根本不留下空白空间,这就完全消除了重组的必要!
3.改善某些查询的性能:主要在大型仓库环境中有这个好处,通过使用分区,可以消除很大的数据区间,从而不必考虑它们,相应地根本不用访问这些数据。但这在事务性系统中并不适用,因为这种系统本身就只是访问少量的数据。
4.可以把修改分布到多个单独的分区上,从而减少大容量OLTP系统上的竞争:如果一个段遭遇激烈的竞争,可以把它分为多个段,这就可以得到一个副作用:能成比例地减少竞争。

  • 出现错误时的停机时间会减少,因为恢复所需的工作量大幅减少。
  • 优化器能够消除分区,这意味着许多用户可能甚至从未注意到某些数据是不可用的。

简单地说,利用分区,原先让人畏惧的操作(有时甚至是不可行的操作)会变得像在小数据库中一样容易。

查看分区及分区范围的情况  select * from sys.partitions where object_id = object_id('SecureUsbLog');  select * from sys.partition_range_values;  查看分区架构情况  select * from sys.partition_schemes;  查看某一特定分区列值属于哪个分区  select M2.$partition.Part_mediasec_func('20150325') as partition_num;  查看某一特定分区的记录  select * from SecureUsbLog where M2.$partition.Part_mediasec_func(logTime) = 3  查看分区及分区范围的情况  select * from sys.partitions where object_id = object_id('SecureUsbLog');  select * from sys.partition_range_values;  查看分区架构情况  select * from sys.partition_schemes;  查看某一特定分区列值属于哪个分区  select M2.$partition.Part_mediasec_func('20150325') as partition_num;  查看某一特定分区的记录  select * from SecureUsbLog where M2.$partition.Part_mediasec_func(logTime) = 3  查看各分区所包含的记录数  select $partition.Part_mediasec_func(logTime) as partition_num,  count(*) as record_num  from SecureUsbLog   group by $partition.Part_mediasec_func(logTime)  order by $partition.Part_mediasec_func(logTime);  
原创粉丝点击