暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
ACOUG-Oracle 的排序与布隆过滤器-Fuyuncat.pdf
330
9页
0次
2021-02-15
70墨值下载
分享知识 收获快乐 http://www.acoug.org
http://www.acoug.org 实力成就稳健 技术创造价值
- 1 -
Oracle 的排序与布隆过滤器
Bloom Filter
中国 Oracle 用户组
作者:黄玮 Fuyuncat
http://www.acoug.org
版本
发布时间
1.0
2010/4/16
分享知识 收获快乐 http://www.acoug.org
http://www.acoug.org 实力成就稳健 技术创造价值
- 2 -
1. Oracle 排序
本节主要介绍 Oracle 的排序算法与跟踪。
1.1 排序(sort)算法
Oracle 的排序过程中,首先将获取到的数据放入一块私有内存区Sort Area中进行排序。如果需要排
序的数据太大,无法一次在 Sort Area 中完成全部数据的排序,就会将 Sort Area 中排好序的数据直接写入Direct
Write,数据不被 cache临时空间作为一个数据集存在。当所有数据都在内存中排过序并写入了磁盘后,就会
将磁盘上的数据集进行合并排序 Merge Sort。合并排序是一个递归过程,直到所有数据集都被合入一个数
据集,排序才算完成。
1.2 初始化运行(Initial Runs
数据最初在 Sort Area 中排序的过程被称为初始化运行。Sort Area 80~90%的空间需要被用于读缓冲,
他空间则被用于写缓冲。如果我们知道有多少数据(可以通过需要排序的记录数、记录平均长度已经数据块大
小估算出来)需要进行排序,那么就可以用下面的公式来估算初始化运行的次数(也就是会产生多少个初始数
据集)
Initial Runs = CEIL(SORT_DATA_BLOKCS /
ROUND(0.8*SORT_AREA_SIZE/BLOCK_SIZE))
1.3 合并(Merges
在进行合并时,可以同时合并 2 个或 2 个以上的数据集。一次合并多少个数据集就称为合并宽度(Merge
Width。合并也是在 Sort Area 中完成的,进行合并之前,需要将数据从磁盘直接读入(Direct Read)内存中。
和全表扫描的多数据块读MBRC类似,对排序数据块的读取也可以是多个的, sort_multiblock_read_count
SMRC,这个参数在 9i 后是隐含参数)控制一次读取的数据块数。不过,请注意,这个参数控制的 是一次
能读取的最大数据块数,而实际上一次能读取的数据块数是由 sort_area_size、数据块大小等数据计算得来的。
要进行合并操作,最少需要夺 2 个数据集;如果使用了异步 IOdisk_asynch_io=TRUE,需要有 2 块读缓
冲。因此实际的 SMRC 可以按照以下公式计算:
of 9
70墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