assm/msmm
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,一、MSSM和ASSM如何工作:MSSM是在每个段中以freelistl链方式管理段中空闲数据块(块中空闲区高于pctfree默认10%),当向一个空数据块插入数据量达到数据块大小1-pctfree时
千家信息网最后更新 2025年01月21日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安全错误
数据库的锁怎样保障安全
更新数据库表中所有字段值
服务器环境下载
取消linux服务器的自动同步
服务器搬迁价格
软件开发是前端和后端的工资
维护网络安全的协议
查看localhost服务器
昆山管理软件开发售后服务
网络安全净网
如何获取数据库中表
公安部网络安全保卫局钟忠
网络安全软件推荐
php服务器搭建
网络安全手抄报的字a3纸
布比网络技术
网络安全 教育目的
数据库中备注不为空的学生数目
魔兽世界美服服务器ip地址
便宜好用的传奇云服务器
服装店用什么软件开发票
服务器环境下载
中国电信云网络安全
让网络安全在青少年心中
怎么实现数据库备份
婚纱影楼数据库
软件开发相关的公司名称
长丰网络技术服务哪家好
坦克世界服务器延迟补偿公告
aspnet上传文件到数据库
扶持网络安全企业