- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Freelists和Freelist Groups.docx
刚才Debbie问什么是freelists,我直接copy老盖的文章了,不过发现竟然是张乐奕写的!也是一个大牛啊,不过被老盖收到自己麾下了。。。N多大牛被老盖收了,不得不说这是老盖超越众多更牛DBA比较IN的地方。。。
一.???????什么是freelists
本文在于探讨Freelists和Freelist Groups的作用,存取机制,争用诊断和优化方法,同时通过理论和测试来推翻一些存在了很久的错误观点。本文的读者应该具有较深入的Oracle知识,对于一般的开发人员这篇文章可能并没有太多的帮助。
我们知道Oracle数据库的读取单位是数据块(Block),而一个Block是否允许被写入数据是基于一定的空闲度,这就是大家知道的pctfree和pctused存储参数设置。
假设pctfree=10, pctused=40,这就表明当一个Block的空间使用率达到了90%(100-pctfree)时,这个block就不再允许被用于新增数据(insert),而保留下来的这10%的空间则被预留为行更新(update)所可能需要的空间扩展,我们说此时这个block就从freelist上被摘走了(实际上还有另外一种情况,就是当块剩余空间不足以插入一条记录并且该块的使用率已经超过了pctused定义的值并且该块位于freelist header处时,该块也会从freelist上被摘走,术语称为UNLINK)。当有数据删除(delete)的时候,只有该block中的数据被删除到一定的程度,该块才会重新被加入到freelists中,而这个程度就是pctused参数定义的数值,如我们这个例子中,只有块中的数据降低到40%以下的时候,该块才被重新允许用于新增数据。
通过上面的描述,可以知道所谓freelists,就是一个指定了所有可以用于insert操作的数据块的列表。存在在这个列表中的数据块才能用于insert操作,一旦一个数据块无法用于insert(达到了pctfree参数指定的限度)则立刻从这个列表中被摘除。freelists的作用就在于管理高水位标志(HWM)以下的空闲空间。
注意:freelists只是管理高水位标志以下的空闲空间,而实际上一个segment可用的空闲空间包括两种类型:
1.?已经分配给这个segment但是从来未被使用过的位于高水位标志之上的blocks
2.?位于高水位标志之下,被链接在freelists上的blocks
?
至于freelist groups的概念和作用,在下面的章节适当的地方会解释。
?
二.???????freelists是否已经过时
随着Oracle9i的推出,对于空闲块的管理变得更加智能和有效率了。在LMT(Locally Managed Tablespaces)中如果指定了ASSM(Automatic Segment Space Management),那么对于任何pctused,freelists,freelist groups存储参数的指定都将被忽略。创建ASSM表空间的方法如下:
?
CREATE TABLESPACE lmtbsb DATAFILE /u02/oracle/data/lmtbsb01.dbf SIZE 50M
????EXTENT MANAGEMENT LOCAL
????SEGMENT SPACE MANAGEMENT AUTO;
?
ASSM得益于使用位图(bitmaps)来管理段中的空闲块,至于具体是如何管理的,那又是另外一篇文章了。
就此意义上来说,对于freelists的探讨确实可能已经有些过时了,但是首先并不是所有的数据库现在都已经升级到了Oracle9i,甚至在最需要调整的一些大型应用上往往都由于业务的稳定性而不愿意冒升级到新版本的危险;其次即使是新的应用使用了Oracle9i数据库,如果数据库管理员在创建表空间的时候没有明确指定SEGMENT SPACE MANAGEMENT AUTO,那么默认情况下仍然会使用Freelists和Freelist Groups来管理Free Block。
所以,在仍然存在有大量Oracle8i数据库和非自动段空间管理表空间的现在,对于freelists的研究仍然具有很实际的意义,而由于默认的freelists和freelist groups又都只有1,所以又恰恰是高负载的应用中最需要调整(Tuning)的部分之一。
?
三.???????freelists存储在哪儿
freelists存储在每个segment的header block中,我们可以通过dump来得到更清楚的认识。dump在研究oracle的内部机制时通常都扮演着很重要的角色。
假设我们创建一个表空间TS_TEST,此表空间是非自动段空间管理的,然后在
您可能关注的文档
最近下载
- 标准图集-17J008 挡土墙(重力式、衡重式、悬臂式) 无水印.pdf VIP
- 第二课 活动 一周健康食谱 家庭食谱我设计(教案) 五年级上册综合实践活动浙科版.pdf
- GB50210-2018建筑装饰装修工程质量验收标准.docx VIP
- 广州数控GSK25iMbGSK25iTb系列 编程操作手册.pdf
- 2025北京通州七年级(下)期末英语试卷及答案.pdf VIP
- 中兴常用光传输设备介绍.ppt VIP
- 中国地图报表Excel版(可设置颜色).xls VIP
- 苏TZG 01-2021 预应力混凝土空心方桩图则.docx VIP
- 领导干部离任经济责任审计难点及解决方案.doc VIP
- 德国旅游城市.docx VIP
文档评论(0)