首页 > 数据库 >DM数据库架构原理之内存结构

DM数据库架构原理之内存结构

时间:2023-10-30 11:03:39浏览次数:30  
标签:DM 架构 BUFFER 内存 SQL 缓冲区 POOL

2.DM数据库体系架构

谈DM数据库内存结构之前,我们必须先了解下DM数据库的体系架构,本人认为要想学好一门数据库,必须要深入了解它的体系架构,下面这幅图是本人对DM体系架构理解画出来的。

DM数据库架构原理之内存结构_DM

工作原理:
下面我们从一个用户请求开始讲,DM的完整的工作机制是咋样的,首先当客户端的发出一条select语句查询连接请求,监听线程接受到用户请求后会生成一个会话申请任务,加入到工作线程队列,等待工作线程进行处理。 工作线程从工作线程队列中取出select任务,先去SQL缓冲区查找,如果存在会有相同的执行计划执行即可;如果在SQL缓冲池没有找到,调用字典缓冲区对SQL语句进行语法语义分析,如果字典缓冲区里无法解析,需要从数据文件读到字典缓冲区做语法、语义分析,会生成多个执行计划,选择最优的一个最优执行计划去做搜索更新。

3.内存结构

书归正传,接下来我们谈谈为什么要引入内存结构?因为数据库管理系统是一种对内存申请和释放操作频率很高的软件,如果每次对内存的使用都使用操作系统函数来申请和释放,效率会比较低,加入自己的内存管理是 DBMS 系统所必须的。所以说内存结构在DM体系架构中扮演很重要的角色。
DM内存结构主要包括内存池、缓冲区、排序区、哈希区等

3.1 内存池

DM 数据库服务器的内存池包括共享内存池和运行时内存池。
可以通过视图 V$MEM_POOL查询所有的内存池的状态和内存使用情况。

SQL> select name,IS_SHARED,sum(TOTAL_SIZE),
sum(RESERVED_SIZE) from V$MEM_POOL group by name,IS_SHARED;
行号   NAME    IS_SHARED SUM(TOTAL_SIZE)  SUM(RESERVED_SIZE)  

1          SHARE POOL            Y         220200960            39554560
2          BACKUP POOL           Y         4194304              0
3          MON ITEM ARR          Y         134217728            133202176
4          LARGE_MEM_SQL_MONITOR Y         1048576              57600
5          CYT_CACHE             Y         327680               272640
6          DICT CACHE            Y         5242880              4314112
7          CHECK POINT           N         1966080              256
8          SQL CACHE MANAGERMENT Y         20971520             2967040
9          MEM FOR PIPE          Y         65536                32768
10         FLASHBACK SYS         Y         393088               328320
11         HUGE AUX              Y         65536                16896
12         RT_MEMOBJ_VPOOL   N         7340032              768
13         DBLINK POOL       Y         131072               4608
14         NSEQ CACHE        Y         65536                33280
15         PURG_POOL         N         1114112              0
16         PURG_ITEM_POOL    N         1114112              0
17         POLICY GRP        Y         65536                4352
18         SESSION           N         9568256              4637184
19         RT_HEAP           N         294912               148736
20         VIRTUAL MACHINE   N         5373952              381440
21         DSQL STAT HISTORY Y         15728640             8388864
22         DSQL ET POOL      Y         3145728              2359552

3.1.1 共享内存池

共享内存池是 DM Server 在启动时从操作系统申请的一大片内存。提供了一组内存申请/释放接口,为系统中需要动态分配内存的模块提供服务。

SQL>  select PARA_NAME,PARA_VALUE from v$dm_ini where para_name like  '%MEM%POOL%';

行号     PARA_NAME       PARA_VALUE
---------- --------------- ----------
1          MEMORY_POOL     64
2          MEMORY_BAK_POOL 4
3          N_MEM_POOLS     1

