注册
初识达梦(三):内存结构
技术分享/ 文章详情 /

初识达梦(三):内存结构

刘刘 2025/11/07 137 0 0

背景

  假设一个场景:有个配置表,每次操作时,我们都有去查询它。那么我们是从磁盘还是内存获取快呢?想必大家都会感觉到内存快。

  数据库管理系统是一种对内存申请和释放操作频率很高的软件,如果每次对内存的使用都使用操作系统函数来申请和释放,效率会比较低,加入自己的内存管理是 DBMS 系统所必须的。通常内存管理系统会带来以下好处:

  1. 申请、释放内存效率更高;
  2. 能够有效地了解内存的使用情况;
  3. 易于发现内存泄露和内存写越界的问题。
    DM 数据库管理系统的内存结构主要包括内存池、缓冲区、排序区、哈希区等。

内存池

  内存池,分为共享内存池和运行时内存池。共享内存池:系统启动时就是申请的内存,主要是数据库线程来使用。运行时内存池:系统运行中,新增的一些比如说 会话……

缓存区

  缓存区,字面意思理解即可。这部分内存块主要用作了做缓存用的。一般常常碰到,字典缓存,结果集缓存,执行计划缓存……

排序区

  排序缓冲区提供数据排序所需要的内存空间。当用户执行 SQL 语句时,常常需要进行排序,所使用的内存就是排序缓冲区提供的。在每次排序过程中,都首先申请内存,排序结束后再释放内存。

哈希区

  DM8 提供了为哈希连接而设定的缓冲区,不过该缓冲区是个虚拟缓冲区。之所以说是虚拟缓冲,是因为系统没有真正创建特定属于哈希缓冲区的内存,而是在进行哈希连接时,对排序的数据量进行了计算。如果计算出的数据量大小超过了哈希缓冲区的大小,则使用 DM8创新的外存哈希方式;如果没有超过哈希缓冲区的大小,实际上还是使用内存池来进行哈希操作。

以上内容为个人对达梦学习的初步认知,受限于视角与经验,不足之处恳请指正

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服