DM8 内存结构、表空间&redo日志管理简单介绍

DM 数据库管理系统的内存结构主要包括内存池、缓冲区、排序区、哈希区等。根据系统 中子模块的不同功能,对内存进行了上述划分,并采用了不同的管理模式。

1.数据缓冲区(buffer)

一般设置为内存的40% ~60%, OLAP一般设置比OLTP系统(60~80%)要高

用于存放数据页。当客户端发起读写请求时,第一次会从磁盘的数据文件中读取数据(为物理读)放入数据缓冲区,使用LRU 最小最少使用算法

Normal普通数据页,缓冲区满时淘汰

FAST 数据页、回滚页,常驻缓冲区

Recycle:临时表数据页

Keep:普通表数据页,很少淘汰。

创建表空间时可指定缓冲区类型Normal 和Keep缓冲区。

执行检查点时将数据缓冲区中的数据写入磁盘文件

手动执行检查点:checkpoint(100);完全检查点,100%刷盘

查看参数值:

SELECT * FROM V$DM_INI WHERE PARA_NAME IN

('BUFFER','FAST_POOL_PAGES','RECYCLE','KEEP');

读多页:当数据分布几种,并要读取大量数据时,可开启,默认1 一次读取一页

MULTI_PAGE_GET_NUM参数

  • 重做日志缓冲区

缓存重做(redo)信息。数据所有的操作几乎都会产生 REDO 日志,REDO 日志会先写入日 志缓冲区

重做日志写入联机重做日志:

        commit时

        每隔3s

        日志缓冲区满

        当我们执行 commit 的时候,

日志缓冲区的日志数据一定会写入联机日志

数据缓冲区的数据是不一定会写入数据文件

  • SQL缓冲区

SQL CACHE POOL,简称SCP ,参数:CACHE_POOL_SIZE。

用来缓存 sql 语句、package,对应的执行计划、结果集。 业务要减少硬解析(性能消耗大),提高 sql 软解析(性能消耗小)。

V$CACHEITEM

V$CACHERS 缓存结果集视图

v$dynamic_tables 动态视图表

参数:USE_PLN_POOL 是否缓存结果集,默认0,不开启

RS_CAN_CACHE 是否缓存执行计划,默认1 开启

V$CACHEPLN 记录缓存的执行计划

select * from v$cacheitem;

select * from V$CACHERS;

select * from v$dynamic_tables;

select * from  v$cachepln;

SP_CLEAR_PLAN_CACHE(plan_id);清空指定SQL的执行计划plan_id从 V$CACHEPLN 中 的 CACHE_ITEM 列获得

SP_CLEAR_PLAN_CACHE()清空所有的执行计划

  • 字典缓冲区

缓存数据库字典信息(表、字段、权限等信息).为了避免频繁从磁盘读取数据字典信息

SELECT * FROM V$DICT_CACHE; 记录数据字典缓冲区使用情况

SELECT * FROM V$DICT_CACHE_ITEM;记录具体的缓存项

  • 内存池

当其他缓冲区不够时,可以向内存池申请空间

V$MEM_POOL 详细记录了当前系统中所有的内存池的状态

共享内存池:

MEMORY_POOL 静态参数,共享内存池初始大小

MEMORY_EXTENT_SIZE 共享内存池的扩展大小

MEMORY_TARGET 共享内存池最大大小,为0 表示不限制

MEMORY_N_POOLS:内存池的个数,当系统高并发数,可设置多个提高数据库的性能

运行时内存池

       在数据库运行时申请,用完后释放。

包含:VM POOL 、SESSION POOL、排序区、HASH区等

排序区:当SQL语句排序是,优先在内存中排序,使用排序区,如果内存不足排序时,会在临时表空间中排序。业务应尽量避免不必要的大数据量排序

查询排序参数:

SELECT * FROM V$DM_INI WHERE PARA_NAME LIKE 'SORT_%';

HASH区:用于hash join和hash group by

查询hash连接参数

SELECT * FROM V$DM_INI WHERE PARA_NAME LIKE 'HJ_%';

查询hash分组参数

SELECT * FROM V$DM_INI WHERE PARA_NAME LIKE 'HAGR_%';

2.表空间管理

SYSTEM:系统表空间,存放数据库的对象定义信息,权限信息,表结构、字段定义等。

ROLL:回滚表空间,用来存放回滚数据。DML的回滚信息,保存在回滚段中。

MAIN:用户默认表空间,创建用户若未指定默认表空间,则使用main表空间。

TEMP:临时表空间,存放临时数据,临时表、大数据量排序、创建索引等。数据库重启会重建临时表空间

HMAIN:HUGE表(列存储表的默认表空间)

后两个视图可以在mount状态下查询:

SELECT * FROM SYS.DBA_TABLESPACES;

SELECT * FROM SYS.DBA_DATA_FILES;

SELECT * FROM V$TABLESPACE; --查看表空间,可以在mount状态下查询

SELECT * FROM V$DATAFILE;   --查看数据文件,可以在mount状态下查询

SELECT * FROM DBA_FREE_SPACE;   --查看表空间空闲情况,可结合tablespace视图查询表空间使用率

在线收缩临时表空间

SP_TRUNC_TS_FILE(临时表空间id,数据文件id,目标大小);

UNDO_RETENTION设置undo保留时间参数:

SQL> sp_set_para_double_value(1,'UNDO_RETENTION',1800);

