请教位图索引的结构

shunan 2010-01-06 03:42:35
看了相关oracle资料,以及网上查了下,都没谈及如下问题:
位图索引中某个键值的开始rowid,截止rowid如何定的,这个范围囊括了整个表的所有行的rowid吗?还是一个键值可能有多段的开始rowid,截止rowid?如果是前者,那rowid很简单,就是整个段的开始,结尾,但感觉是这样的话有点浪费空间呢。

举例来说,如果有个1千万条记录的表。某列有10个键值。那么每个键值的开始rowid,截止rowid都是一样的吗,都是囊括了整个表的范围吗?

谢谢各位大牛指教!
...全文
174 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
shunan 2010-01-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 markfilan 的回复:]
10000000/8/1024/1024=1.2Mb
这里为什么要除8呢?看不懂,呵呵!请大侠赐教!
[/Quote]
8bit == 1 byte,兄弟。
markfilan 2010-01-14
  • 打赏
  • 举报
回复
10000000/8/1024/1024=1.2Mb
这里为什么要除8呢?看不懂,呵呵!请大侠赐教!
shunan 2010-01-14
  • 打赏
  • 举报
回复

这里为什么要乘2呢. 是不需要乘以2,考虑错了。呵呵。非常感谢!
[Quote=引用 5 楼 wh62592855 的回复:]
你这么来计算大体上来讲应该没没错 当然 这只是我个人看法哦
有两个地方需要指出
1
一个rowid不会只占1位的
2
在你的说法中 说一个键值占2*1.2M 这里为什么要乘2呢
1位的话可以为0或者为1 就足以代表该位的值是否满足该键值了呀

至于你说的100M空间 我觉得如果在一个比较大的系统里 100M的索引应该也还好吧
呵呵 我没接触过太大的系统 所以也不能很准确的回答你
不过一般来说索引通常都是会增加数据库运行性能的
[/Quote]
wh62592855 2010-01-11
  • 打赏
  • 举报
回复
你这么来计算大体上来讲应该没没错 当然 这只是我个人看法哦
有两个地方需要指出
1
一个rowid不会只占1位的
2
在你的说法中 说一个键值占2*1.2M 这里为什么要乘2呢
1位的话可以为0或者为1 就足以代表该位的值是否满足该键值了呀

至于你说的100M空间 我觉得如果在一个比较大的系统里 100M的索引应该也还好吧
呵呵 我没接触过太大的系统 所以也不能很准确的回答你
不过一般来说索引通常都是会增加数据库运行性能的
shunan 2010-01-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wh62592855 的回复:]
就是你所想的那个样子 囊括了整张表每一行的rowid
其实并不浪费空间 只是一个"位"而已呀 并没有把整行数据存进去

起始ROWID:为位图的起始地址,即位图中第一行的ROWID。包括相对文件号,在相对文件中的块号,和块中的行号。
终止ROWID:为位图的终止地址,即位图中最后一行的ROWID。也包括相对文件号,在相对文件中的块号,和块中的行号。

[/Quote]
谢谢。
那么位图索引段所占的空间我能否如此大概估算,以1个1000万记录的表为例,就有1000万个rowid,一个rowid为1位,则有10000000/8/1024/1024=1.2Mb,也就是说每一个键值至少包含了2*1.2M的空间,假设有50个键值,那就100多兆,这个空间占用不可观吗?oracle需要把索引载到存储区中吧,这个对存储区的要求不是高了阿。不知大牛对索引段所占空间,对数据库运行的影响等,是如何理解的?请不吝指点一二。感谢!
wh62592855 2010-01-06
  • 打赏
  • 举报
回复

怎么我几天没来你就多了两朵大红花和一个小红星

羡慕ing ~
呵呵
crazylaa 2010-01-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wh62592855 的回复:]
就是你所想的那个样子 囊括了整张表每一行的rowid
其实并不浪费空间 只是一个"位"而已呀 并没有把整行数据存进去

起始ROWID:为位图的起始地址,即位图中第一行的ROWID。包括相对文件号,在相对文件中的块号,和块中的行号。
终止ROWID:为位图的终止地址,即位图中最后一行的ROWID。也包括相对文件号,在相对文件中的块号,和块中的行号。

[/Quote]
学习
wh62592855 2010-01-06
  • 打赏
  • 举报
回复
就是你所想的那个样子 囊括了整张表每一行的rowid
其实并不浪费空间 只是一个"位"而已呀 并没有把整行数据存进去

起始ROWID:为位图的起始地址,即位图中第一行的ROWID。包括相对文件号,在相对文件中的块号,和块中的行号。
终止ROWID:为位图的终止地址,即位图中最后一行的ROWID。也包括相对文件号,在相对文件中的块号,和块中的行号。

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