MEMORY_POOL决定了以M为单位的公共内存池的大小,上例中64M;N_MEM_POOLS决定把内存池划分为几个独立的单元,以减少并发访问的冲突,提升并发效率;MEMORY_BAK_POOL表示系统保留的备用内存量,当常规的内存申请都失败时,从这个备用内存里分配,然后在上层模块中进行必要的容错处理。可以在v$sysstat中查看当前共享内存池的使用情况。
参数调优:
生产环境建议MEMORY_POOL:设置2048M

3.1.2 运行时内存池

除了共享内存池,DM Server 的一些功能模块在运行时还会使用自己的运行时内存池。
这些运行时内存池是从操作系统申请一片内存作为本功能模块的内存池来使用,如会话内存池、虚拟机内存池等。

3.2 缓冲区

3.2.1数据缓冲区

为了加速数据访问,系统开辟了一个数据缓冲区,使用LRU算法存放经常访问的数据页,逐步淘汰不用的数据页。
使用下列参数,可配置基本的数据缓冲区的大小:

SQL> select PARA_NAME,PARA_VALUE from v$dm_ini  where para_name like '%BUFFER%';

行号     PARA_NAME           PARA_VALUE
---------- ------------------- ----------
1          HUGE_BUFFER         80
2          HUGE_BUFFER_POOLS   4
3          BUFFER              514
4          BUFFER_POOLS        19

其中HUGE_BUFFER 是专门用于列存表的缓存区,BUFFER是用户行存表的数据缓冲区。BUFFER表示初始的系统缓冲区大小,单位为M。通常情况下,如果物理数据量大于物理内存,则应该把BUFFER调到物理内存的三分之二比较合适。
MAX_BUFFER表示最多能扩到多大。在自动扩展后,如果系统的压力在一段时间内比较低,系统又会自动收缩缓冲区。BUFFER_POOLS,一般配置为质数,取值范围为 1~500,并发较大的系统需要配置这个参数;建议BUFFER/ BUFFER_POOLS>=500MB;当MAX_BUFFER>BUFFER时,动态扩展的缓冲区不参与分区。
DM Server 中有四种类型的数据缓冲区,分别是 NORMAL、KEEP、FAST 和 RECYCLE。

3.2.2日志缓冲区

日志缓冲区是用于存放重做日志的内存缓冲区。为了避免由于直接的磁盘 IO 而使系统性能受到影响,系统在运行过程中产生的日志并不会立即被写入磁盘,而是和数据页一样, 先将其放置到日志缓冲区中。

3.2.3字典缓冲区

主要用于缓存数据字典信息,如模式信息、表信息、列信息、触发器信息等。
参数调优:
对应参数:DICT_BUF_SIZE;生产环境建议设置:32M;当系统中对象个数较多时适当调大。

3.3 SQL 缓冲区

SQL缓冲区主要为执行SQL语句过程中所提供内存,包括计划、SQL 语句和结果集缓存。
参数调优:
对应的参数:CACHE_POOL_SIZE;生产建议设置一般配置为1000M~4000M。

3.4.排序区

排序缓冲区主要为查询数据排序时提供内存空间。
参数调优:
对应的参数:SORT_BUF_SIZE;生产建议设置:32M;当创建索引时调大点。

3.5.哈希区

DM8 提供了为哈希连接而设定的缓冲区,不过该缓冲区是个虚拟缓冲区。
参数调优:
对应参数:HJ_BUF_GLOBAL_SIZE: 哈希连接使用的内存空间上限;生产环境建议设置:5000M
当高并发、hash操作多适当调大
对应参数:HJ_BUF_SIZE:单个哈希连接使用的内存;生产环境建议设置:500M;有大表的hash连接应调大
复制

3.6.SSD 缓冲区

固态硬盘采用闪存作为存储介质,因没有机械磁头的寻道时间,在读写效率上比机械磁 盘具有优势。在内存、SSD 磁盘、机械磁盘之间,符合存储分级的条件。为提高系统执行效率,DM Server 将 SSD 文件作为内存缓存与普通磁盘之间的缓冲层,称为“SSD 缓存”。
参数调优:
默认 SSD 缓冲区是关闭的,即 SSD_BUF_SIZE 为 0。若要配置 SSD 缓冲区,将其设置为大于 0 的数并指定 SSD_FILE_PATH 即可.

