查看: 174|回复: 2

[转载] AASM

[复制链接]
新浪微博达人勋 rodman  实名认证
论坛徽章:
9
Oracle研习者初级
日期:2017-08-10 15:28:16mysql徽章
日期:2017-11-23 17:01:08zabbix徽章
日期:2017-12-25 17:34:07mysql徽章
日期:2018-06-07 16:23:08mysql徽章
日期:2018-06-07 16:23:08Oracle研习者高级
日期:2018-09-13 15:34:05Oracle研习者高级
日期:2019-01-24 16:03:57Oracle研习者高级
日期:2019-05-09 14:32:15Oracle研习者中级
日期:2019-07-18 14:39:34
发表于 2019-7-8 00:29 | 显示全部楼层 |阅读模式

数据库 管理 存储 Oracle DBA

MSSM—ManualSegment Space Management 手动段空间管理(手动设置对象的存储属性)
这种管理方式就是使用freelist管理数据块的分配和回收,是一种只针对数据块分配的管理方式,这种方式可以让DBA有更大的空间管理余地,更大自由发挥空间,在早期的Oracle上都是通过这种方式管理块分配的。
场景:对于一些数据块操作非常敏感的场合相对适用
参数:MSSM-由你设置freelistsfreelistgroupspctusedpctfreeinitrans等参数来控制如何分配、使用段中的空间
缺点:1.需要设置更多的参数,例如上面所写的参数,操作复杂度更强
      2.参数设置值比较难评估,需要大量的测试过程
      3.需要了解数据库体系结构的DBA设置
注意:1.freelist空闲列表是放在段头里面的,如果有多个用户同时访问列表势必会引发段头争用,导致“buffer busy waits”等待事件发生,建议多设几个freelist,防止争用。
ASSM—AutomaticSegment Space Management 自动段空间管理(自动设置对象的存储属性)
这种管理方式就是使用“位图bitmap”管理数据块的分配和回收,1为占用块不可分配,0为空闲块可分配,由于计算机就是由二进制编码的,所以操作二进制代码是非常快捷的。现在Oracle 10g 11g 默认值都是ASSM段空间管理方式。
场景:希望数据块由Oracle自动分配管理的场合,不需要DBA介入太多
参数:ASSM-你只需控制一个参数pctfree,其他参数由Oracle自动管理,如果强行设置也将被忽略。
三层位图模式管理段空间:第一层BMBbit map block)记录每个extent中数据块的存储信息,只管理当前的extent内块,放在extent头中,这是leaf节点
             第二层BMB管理第一层BMB记录,这是branch节点
             第三层BMB管理第二层BMB记录,放在段头中,这是root节点
ASSM段头包含了每个Extent存储信息
Extent区头包含BMB信息
优点:1.自动化管理段空间,无需手动设置大量参数,简化了操作
2.增大并发度,由于ASSM没有freelist概念,也就没有freelist列表争用情况,也就没有段头争用的情况,提高资源利用率。
缺点:1.全表扫描性能没有MSSM模式下好
      2.大数据加载,会导致性能下降,因为要自动维护位图表,需要一定的开销
      3.影响索引的集群因子(clustering factor
(1) 设置db_create_file_dest参数
作用:指定Oracle创建某某文件的存放路径,设置后就可以在创建表空间时不指定文件路径了。
■ Datafiles
■ Tempfiles
■ Redo log files
■ Control files
■ Block change tracking files
LEO1@LEO1> showparameter db_create_file_dest
NAME                                 TYPE        VALUE
----------------------------------------------- ------------------------------
db_create_file_dest                      string
空,我们现在还没有初始化这个参数值
LEO1@LEO1>alter system set db_create_file_dest='/u01/app/oracle/oradata/LEO1/';
System altered.
LEO1@LEO1> showparameter db_create_file_dest  
NAME                                 TYPE        VALUE
----------------------------------------------- ------------------------------
db_create_file_dest                      string     /u01/app/oracle/oradata/LEO1/
现在我们已经设置好了参数
(2)创建MSSMASSM表空间
LEO1@LEO1>create tablespace leo_mssm segment space management manual;
Tablespacecreated.
LEO1@LEO1>create tablespace leo_assm segment space management auto;
Tablespacecreated.
我们创建了一个MSSM段管理表空间又创建一个ASSM段管理表空间,默认大小100M
LEO1@LEO1>select file#,name,bytes/1024/1024 from v$datafile;
FILE#   NAME                                                            BYTES/1024/1024
----------------------------------------------------------------------------------------------------------------------------------------------
9      /u01/app/oracle/oradata/LEO1/LEO1/datafile/o1_mf_leo_mssm_8p9jorpx_.dbf  100
10     /u01/app/oracle/oradata/LEO1/LEO1/datafile/o1_mf_leo_assm_8p9jplb8_.dbf   100
数据文件名是系统自定义的。
LEO1@LEO1>select tablespace_name,segment_space_management from dba_tablespaces wheretablespace_name in ('LEO_MSSM','LEO_ASSM');
TABLESPACE_N  SEGMEN
----------------------------------
LEO_ASSM      AUTO
LEO_MSSM     MANUAL

回复

使用道具 举报

新浪微博达人勋 ibsfn  未实名认证
论坛徽章:
7
mysql徽章
日期:2015-06-04 15:07:28Oracle研习者高级
日期:2015-06-18 11:38:31linux徽章
日期:2015-12-30 11:55:12bash徽章
日期:2016-05-26 12:34:27MongoDB徽章
日期:2016-06-16 11:07:29mysql徽章
日期:2017-05-25 16:50:34postgresql徽章
日期:2019-09-05 14:13:16
发表于 2019-7-8 08:45 | 显示全部楼层
我也创建了一个
创建了一个MSSM段管理表空间又创建一个ASSM段管理表空间,默认大小100M
谢谢分享!
回复 支持 反对

使用道具 举报

论坛徽章:
1
postgresql徽章
日期:2019-09-05 14:13:16
发表于 2019-7-8 08:48 | 显示全部楼层
呃,这个概念跟oracle的空间管理非常相似的,但是在文件存储管理方面,还是有蛮大的差异
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

 

GMT+8, 2019-9-20 11:08 , Processed in 0.384239 second(s), 36 queries .

关闭

扫一扫加入
本版微信群