所谓分区提高性能,是缩小table access时的scan范围,付出极少的代价,减少I/O操作,得到更高的性能。在partition table上创建的global index和local index,都是在平衡这个付出的代价和对index scan的范围。
所以,对性能的提高与否,完全与应用有非常非常直接的关系。
打个比方:
table t1=10G,start_time index=1G,都是以start_time按时间顺序插入的数据,时间间隔很平均,比如每半小时10M这样,现在以time分了10个range分区,每个区1G。
如果你是查询的数据只在某一个分区里,where start_time,那么现在的性能是得到很大提高的,以前你可能需要scan 10G,现在只需要scan 1G,同样,如果你用了分区前的index和分区后的local index,那么以前scan index很可能要scan 1G,现在可能scan 100M就可以了。
但是,如果你需要对这10个partition都要做scan才能得到你需要的计算结果,比如做月报,季报等的时候,此时scan 这10个partition,和scan未分区时候的full scan来说,未分区时候的性能更好一点。
当然了,如果计算的字段不是很多,可以创建global index来解决这个问题。
所以你问分区是不是就能提高性能,真的不敢乱说。
分区所得到的性能优化,我认为完全是与table结构,以及应用在table上的SQL操作是非常非常想关的,以及partition的运用方法有关的,用的好,性能提高非常非常大,用的不好,多的都亏了,变的更差。
---
oracle分区表优点
oracle分区表
分区有利于管理更大的表和索引,在分区中引入了一个分区键的概念,分区键用于根据某个区间值、特定值列表、或散列函数执行数据的聚集。
使用分区表可能有如下好处:
1提高数据的高用性:可用性的提高源自于每个分区的独立性,一个分区的可能不能等同于对象本身的可用。优化器知道这种分区机制,会相应的从查询计划中去除未引用的分区。
2。减轻管理负担。
这个很容易理解。管理10G的表和管理100G的表。
3 改善某些查询性能
在只读查询的性能方面,分区对两类操作起作用
1 分区消除:处理查询时,不考虑某些数据分区.
2并行操作:并行全表扫描和并行索引区间扫描.(和操作系统有关)
4。减少资源竞争。
所以,对性能的提高与否,完全与应用有非常非常直接的关系。
打个比方:
table t1=10G,start_time index=1G,都是以start_time按时间顺序插入的数据,时间间隔很平均,比如每半小时10M这样,现在以time分了10个range分区,每个区1G。
如果你是查询的数据只在某一个分区里,where start_time,那么现在的性能是得到很大提高的,以前你可能需要scan 10G,现在只需要scan 1G,同样,如果你用了分区前的index和分区后的local index,那么以前scan index很可能要scan 1G,现在可能scan 100M就可以了。
但是,如果你需要对这10个partition都要做scan才能得到你需要的计算结果,比如做月报,季报等的时候,此时scan 这10个partition,和scan未分区时候的full scan来说,未分区时候的性能更好一点。
当然了,如果计算的字段不是很多,可以创建global index来解决这个问题。
所以你问分区是不是就能提高性能,真的不敢乱说。
分区所得到的性能优化,我认为完全是与table结构,以及应用在table上的SQL操作是非常非常想关的,以及partition的运用方法有关的,用的好,性能提高非常非常大,用的不好,多的都亏了,变的更差。
---
oracle分区表优点
oracle分区表
分区有利于管理更大的表和索引,在分区中引入了一个分区键的概念,分区键用于根据某个区间值、特定值列表、或散列函数执行数据的聚集。
使用分区表可能有如下好处:
1提高数据的高用性:可用性的提高源自于每个分区的独立性,一个分区的可能不能等同于对象本身的可用。优化器知道这种分区机制,会相应的从查询计划中去除未引用的分区。
2。减轻管理负担。
这个很容易理解。管理10G的表和管理100G的表。
3 改善某些查询性能
在只读查询的性能方面,分区对两类操作起作用
1 分区消除:处理查询时,不考虑某些数据分区.
2并行操作:并行全表扫描和并行索引区间扫描.(和操作系统有关)
4。减少资源竞争。