Archive for February 28th, 2008
Parallel Table Scans
Thursday, February 28th, 2008
对于超大表的扫描,一般倾向于使用Parallel,让多个slave进程扫描,返回完整的结果集,ORACLE里面并行是可以手工模拟的,通过表的盘区分布,我们可以获得表的rowid的分布范围,然后启动多个会话,每个会话处理一个范围,如果表的盘区分布在多个磁盘上,CPU个数也允许的情况下,效果是非常好的,但是这种基于rowid范围搜索的机制,是不太适合用stripe的
比如一个表空间有4个datafile,存储正好是4个DISK组成的stripe,stripe size 为128K,那么这4个datafile 创建的时候就注定了以128K的分片散落在4个disk上,然后在表空间上创建表,假设是uniform的让盘区均衡在4个datafile,实际上他的单个extent也是跟随这他的datafile落在了4块DISK上,此时如果使用Parallel,多个slave进行rowid范围扫描来返回数据,逻辑上看到的从表的block1扫描到blockn是连续的,但硬件磁盘却是4个磁头在疯狂的交叉使用,每个slave都要4个磁头为他工作,为了真正的让多磁盘为Parallel服务,就要尽量的保证数据文件上的block在物理磁盘上是尽量连续的,每个磁盘上分一个大的范围,这样多进程扫描起来,每个关注自己的那个磁头,避免交叉调用,才是最优的
马上就要接手数据仓库了,管理的数据库从G变T,心里到真是有些惶惶的,以后关于大数据量的迁移,处理肯定不少,又是一个新的挑战
如何增强幸福感?
Thursday, February 28th, 2008
管理好自己的期望
做好自己的事情


