达梦8——内存参数分析


一、内存简介

达梦数据库的内存使用简单可以分为如下三部分:

select * from v$mem_pool;
select * from v$dm_ini where para_NAME = 'MEMORY_POOL';

 

 

 

 

 

达梦数据库系统使用的内存分为3部分。
分别是缓冲区内存、主内存、其他内存。

 

二、达梦内存详解

1、缓冲区

缓冲区内存分为

(1)数据缓冲区

  • normal缓冲区,对应的ini参数是buffer,
  • keep缓冲区,常驻的数据都放在keep数据页中,对应的ini参数就是keep,
  • recycle缓冲区,高并发系统、使用with as语句较多,临时数据较多需要将这个recycle数据页所占用的内存值调大,对应的ini参数是recycle。记住所有的页大小在初始化实例时已经设定好了,现在使用ini参数修改的是缓冲区内存大小。
  • fast缓冲区,fast包含数据页和回滚页, 常驻缓冲区,这两者都是由系统自动管理,无需用户干涉对应的ini参数是fast_pool_pages和fast_roll_pages,代表fast缓冲区的大小为多少个数据页。,
select * from v$dm_ini where para_NAME = 'BUFFER';
select * from v$dm_ini where para_NAME = 'KEEP';
select * from v$dm_ini where para_NAME = 'RECYCLE';
select
* from v$dm_ini where para_NAME = 'FAST_POOL_PAGES';

select * from v$dm_ini where para_NAME = 'FAST_ROLL_PAGES';

 

有个视图v$bufferpool代表了数据缓冲区所有的pool,咱看这个视图的查询结果:

 

 通过v$bufferpool视图和这个sql,可以大致算出数据缓冲区的总大小

select sum(n_pages * page_size) from v$bufferpool; 

 

 

(2)日志缓冲区

redo_log日志在写入磁盘前,先写入在日志缓冲区中,最后在机会合适时再写入日志缓冲区。对应的ini参数是RLOG_BUF_SIZE

select * from  V$DM_INI WHERE PARA_NAME = 'RLOG_BUF_SIZE';  单位是页数量
SELECT * FROM v$rlog;

 

(3)sql缓冲区

  • 所需执行的sql执行计划,sql,结果集都会在缓存在sql缓冲区中。
  • v$cacheitem,记录了当前sql缓冲区的使用情况。此外,v$cachepln、v$cachers、v$cachesql分别记录了执行计划缓存、结果集缓存、SQL语句缓存(注:这些视图都是在参数USE_PLN_POOL !=0才统计,其中结果集缓存还受rs_can_cache、rs_cache_tables、rs_cache_min_time参数控制)。
  • 对于SQL类别多、包比较多的系统可适当调大该参数。
  • 常用 Select sum(item_size) from v$cacheitem 来计算SCP的大小。(存疑,这个结算结果和cache——pool——size的值不一样)
select * from v$dm_ini where para_NAME = 'CACHE_POOL_SIZE'; 单位是M
SELECT * FROM V$CACHEPLN;

 

(4)数据字典缓冲区

数据库对像比如表,索引,视图,序列,同义词,触发器,存储过程的信息都缓存在数据字典缓冲区中

在数据库对象较多时,可适当增大该参数。通过查询select total_size,used_size FROM v$dict_cache

select * from  V$DM_INI WHERE PARA_NAME = 'DICT_BUF_SIZE';  

若想知道字典缓冲区中缓存对象的详细信息需查询视图v$dict_cache_item SELECT
* FROM V$DICT_CACHE_ITEM ;

 

posted @ 2021-03-12 00:34  Eric-Shen  阅读(2041)  评论(0编辑  收藏  举报