达梦数据库体系结构学习

达梦数据库体系结构学习

关键字:

DM8内存结构、线程结构、存储结构、REDO日志、dm.ini、sql日志监控

1.对DM8内存结构的学习及理解

概述:内存管理系统加快申请、释放内存的效率,了解内存使用情况,易发现内存泄漏和写越界,结构包括内存池、缓冲区、排序区、哈希区,且相关参数均可在dm.ini配置。

内存池:

分为共享内存池和运行时内存池,共享内存池是在DM server启动时向OS申请的一大片内存,避免频繁向OS申请和释放内存引起的线程切换导致效率降低,运行时内存池是为会话、虚拟机等功能模块运行时向OS申请的内存池

缓冲区:

数据缓冲区,向OS申请一段连续内存并按页大小格式化后配入“自由”链。

“自由”链:存放未使用的内存数据页;

“LRU”链:存放已被使用的内存数据页(已修改和未修改);

“脏”链:存放已被修改过的内存数据页;

特定数据页:常留在缓冲区不参与一般淘汰机制,存放在常被访问的数据页

数据缓冲区类别:

NORMAL(默认且buffer为100M,用于提供给系统处理数据页)

KEEP(8M,很少或几乎不淘汰数据页,适用经常处在内存中的应用)

RECYCLE(64M,临时表空间使用)

FAST(fast_pool_page 3000,根据用户指定的f_p_p大小由系统自动管理)

页多读:了解到每次用户需要读取表的大量数据,读取第一页时,猜测用户需要读取这页的下一页,通过一次性读取多页可以减少IO次数,提高数据的查询、修改效率(dm.ini中参数为MULTI_PAGE_GET_NUM

日志缓冲区,存放重做日志的内存缓冲区,与数据页一样会将日志先放入缓冲区中,原因如下(大小控制参数RLOG_BUF_SIZE):

重做日志格式与数据页不同,无法统一管理;

重做日志(日志类)具备连续写的特点;

逻辑上没写重做日志比数据页IO优先级更高。

字典缓冲区,储存数据字典信息,如模式信息、表信息、列信息、触发器信息等。特点在于只将部分数据字典信息加载进缓冲区(通过DICT_BUF_SIZE调整大小)

SQL缓冲区,提供执行SQL查询结果集缓存和DMSQL函数结果集缓存。作用在于储存反复执行的相同SQL语句及其执行计划(启动计划重用参数USE_PLN_POOL != 0

结果缓存集包括SQL查询结果集缓存和DMSQL函数结果集缓存(同时设置RS_CAN_CACHE = 1USE_PLN_POOL != 0时启动)

客户端结果集通过配置dm_svc.conf参数可以开启缓存:

ENABLE_RS_CACHE = (1) //启用缓存

RS_CACHE_SIZE = (100) //缓存区大小为100M,可配置1-65535

RS_REFRESH_FREQ = (30) //表示每30秒检查缓存有效性,若失效自动重查,0则为默认不检查

排序区:

排序缓冲区提供数据排序需要的内存空间,用途在于提供执行SQL语句排序所使用的内存。特点在于每次排序过程首先申请内存,结束后释放内存,且缓冲区大小由内部排序算法和排序数据结构决定,默认2M(SORT_BUF_SIZE)。

哈希区:

为Hash连接设定的缓冲区,特点是虚拟缓冲区无特定哈希缓冲区内存,哈希连接数据量超过哈希缓冲区大小则使用外存哈希方式,反之实际还是使用VPOOL内存池(HJ_BUF_SIZE),可以设置创建的哈希表个数(HAGR_HASH_SIZE)推荐保持默认100000。

2.对DM8线程结构的学习及理解

概述:dm8线程结构主要包括监听、工作、IO、调度、日志FLUSH、日志归档、日志APPLY等线程,由于服务器允许多个用户连接到同一服务器上,服务器进程也称共享服务器进程

监听进程:

服务器端口循环监听,生命周期为随系统启动→被唤醒→生成会话申请→进入工作线程任务队列→等待工作进程处理→系统关闭时被优先关闭。

工作进程:

从任务队列取出任务,负责所有实际数据相关操作,特点在于随会话增加会自动增加线程,一个会话的任务全由同一个线程完成,会话超过阈值则启动会话轮询线程即任务队列。

IO线程:

专职负责IO操作,主要负责数据页读入缓冲区,缓冲区满或系统关闭将部分脏数据写入磁盘,到检查点将所有脏数据写入磁盘,关注异步IO,由系统完成后才通知IO,使得IO线程需要直接处理的任务很简单

调度线程:

接管需要定时调度的任务,特点是每秒轮询一次,主要关注事件触发器任务、任务时效到期项、自动执行检查点、会话超时连接、唤醒等待线程等。

日志FLUSH线程:

对重做REDO日志的刷盘,由于日志顺序写入效率高于数据页分散IO写入,故和IO线程分开以获得更快响应速度。

日志归档线程:

除了远程实时归档,本地归档和远程异步归档可以脱离FLUSH线程,避免影响系统性能。

日志APPLY线程:

在配置了数据守护的系统中生成,用于调度主库REDO日志备份到备份库的日志重做任务,作用为保持备库和主库数据的同步或一致,备库数据对用户只读。

定时器线程:

区别于调度线程,专门服务于某个时间点开始的操作或时间段内反复执行的操作,通常为逻辑日志异步归档、PRIMARY且OPEN状态的异步归档日志发送、作业调度。特点为每秒检测一次定时器链表、默认不启动、启动参数在dm.ini中为TIMER_INI = 1

逻辑日志归档线程:
MAL系统相关线程:

给予TCP/IP的内部高速通信系统,应用于数据守护、数据复制、MPP、远程日志归档等,有单独的一系列MAL监听、MAL发送工作、MAL接收工作等线程。

其它线程:

诸如回滚段清理PURGE、审计写文件、重演捕获写文件等线程。

3.对DM8存储结构的学习及理解

概述:包含底层的物理结构、由数据结构关系对应产生的逻辑结构和实例的数据库内存对象。其中数据结构在计算机中的映像即为数据的物理存储结构,包括了数据元素的表示和关系的表示,物理结构则是数据库使用的操作系统文件结构。

物理存储结构过程简要步骤概括为:

        →(固定)通过不同数据结构写入数据文件DBF

        →(固定)数据DDL操作引发重做(联机)日志文件即REDO日志的修改,若开启归档模式则将重做日志文件同时写入归档日志文件

        →(可选)若开启物理逻辑日志文件RLOG_APPEND_LOGIC = 1/2/3RLOG_IGNORE_LOGIC_SET = 1全表记录/0部分表记录)则会储存服务器的逻辑操作用于获取数据库系统的历史执行语句

        →(可选)若发出备份SQL命令则会自动备份产生一个或多个备份文件bak记录

        →(可选)需要查错调优时尅器跟踪日志文件SVR_LOGSVR_LOG_SWITCH_COUNT打开)则会与纯文本文件形式记录各会话执行的SQL语句、参数信息、错误信息等。

        →(固定)在log子目录下产生记录关键事件的事件日志文件,如系统启动、关闭、内存申请失败、IO错误等致命问题

        →(可选)若调用系统存储过程(SP_START_CAOTURESP_STOP_CAPTURE)则获得数据重演文件用于记录数据库和客户端之间的通信消息

