温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

ORACLE表空间、段、区的管理方式

发布时间:2020-08-15 04:53:37 来源:ITPUB博客 阅读:289 作者:大鲨鱼o0O 栏目:关系型数据库

一、 ORACLE表空间管理

        ORACLE通过表空间为数据库提供使用空间。由于区(extent)是ORACLE创建对象时的最小分配单元, 所以表空间的管理实际上就是针对于区间的管理。 

        ORACLE表空间的管理方式分为:

         1.1 字典管理方式(DMT):

               使用数据字典管理存储空间的分配, 当表空间分配新的区, 或者回收已分配的区时, ORACLE会对数据字典对应的表进行查询、更新, 且使用单线程, 速度慢, 并且产生回退和重做信息。

         1.2 本地管理方式(LMT):

               表空间中区分配和区回收的管理信息都被存储在表空间的数据文件中, 而与数据字典无关。表空间为每个数据文件维护一个位图结构, 用于记录表空间的区分配情况。 当表空间分配新的区, 或者回收已分配的区时, ORACLE会对文件中的位图进行更新, 所以不会产生回滚和重做信息。

               优点:  a) 提高存储管理的速度和并发性。 b) 不产生磁盘碎片。 c) 不产生递归管理。 d) 没有系统回滚段。

二、 ORACLE段管理

        ORACLE以区为单位将空间分配给对象段, 而段内则是以BLOCK为单位进行空间使用和管理

        ORACLE段的管理分为:

         2.1 手动段空间管理(Manual Segment Space Management):

               手动设置FressLists、FreeList Groups、PctUsed、其它参数来控制如何分配、使用、重用段空间。 许多版本都支持MSSM。

         2.2 自动段空间管理(Automatic Segment Space Management)

               只需要控制与空间使用相关的PctFree, 其它参数被忽略。 ASSM只有在9i版本后才被引入, 用于减少MSSM中的太多参数的管理。

                应用于ASSM段的存储设置只有Buffer_Pool、PctFree、IniTrans、MaxTrans(10g后的版本都会忽略这个参数), 其它存储和物理属性参数都不适用于ASSM段。

         2.3 HWM高水平线

               HWM是随着表数据的增长而增长的, 只有重建、截除、收缩对象时, HWM才会降低。 HWM很重要, 因为在ORACLE进行全表扫描时会扫描HWM下的所有块, 即使这张数据库表不包含任何数据。

               TRUNCATE会把表的HWM重新置为0, 还会截除表上的相关索引, 而DELETE整张表时没有修改HWM, 所以如果打算删除表的所有行, 应尽量使用TRUNCATE。

               在MSSM表空间中, 段只有一个HWM。 但在ASSM表空间中, 除了HWM外, 还有一个低HWM。 这是因为在ASSM中, HWM推进时, ORACLE并没有立即格式化所有的物理块, 而是只在第一次使用时才会完成格式化, 以便安全读取(这里有些疑问???)。

          2.4 freelists

                freelists 是使用MSSM表空间时, ORACLE使用块时,需要把块放在freelist或从fresslist中删除, fresslists可能对性能有很大的提升或有很大的影响。

                而在ASSM中, 没有也不用去设置freelist参数。

                create tablespace assm datafile size 10m autoextend on next 1m segment space management auto ;

                create table xxx tablespace assm ;

          2.5 pctfree与pctused(同样存在疑问???)

                PctFree告诉ORACLE应该在块上保留多少空间来完成将来的更新, 默认值是10%, 如果自由空间的百分比高于PctFree指定值, 这个块就称为自由的。

                PctUsed告诉ORACLE当前不自由的块上自由空间的百分比需要达到多大时, 才能使它再次变为自由的, 默认值为40%。

                使用MSSM时, 这两个参数设置控制着块何时放入freelist中, 以及何时从freelist中取出。 如果使用默认值,PctFree为10, PctUsed为40, 那么在块到达90%之前(有10%以上的自由空间), 这个块会一直在freelist上。 一旦到底90%, 就会从freelist中取出, 而且直到块上的自由空间超过了块的60%, 才会重新回到freelist上, 在此之前, 这个块一直不在freelist上。

                使用ASSM时, PctFree仍然会限制能否将一个新行插入到一个块中, 但是它不会控制一个块是否在freelist上, 因为ASSM根本不使用freelist。在ASSM中, PCTUSED参数将被忽略。

                 如果PctFree设置的太小, 更新行时就会导致行迁移。

 

三、 ORACLE区管理

         ORACLE区的管理分为:

        3.1 自动分配

              ORACLE会按照递增算法来分配空间。会容易造成磁盘碎片。

        3.2 统一尺寸

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI