52 123
发新话题
打印

关于分区表

关于分区表

我想问问:
对一张表建立了分区后,在访问表中数据时是如何操作的。
  
如果建立了分区后,在一个查询中又没用到分区时的条件时,他的操作和没用分区时的操作有何不同?

TOP

回复: 关于分区表

There is partition prune.
  
If your where clause does not have the partition key included, it will scan all partition.
  
Just do a simple test.

TOP

回复: 关于分区表

引用:
1. 对一张表建立了分区后,在访问表中数据时是如何操作的。
answer:
普通表呢像一个小学生用的新华字典,分区表呢像一套博士们辞海,在同一个漂亮的盒子里面(表名)有若干本辞海分册(每一册就是一个分区了)。
  
如果说检索一张普通表就像查新化字典,检索分区表就像查辞海了。具体而言呢,又这么几种方式:
  
1). 因为你知道你查的内容只会出现在某些分册里面,于是你很快的从辞海盒子里面取出你要的那个册子,不加思索的翻到索引页,根据索引页的指示,你飞快的翻到你的目标页面。取一本本册子呢就叫partition range [inlist] iterator,找索引页当然就是index range scan。如果你不找索引页,准备翻完整本书的找,那就是full table scan了。如果你只找一本册子的,那partition range iterator也就不必了。
  
2). 哦,你不知道你要查的内容在那本册子里? 那你只好辛苦一点,翻阅所有册子了。这时,你做的动作就叫partition range all.  而对于每本册子言,也许你会找索引页(index scan),也许你想翻遍全册(full table scan)。
  
3). 也许你发现一册册的打开索引页找内容太繁重了,你突然想起来对你的辞海做个整改。于是你把每册的索引页全都拆了下来,专门装订成一册。每次你想利用索引页找东西时,你就打开这个索引册。从索引册,你就可以找到你要内容在哪一册哪个地方。这就是global index scan. 相对于1,2,就叫local index scan.
  
4). 你有儿子吗?有一天,你想培训儿子的能力,于是你就找来你儿子给你翻册子,找资料。可是你儿子非得和老子一起找才肯帮你。于是你们父子俩就开始一起检索起辞海来,你查某些册子,他查另一些册子。这就叫partition scan.
引用:
2. 如果建立了分区后,在一个查询中又没用到分区时的条件时,他的操作和没用分区时的操作有何不同?  
有不同,成本会高一点。 前者是partition range all, 必须一本册子一本册子查过了, 后者就查一个册子了。但是前者并不定会比后者慢,因为前都可以用partition scan.

[modreply=版主,jametong,时间:2004-9-10 20:24]学习ing[/modreply]

TOP

回复: 关于分区表

RudolfLu 解释的很细致浅白
对初学者很有好处
有白乐天遗风呀

TOP

回复: 关于分区表

好帖!
关于分区的解释,详细又生动

TOP

回复: 关于分区表

佩服阿

TOP

回复: 关于分区表

解释的太形象了!
pf

TOP

很详细,也很浅显,谢谢

TOP

强烈佩服,果然是形象啊
Using Dell530N AppleMB466
Blog: www.readern.com

TOP

看得不是很明白﹐想對 RudolfLu 所描述的問一下﹕
引用:
   取一本本册子呢就叫partition range 如果你只找一本册子的,那partition range iterator也就不必了。  
您這兒所說的的 partition range 是否是說如在 where 從句中有用到分區的條件來作為條件﹐如 >= 或 <=這種。而后面所講述的 partition range不需要是否就是說用分區條件來作等于的形式。
引用:
  partition range all
是不是說的沒有用 分區的條件來作條件呀。
引用:
但是前者并不定会比后者慢,因为前都可以用partition scan.
這么說在較大的表用分區表總會比用一個單獨的表要多一點好處呀。

謝謝﹗﹗

TOP

RudolfLu
论坛管理员

偶像的說
今天看了以後比看十遍書都值
雪无踪,情亦无踪;
雪无形,情亦无形;
冬来雪倾城,爱来情倾城;
冬过雪化水,爱过情化泪;
不是因为寂寞才想你,而是因为想你才寂寞!

TOP

好帖!

TOP

有个疑问,当分区条件的值改变后,对分区表的性能会有什么样的影响。
如:我是以STS来作为分区条件,但数据入库后,会UPDATE STS的值。

TOP

学习ing...

TOP

顶一下,看看有没有哪位朋友这么用过。

TOP

已经创建了一个分区表,不过想查一下分区表中的数据都分布在哪个表空间上,来验证分区是否按预期的目的实现。请问该如何操作?

TOP

说得好,顶

TOP

可以出一本书叫《深入浅出ORACLE》

TOP

RudolfLu好厉害!!!

看了以后终于对patition table有了点概念,可否问一下,
1. 在哪个view里面可以看到index是local还是grobal的呢?
2. 如果要move patition table到另外的tablespace中去,可以吗?
3. 如果patition table上面有建立index,move的时候会有影响吗?我看书上是说move完了以后,执行alter table modify partition…rebuild unusable local indexes. 那是不是说move完table以后,执行上面的语句就可以了呢?
我刚刚看到关于patition的内容,疑问特别多,望各位知道的借疑,感激万分~~:lol:

TOP

引用:
Originally posted by yangyuhan at 2004-10-26 01:36 PM:
有个疑问,当分区条件的值改变后,对分区表的性能会有什么样的影响。
如:我是以STS来作为分区条件,但数据入库后,会UPDATE STS的值。
更新分区键会导致对应记录表空间的迁移。但如果建分区表时没有指定
enable row movement 则oracle将阻止对分区键列的更新^_^

[ Last edited by leleyang on 2004-12-19 at 14:58 ]

TOP

 52 123
发新话题