4.对REDO重做日志的学习及理解

概述:重做日志(REDO日志)也称为联机日志,当在DM数据库中添加、删除、修改对象或涉及数据改变,则会引起写入重做日志的操作,并记录这些操作的执行结果。

特性:每个实例至少两个.log重做日志文件循环使用

作用:用于数据库异常状态下关闭的备份和恢复,用于分析日志知晓故障发生前系统所做的动作、重做动作恢复到故障前的状态

5.对sql日志监控的学习及理解

概述:在dm.ini和sqllog.ini中配置SVR_LOGSVR_SWITCH_COUNT后就会打开跟踪日志文件,通过设置SVR_LOG_FILE_PATH设置生成路径。

特性:跟踪日志对系统性能有较大影响,默认关闭,可设置SQL_TRACE_MASKSVR_LOG_MIN_EXEC_TIME只记录关注内容,减少日志总量,设置SVR_LOG_ASYNC_FLUSH打开日志异步刷盘提高系统性能

6.遇到的问题及解决方式

        1. Linux环境下非root用户无法执行mount挂载指令;

——直接解压缩iso镜像文件获得.bin文件后再执行安装程序

        2. SecureCRT会话窗口中文字符乱码;

——在选项→会话选项→外观设置字符编码为utf-8

        3. Windows环境下命令行启动dm后,dm服务查看器不会同步更新状态;

——不同时使用命令行方式和图形化界面方式启动dmserver

        4. 命令行方式下单个窗口仅能启动一个实例;

——多开几个会话窗口

        5. 各操作系统平台IO线程处理IO的策略有什么不同;

——一般下IO线程用异步IO将数据写入磁盘后交由操作系统完成请求,完成后才通知IO线程;若不支持异步IO,则IO线程需要完成实际IO操作

        6. TABLESPACE RESIZE不能比原先的SIZE小吗;

——不行,表空间大小和各类日志大小RESIZE通常不允许设置的比原先更小

        7. 报错-2401数据文件dbf大小无效;

——tablespace大小和数据库ini时的参数有关,设置初始值时不低于对应最低大小,且DM默认单位为M,PAGE_SIZE = 8K时TABLESAPCE MINSIZE = 32M,PAGE_SIZE = 16K时TABLESAPCE MINSIZE = 64M,以此类推

       8. 初次创建管理用户角色会强制默认添加PUBLIC和SOI对象,且设置登录安全策略限制failed_login_attemps 3,password_lock_time 1,password_grace_time 10;

——创建用户角色后手动GRANT和REVOKE对象并修改上述安全策略为UNLIMITED

7.本周随记

1. 定时器线程主要事件:

        逻辑日志异步归档;

        异步归档日志发送(PRIMARY,OPEN状态);

        作业调度

2. 口令缺省时默认与SYSDBA SYSSSO SYSAUDITOR等用户名一致

3. DBA主要考虑的因素包括:

        操作系统、中间件等通用软件的稳定性、性能、安全性

        处理器的个数和性能

        内存容量和性能

        网络带宽

        磁盘存储容量和读写性能

        HBA卡传输性能

达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台

  • 26
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值