标签:DM,架构,BUFFER,内存,SQL,缓冲区,POOL
From: https://blog.51cto.com/u_13482808/8086540

相关文章

  • 海康EHOME协议:架构、特点与优势
    海康EHOME协议:架构、特点与优势海康EHOME协议是海康威视(Hikvision)推出的一种安全、高效的远程监控解决方案。它基于IP网络,采用音视频压缩编码技术,支持多级监控中心及跨区域管理。本文将详细介绍海康EHOME协议的架构、特点与优势。一、海康EHOME协议架构海康EHOME协议架构包括三......
  • .NET中的数组在内存中如何布局?
    总的来说,.NET的值类型和引用类型都映射一段连续的内存片段。不过对于值类型对象来说,这段内存只需要存储其字段成员,而对应引用类型对象,还需要存储额外的内容。就内存布局来说,引用类型有两个独特的存在,一个是字符串,另一个就是数组。我在《你知道.NET的字符串在内存中是如何存储的吗?......
  • java 内存分配
    ......
  • 云原生架构实战04 kubeSphere 平台安装
    一、Kubernetes上安装KubeSpherehttps://kubesphere.com.cn/安装步骤选择4核8G(master)、8核16G(node1)、8核16G(node2)三台机器,按量付费进行实验,CentOS7.9安装Docker安装Kubernetes安装KubeSphere前置环境安装KubeSphere1、安装Dockersudoyumremovedocker*sudoyuminstall-yyum......
  • 网安基础入门(三)——APP架构与云安全
    网络安全基础入门(三)——APP架构&云安全知识点WebApp原生APPH5开发Flutter云安全云服务云原生特点及安全APP架构一、常规Web开发WebApp开发是指创建可以在网页浏览器中运行的应用程序。这些应用程序通常使用标准的Web技术(如HTML、CSS和JavaScript)来实现,并且可以通......
  • 系统架构师考试大纲分析
    大纲以及分值想要高效的学习,首先要先分析考试大纲。下面是系统架构师新大纲上午题系统架构设计师分值计算机组成原理3分操作系统基础5分数据库基础4分网络与信息安全基础4分软件工程15分知识产权3分计算机英语5分项目管理4分运筹学2分企业信息化5分可靠性分析与设计3分嵌入式系统2......
  • 系统架构案例分析( 数据库类型填空题)
    21年某医药销售企业因业务发展,需要建立线上药品销售系统,为用户提供便捷的互联网药品销售服务、该系统除了常规药品展示、订单、用户交流与反馈功能外,还需要提供当前热销产品排名、评价分类管理等功能。通过对需求的分析,在数据管理上初步决定采用关系数据库(MySQL)和数据库缓存(R......
  • 系统架构案例分析( java项目架构填空题)
    20年connectionpool数据库连接池viewlayer视图层Controllerlayer控制层businesslayer业务层19年18年17年16年SiteMesh是一个网页布局和装饰框架以及Web应用程序集成框架jQuery是一个快速、小巧且功能丰富的JavaScript库Struts2是一个基于MVC设计模式的Web应用程序......
  • catchAdmin后台管理系统 v3.1.8
    CatchAdmin是一款基于thinkphpframework和elementadmin开发而成的后台管理系统。因为thinkphp的简单高效,文档齐全。在看了很多thinkphp生态中的后台管理系统,发现没有一款合适的前后端分离系统。遂开发了CatchAdmin。基于新版thinkphp6服务者的特性,后台的每个模块都可......
  • 大数据平台架构搭建目录
    Centos7基础环境搭建(1)ESXI安装CentOS7(1)ESXI界面操作Centos7基础环境搭建(2)ESXI安装CentOS7(2)CentOS7(Linux)详细安装教程 ......