assm/msmm
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,一、MSSM和ASSM如何工作:MSSM是在每个段中以freelistl链方式管理段中空闲数据块(块中空闲区高于pctfree默认10%),当向一个空数据块插入数据量达到数据块大小1-pctfree时
千家信息网最后更新 2025年11月08日assm/msmm一、MSSM和ASSM如何工作:
MSSM是在每个段中以freelistl链方式管理段中空闲数据块(块中空闲区高于pctfree默认10%),当向一个空数据块插入数据量达到数据块大小1-pctfree时,即停止对该块进行插入,而再分配另一个新数据块进行插入,并将该块从空闲列表freelist中移除。因此每个块的利用率为1-pctfree,是为了以后发生update 操作此块发生行迁移或行连接,增加磁盘I/O。
当数据块内数据被删除到pctused所指定值(默认40%)时,即将该块挂起到freelist上,使其可以接受新数据段插入。
在segment中若同一时刻发生多个insert,会引起freelist争用,故一个segment中可存在多个freelist。freelist的多少决定了同一时刻在同一segment中进行insert操作的数量。多个freelist又可归属于不同的freelist group。
当grouplist=1时,第一个block为段头块,存放freelist及HWM信息,其余均为数据块,第一个数据块是从第二个块开始插入的。
当freelist group >=2时,freelist从segment header内分离出来,存在单独的block中,每个freelist group占一个block,及真正的数据从1(段头)+n (freelist group数据)块之后的块开始。
ASSM(默认)以位图BMB方式管理段中的空闲数据块以避免freelist链表竞争,
当段空间<=1M,第一个块为一级位图块,该块管理2个分区内那些块,第二个块为二级位图块,它指明所有一级位图块的位置,第三块为段头,存放所有区的编号、一级位图块和而及位图块。第17个块也为位图块,管理第18~32个块,即2个区。依次类推。
当当段空间>1M,前16个区与上述相同,从17个区开始2个一级位图管理1个区,因为一个一级位图最多可管理64个块
二、ASSM介绍
ASSM是Automatic Segment Space Management的缩写。与ASSM相对是Manul Segment Space Management。只有在Locally Managed Tablespace中可以使用ASSM,system tablespace不可以使用ASSM。Locally managed tablespace和ASSm是11gR2的默认配置。
In a locally managed tablespace, following parameters are not used any more:
next
pctincrease
minextents
maxentents
default
ASSM uses bitmap to manage space, whereas MSSM uses free list to manage free space.
在创建Tablespace时可以显式指定:
create tablespace tools
datafile '/ora01/dbfile/INVREP/tools01.dbf'
size 100m -- Fixed datafile size
extent management local -- Locally managed
uniform size 128k -- Uniform extent size
segment space management auto -- ASSM
表空间tools虽然采用ASSM,但是空间超出100M后,依然需要手工增长。或者增加datafile。亦即,表空间存储空间的上限是有数据文件的属性决定的,不是ASSM。
ASSM的参数比MSSM少许多,一个Pctfree就够了。以下参数不再需要
pctused
freelist
freelist group
查看tablespace是如何管理的:
select tablespace_name ,extent_management ,segment_space_management
from dba_tablespaces
order by tablespace_name;
三、assm补充
从Oracle 9i开始,管理段空间有两种方法:手动段空间管理和自动段空间管理(Auto Segment Space Management,ASSM);
ASSM用位图来跟踪或管理每个分配到对象的块,每个块有多少剩余空间根据位图的状态来确定,如>75%,50%-75%,25%-50%和<25%,也就是说位图其实采用了四个状态位来代替以前的PCTUSED,什么时候该利用该数据块则由设定的PCTFREE来确定。
对于ASSM,只需控制与空间使用相关的一个参数:PCTFREE。创建段时也可以接受其他参数,但是这些参数将被忽略。
在存储/段 特征这方面,应用于ASSM段的存储设置只有:
BUFFER_POOL
PCTFREE
INITRANS
MAXTRANS(仅用于9i,在10g及以上版本中,所有段都会忽略这个参数。)
BUFFER_POOL : 可以将表放到keep或其它中,如: ALTERTABLE Table_Name STORAGE ( BUFFER_POOL KEEP) ;
PCTFREE:该参数用于告诉oracle应该在块上保留多少空间来完成将来的更新,默认10%。如果自由空间百分比高于PCTFREE中指定的值,这个块就被认为是自由的。
使用ASSM时,PCTFREE会限制能否将一个新行插入到一个块中,但是它不会控制一个块是否在FRRELIST上,因为ASSM根本不会使用FREELIST,在ASSM中PCTUSED也被忽略。
PCTFREE有3种设置:太高、太低、刚刚好。如果把块的PCTFREE设置的太高,就会浪费空间。如果把PCTFREE设置为50%,而你从未更新数据,那么每个块都会浪费50%的空间。不过,在另一个表上,可能50%非常合理。如果行最初很小,现在想将行的大小加倍,但是倘若 PCTFREE设置太小,更新行时就会导致行迁移。
行迁移是指(rowmigration)是指由于某一行变得太大,无法再与其余的行一同放在创建这一行的块中,而放到其它的块中。
如果这种行迁移所占的比例相当大,而且有大量用户在访问这些行,访问这些数据的速度就会开始变慢,因为额外的i/o以及与i/o相关的闩定都会增加访问时间,缓冲区缓存的效率开始下降,因为需要缓存两个块,而如果没有行迁移只需要缓存一个块。另外表的大小和复杂性都有所增加。
如何设置PCTFREE(ASSM):
如果你插入了将要更新的大量数据,而且这些更新会频繁地增加行的大小,此时可以设置比较高的PCTFREE,因为这可以在插入后在块上预留大量空间。
如果只想对表完成INSERT或DELETE,或者UPDATE只是对行大小影响比较小,此时可以设置比较低的PCTFREE。
相关信息可参考:
Oracle 自动段空间管理(ASSM:autosegment space management)
http://blog.csdn.net/tianlesoftware/article/details/4958989
Oracle ASSM三级位图块结构
http://www.eygle.com/archives/2007/07/oracle_assm_level3_bmb.html
http://www.itpub.net/thread-99486-1-1.html
MSSM是在每个段中以freelistl链方式管理段中空闲数据块(块中空闲区高于pctfree默认10%),当向一个空数据块插入数据量达到数据块大小1-pctfree时,即停止对该块进行插入,而再分配另一个新数据块进行插入,并将该块从空闲列表freelist中移除。因此每个块的利用率为1-pctfree,是为了以后发生update 操作此块发生行迁移或行连接,增加磁盘I/O。
当数据块内数据被删除到pctused所指定值(默认40%)时,即将该块挂起到freelist上,使其可以接受新数据段插入。
在segment中若同一时刻发生多个insert,会引起freelist争用,故一个segment中可存在多个freelist。freelist的多少决定了同一时刻在同一segment中进行insert操作的数量。多个freelist又可归属于不同的freelist group。
当grouplist=1时,第一个block为段头块,存放freelist及HWM信息,其余均为数据块,第一个数据块是从第二个块开始插入的。
当freelist group >=2时,freelist从segment header内分离出来,存在单独的block中,每个freelist group占一个block,及真正的数据从1(段头)+n (freelist group数据)块之后的块开始。
ASSM(默认)以位图BMB方式管理段中的空闲数据块以避免freelist链表竞争,
当段空间<=1M,第一个块为一级位图块,该块管理2个分区内那些块,第二个块为二级位图块,它指明所有一级位图块的位置,第三块为段头,存放所有区的编号、一级位图块和而及位图块。第17个块也为位图块,管理第18~32个块,即2个区。依次类推。
当当段空间>1M,前16个区与上述相同,从17个区开始2个一级位图管理1个区,因为一个一级位图最多可管理64个块
二、ASSM介绍
ASSM是Automatic Segment Space Management的缩写。与ASSM相对是Manul Segment Space Management。只有在Locally Managed Tablespace中可以使用ASSM,system tablespace不可以使用ASSM。Locally managed tablespace和ASSm是11gR2的默认配置。
In a locally managed tablespace, following parameters are not used any more:
next
pctincrease
minextents
maxentents
default
ASSM uses bitmap to manage space, whereas MSSM uses free list to manage free space.
在创建Tablespace时可以显式指定:
create tablespace tools
datafile '/ora01/dbfile/INVREP/tools01.dbf'
size 100m -- Fixed datafile size
extent management local -- Locally managed
uniform size 128k -- Uniform extent size
segment space management auto -- ASSM
表空间tools虽然采用ASSM,但是空间超出100M后,依然需要手工增长。或者增加datafile。亦即,表空间存储空间的上限是有数据文件的属性决定的,不是ASSM。
ASSM的参数比MSSM少许多,一个Pctfree就够了。以下参数不再需要
pctused
freelist
freelist group
查看tablespace是如何管理的:
select tablespace_name ,extent_management ,segment_space_management
from dba_tablespaces
order by tablespace_name;
三、assm补充
从Oracle 9i开始,管理段空间有两种方法:手动段空间管理和自动段空间管理(Auto Segment Space Management,ASSM);
ASSM用位图来跟踪或管理每个分配到对象的块,每个块有多少剩余空间根据位图的状态来确定,如>75%,50%-75%,25%-50%和<25%,也就是说位图其实采用了四个状态位来代替以前的PCTUSED,什么时候该利用该数据块则由设定的PCTFREE来确定。
对于ASSM,只需控制与空间使用相关的一个参数:PCTFREE。创建段时也可以接受其他参数,但是这些参数将被忽略。
在存储/段 特征这方面,应用于ASSM段的存储设置只有:
BUFFER_POOL
PCTFREE
INITRANS
MAXTRANS(仅用于9i,在10g及以上版本中,所有段都会忽略这个参数。)
BUFFER_POOL : 可以将表放到keep或其它中,如: ALTERTABLE Table_Name STORAGE ( BUFFER_POOL KEEP) ;
PCTFREE:该参数用于告诉oracle应该在块上保留多少空间来完成将来的更新,默认10%。如果自由空间百分比高于PCTFREE中指定的值,这个块就被认为是自由的。
使用ASSM时,PCTFREE会限制能否将一个新行插入到一个块中,但是它不会控制一个块是否在FRRELIST上,因为ASSM根本不会使用FREELIST,在ASSM中PCTUSED也被忽略。
PCTFREE有3种设置:太高、太低、刚刚好。如果把块的PCTFREE设置的太高,就会浪费空间。如果把PCTFREE设置为50%,而你从未更新数据,那么每个块都会浪费50%的空间。不过,在另一个表上,可能50%非常合理。如果行最初很小,现在想将行的大小加倍,但是倘若 PCTFREE设置太小,更新行时就会导致行迁移。
行迁移是指(rowmigration)是指由于某一行变得太大,无法再与其余的行一同放在创建这一行的块中,而放到其它的块中。
如果这种行迁移所占的比例相当大,而且有大量用户在访问这些行,访问这些数据的速度就会开始变慢,因为额外的i/o以及与i/o相关的闩定都会增加访问时间,缓冲区缓存的效率开始下降,因为需要缓存两个块,而如果没有行迁移只需要缓存一个块。另外表的大小和复杂性都有所增加。
如何设置PCTFREE(ASSM):
如果你插入了将要更新的大量数据,而且这些更新会频繁地增加行的大小,此时可以设置比较高的PCTFREE,因为这可以在插入后在块上预留大量空间。
如果只想对表完成INSERT或DELETE,或者UPDATE只是对行大小影响比较小,此时可以设置比较低的PCTFREE。
相关信息可参考:
Oracle 自动段空间管理(ASSM:autosegment space management)
http://blog.csdn.net/tianlesoftware/article/details/4958989
Oracle ASSM三级位图块结构
http://www.eygle.com/archives/2007/07/oracle_assm_level3_bmb.html
http://www.itpub.net/thread-99486-1-1.html
数据
空间
位图
管理
参数
大小
更新
空闲
多个
缓存
存储
自由
一行
信息
只有
方式
时刻
状态
分配
控制
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
sec富硒链app软件开发
河南真二互联网络科技公司
济宁联想服务器经销商
网站服务器套件
信息安全包括网络安全专业吗
服务器网口灯橙色闪烁
电子商务网络安全的要素
大内存便宜服务器
精易 类_ODBC数据库
临沂大型数据库技术网课答案
德州逍遥网络技术服务有限公司
网络安全设备工作状态
科技互联网类网站有哪些
优质的即时通讯软件开发
网页上传附件上传不了服务器
网络安全中队周报四年级
北美服务器延迟
三秦通app 服务器地址错误
电脑编程和电脑软件开发相同吗
网络安全法颁布会议
软件开发质量管理薪资怎么样
nginx 服务器配置
简述一下什么是数据库管理系统
网络安全等的信息
幼儿园教职工网络安全教育
充当网关的代理服务器
甄云科技是互联网公司吗
csgo社区服务器收藏会没
数据库创建人如何设计
网络安全遭受的威胁有哪些