love wife love life —Roger的Oracle/MySQL/PostgreSQL数据恢复博客

Phone:18180207355 提供专业Oracle/MySQL/PostgreSQL数据恢复、性能优化、迁移升级、紧急救援等服务

达梦数据库学习笔记之 — 内存结构

本站文章除注明转载外,均为本站原创: 转载自love wife love life —Roger的Oracle/MySQL/PostgreSQL数据恢复博客

本文链接地址: 达梦数据库学习笔记之 — 内存结构

近几年国产数据库越来越火,作为老牌国产数据库达梦,近期也是炙手可热,不得不抽时间研究一下。大家都说达梦数据库跟Oracle的兼容性是比较高的,从个人实际测试来看,确实还不错,提供了很多类似Oracle数据库的视图,作为Oracle dba的我,基本上可以无缝切换,直接上手。

近期打算写一个系列的达梦数据库文章,首先从内存结构开始吧。

从达梦的内存结构来看;DM8中包含了25个内存结构;相比Oracle来讲似乎简单的太多了。这里简单描述一下相关核心内存结构的作用:

1、共享内存

即共享内存,从字面意思来看,类似Oracle的share pool;实际上并不是;该参数是整个共享内存的大小;通过参数memory_pool来进行控制。

从参数来看,DM也有类似Oracle的内存自动管理机制,如memory_target.

参数属性分为三种:静态、动态和手动。

静态,可以被动态修改,修改后重启服务器才 能生效。
动态,可以被动态修改,修改后即时生效。动态参数又分为会话级和系统级两种。会话级参数被修改后,新参数值只会影响新创建的会话,之前创建的会话不受影响;系统级参数 的修改则会影响所有的会话。
手动,不能被动态修改,必须手动修改 dm.ini 参数文件,然后重启才能生效。

2、buffer 缓冲区

在DM数据库中,buffer 缓冲分为4种,分别为:

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

从上述内存结构的作用来看,keep池类似Oracle buffer cache的keep池;正常情况下的cache 使用是normal类型的缓存。 从DM8的查询结果来这里还多了一类ROLL类型。不知道这里其中的FAST和ROLL 两类缓存的作用是什么。猜测应该是永久性内存,针对数据页和回滚页。

修改参数通过sp_set_para_value进行操作;2表示静态参数,1表示动态。如果参数属性不对,那么修改是不会成功的。

 

可以看到,我们的参数修改生效了,并写入了参数文件。

 

3、SQL缓冲区

在DM数据库中,SQL缓冲区类似Oracle中的shared pool,不过功能不太一样。通过cache_pool_Size参数来进行大小定义。
可以缓存执行过的SQL,SQL执行计划等,应该可以极大避免硬解析,同时还能缓存SQL执行的结果集;相当于又具备了Oracle Result cache的功能。

按照DM官方的文档管理手册描述,如果要使用结果集缓存,还需要同时设置 RS_CAN_CACHE=1和USE_PLN_POOL 参数。另外还可以通过CLT_CACHE_TABLES参数来控制,指定具体哪些表的查询结果可以被缓存。

另外还有相关试图可以查询sql和结果集的缓存情况,如:v$cachepln、v$cachers、v$cachesql。

4、字典缓存

DM数据库中通过dict_buf_size参数来进行控制。数据库对像比如表,索引,视图,序列,同义词,触发器,存储过程的信息都缓存在数据字典缓冲区中。可以通过v$dict_cache 内存视图来查看该内存结构的使用情况:

我这里默认值是50MB,如果数据库对象比较多,这里应该需要调大一些。

5、日志缓冲区(即log buffer)

在DM数据库中,也有类似Oracle一样的Log buffer内存结构;不过在DM数据库中看上去似乎更复杂一点点。通过查看参数
发现了有6个如下相关的参数:

从上面的信息来看,通过rlog_pool_size 来定义日志缓冲区的内存大小. 另外DM也有类似Oracle的排序内存区,hash等。这里不做多余介绍。

从DM的内存结构来看,比Oralce确实要简单的太多。不知道达梦是否提供类似Oracle一样的各种dump内存结构的手段,方便进行深入研究。

DM8中共计643个数据库参数,其中跟内存相关的参数有几十个,这里我贴进来,供参考!

最后期待国产数据库越来越好!

附录:DM8中内存相关参数的解释

 

 

 

Leave a Reply

You must be logged in to post a comment.