假设一个场景:有个配置表,每次操作时,我们都有去查询它。那么我们是从磁盘还是内存获取快呢?想必大家都会感觉到内存快。
数据库管理系统是一种对内存申请和释放操作频率很高的软件,如果每次对内存的使用都使用操作系统函数来申请和释放,效率会比较低,加入自己的内存管理是 DBMS 系统所必须的。通常内存管理系统会带来以下好处:
内存池,分为共享内存池和运行时内存池。共享内存池:系统启动时就是申请的内存,主要是数据库线程来使用。运行时内存池:系统运行中,新增的一些比如说 会话……
缓存区,字面意思理解即可。这部分内存块主要用作了做缓存用的。一般常常碰到,字典缓存,结果集缓存,执行计划缓存……
排序缓冲区提供数据排序所需要的内存空间。当用户执行 SQL 语句时,常常需要进行排序,所使用的内存就是排序缓冲区提供的。在每次排序过程中,都首先申请内存,排序结束后再释放内存。
DM8 提供了为哈希连接而设定的缓冲区,不过该缓冲区是个虚拟缓冲区。之所以说是虚拟缓冲,是因为系统没有真正创建特定属于哈希缓冲区的内存,而是在进行哈希连接时,对排序的数据量进行了计算。如果计算出的数据量大小超过了哈希缓冲区的大小,则使用 DM8创新的外存哈希方式;如果没有超过哈希缓冲区的大小,实际上还是使用内存池来进行哈希操作。
以上内容为个人对达梦学习的初步认知,受限于视角与经验,不足之处恳请指正
文章
阅读量
获赞