创建DM表空间数据文件大小的取值范围:不小于页大小的4096倍,不超过页大小的2的31次方-1

查看页大小:SELECT PAGE;

--dmdba账号需要有数据文件目录的读写权限,大小单位为M 不能修改

--创建 DM表空间数据文件大小的取值范围:不小于页大小的4096倍,不超过页大小的231次方-1

--默认为normal表空间,自动扩展

CREATE TABLESPACE TS_SCHEMA1 DATAFILE '/dm8/data/DM02/ts_schema1.dbf' SIZE 32;

--修改表空间为KEEP类型,可用于存放经常访问的数据,DM不能指定表的缓存类型

ALTER TABLESPACE TS_SCHEMA1 CACHE ="KEEP";

--添加数据文件

ALTER TABLESPACE TS_SCHEMA1 ADD DATAFILE '/dm8/data/DM02/ts_schema1_02.dbf' SIZE 32;

--关闭自动扩展

ALTER TABLESPACE TS_SCHEMA1 DATAFILE '/dm8/data/DM02/ts_schema1.dbf' AUTOEXTEND OFF;

--增加数据文件的大小,resize不能改小表空间

ALTER TABLESPACE TS_SCHEMA1 RESIZE DATAFILE '/dm8/data/DM02/ts_schema1.dbf' TO 64;

--数据文件自动扩展,每次扩展2m,最大限制10G

ALTER TABLESPACE TS_SCHEMA1 DATAFILE '/dm8/data/DM02/ts_schema1.dbf' AUTOEXTEND ON NEXT 2 MAXSIZE 10240;

  

SELECT * FROM V$TABLESPACE;

mkdir -p /dm8/data/DM02/tbs

--数据文件迁移(自定义表空间)

--表空间脱机

ALTER TABLESPACE TS_SCHEMA1 OFFLINE;

--迁移数据文件

ALTER TABLESPACE TS_SCHEMA1 RENAME DATAFILE '/dm8/data/DM02/ts_schema1.dbf' TO '/dm8/data/DM02/tbs/ts_schema1_01.dbf';

ALTER TABLESPACE TS_SCHEMA1 RENAME DATAFILE '/dm8/data/DM02/ts_schema1_02.dbf' TO '/dm8/data/DM02/tbs/ts_schema1_02.dbf';

--表空间联机

ALTER TABLESPACE TS_SCHEMA1 ONLINE;

--同步删除数据文件,只能删除空闲的表空间

DROP TABLESPACE TS_SCHEMA1;

--表空间重命名(自定义表空间)

ALTER TABLESPACE TS_SCHEMA1 RENAME TO TS_SCHEMA1_DATA;

SELECT * FROM V$DATAFILE;

3.联机重做日志文件

DM联机日志切换由数据库自动管理,不支持手动切换。过小频繁切换影响性能,过大易丢失数据,空间浪费

--查看重做日志文件

SELECT * FROM V$RLOGFILE;

--查看重做日志总和信息

SELECT * FROM V$RLOG;

--添加重做日志文件

ALTER DATABASE ADD LOGFILE '/dm8/data/DM02/redo03.log' SIZE 256;

--增加日志文件大小

ALTER DATABASE RESIZE LOGFILE '/dm8/data/DM02/redo03.log' TO 400;

--迁移日志文件

mkdir -p /dm8/data/DM02/redo

alter database mount;

alter database RENAME LOGFILE '/dm8/data/DM02/redo03.log' TO '/dm8/data/DM02/redo/redo03.log';

alter database RENAME LOGFILE '/dm8/data/DM02/DM0201.log' TO '/dm8/data/DM02/redo/redo01.log';

alter database RENAME LOGFILE '/dm8/data/DM02/DM0202.log' TO '/dm8/data/DM02/redo/redo02.log';

alter database open;

查看当前使用的redo日志文件:

  • 归档管理

默认不开启归档,开归档用于数据库的恢复

select path,arch_lsn,clsn from v$arch_file;

select arch_name,arch_dest,arch_type from v$dm_arch_ini;

oracle兼容视图

select * from v$archived_log;

select * from v$arch_file;

--开启归档

alter database mount;

alter database add archivelog 'dest=/dm8/arch,type=local,file_size=128,space_limit=10240';

alter database archivelog;

alter database open;

--手动切换归档

alter system switch logfile;

alter system ARCHIVE LOG CURRENT;

alter database archivelog current;

--关闭归档

ALTER DATABASE MOUNT;

ALTER DATABASE NOARCHIVELOG;

ALTER DATABASE DELETE ARCHIVELOG 'DEST=/DM8/arch';

ALTER DATABASE OPEN;

--维护归档日志文件

select* FROM v$ifun WHERE NAME LIKE '%ARCHIVELOG%';

--根据lsn删除,删除小于指定lsn的归档

select SF_ARCHIVELOG_DELETE_BEFORE_LSN(33033);

--根据时间删除指定时间以前的归档

select SF_ARCHIVELOG_DELETE_BEFORE_TIME(sysdate-1);

select sf_archivelog_delete_before_lsn(40430);

日志分析系统包:DBMS_LOGMNR

达梦数据库 - 新一代大型通用关系型数据库 | 达梦云适配中心达梦数据库产品体验站,DM8在线试玩,达梦数据库全系列产品免费下载,官方权威的快速上手文档和产品手册,最活跃的达梦技术社区,面向全行业ISV厂商免费的云适配服务。icon-default.png?t=L892https://eco.dameng.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DHY151

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值