达梦数据库应用与实践 课件 项目 4 达梦数据库体系结构说明_第1页
达梦数据库应用与实践 课件 项目 4 达梦数据库体系结构说明_第2页
达梦数据库应用与实践 课件 项目 4 达梦数据库体系结构说明_第3页
达梦数据库应用与实践 课件 项目 4 达梦数据库体系结构说明_第4页
达梦数据库应用与实践 课件 项目 4 达梦数据库体系结构说明_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

达梦数据库的物理存储结构

1.配置文件2.控制文件3.数据文件4.重做日志文件物理存储结构组成一.配置文件

达梦数据库的配置文件大都以.ini为扩展名,用来存储功能选项的配置值。配置文件存放在数据文件的目录下,如图所示。主要的文件:1)dm.ini:达梦数据库实例的配置参数。在创建DM实例时自动生成。2)dmmal.ini:MAL系统的配置文件。在配置DM高可用解决方案时(达梦数据守护集群,达梦数据共享集群等)需要用到该配置文件。3)dmarch.ini:归档配置文件。启用数据库归档后,在该文件中配置归档的相关属性,比如归档类型,归档路径,归档可使用的空间大小等。4)sqllog.ini:sql日志的配置文件。当且仅当INI参数SVR_LOG=1时使用。5)dm_svc.conf:达梦数据库配置文件。该文件中包含达梦各个接口及客户端所需要配置信息。在安装达梦数据库时自动生成,一般存放到/etc/目录下。二.控制文件每个达梦数据库实例都有一个二进制的控制文件,默认和数据文件存在同一个目录下,扩展名为.ctl。控制文件中记录了数据库必要的初始信息,主要包含以下内容:数据库名称、数据库服务器模式、数据库服务器版本、数据文件版本等信息。如图所示。

第一次初始化新库时,会在控制文件同级目录的CTL_BAK目录下对原始的dm.ctl执行一次备份。在修改控制文件时,比如添加数据文件,也会执行一次备份。备份的路径和备份保留数是由dm.ini参数文件中的CTL_BAK_PATH和CTL_BAK_NUM参数决定。如图所示。三.数据文件数据文件以.DBF为扩展名,它是数据库中最重要的文件类型,一个达梦数据文件对应磁盘上的一个物理文件,数据文件是真实数据存储的地方,每个数据库至少有一个与之相关的数据文件。在实际应用中,通常有多个数据文件。如图所示。四.重做日志文件

重做日志(即REDO日志)指在达梦数据库中添加、删除、修改对象,或者改变数据,达梦都会按照特定的格式,将这些操作执行的结果写入到当前的重做日志文件中。重做日志文件以.log为扩展名。每个达梦数据库实例必须至少有2个重做日志文件,默认两个日志文件为SALDB01.log、SALDB02.log,这两个文件循环使用。重做日志文件因为是数据库正在使用的日志文件,因此被称为联机日志文件。课程小节通过本节内容的学习,熟悉达梦数据库的物理存储结构,主要了解配置文件、控制文件、数据文件、重做日志文件的形式和作用。

谢谢~达梦数据库的内存结构

武汉职业技术学院

信创学院1.内存池2.缓冲区3.排序区4.哈希区5.DM8数据库系统如何调整系统参数内存结构组成一.内存池达梦的内存池包括共享内存池和运行时内存池。可以通过V$MEM_POOL视图查看所有内存池的状态和使用情况。如图所示。(1)共享内存池共享内存池是DMServer(达梦服务线程)在启动时从操作系统申请的一大片内存。在DMServer的运行期间,经常会申请与释放小片内存,而向操作系统申请和释放内存时需要发出系统调用,此时可能会引起线程切换,降低系统运行效率。采用共享内存池则可一次向操作系统申请一片较大内存,即为内存池,当系统在运行过程中需要申请内存时,可在共享内存池内进行申请,当用完该内存时,再释放掉,即归还给共享内存池。(2)运行时内存池除了共享内存池,DMServer的一些功能模块在运行时还会使用自己的运行时内存池。这些运行时内存池是从操作系统申请一片内存作为本功能模块的内存池来使用,如会话内存池、虚拟机内存池等。二.缓冲区

数据缓冲区

日志缓冲区

字典缓冲区SQL缓冲区(1)数据缓冲区数据缓冲区是DMServer在将数据页写入磁盘之前以及从磁盘上读取数据页之后,数据页所存储的地方。这是DMServer至关重要的内存区域之一,将其设定得太小,会导致缓冲页命中率低,磁盘IO频繁;将其设定得太大,又会导致操作系统内存本身不够用。DMServer中有四种类型的数据缓冲区,分别是NORMAL、KEEP、FAST和RECYCLE。系统启动时,首先根据配置的数据缓冲区大小向操作系统申请一片连续内存并将其按数据页大小进行格式化,并置入“自由”链中。数据缓冲区存在三条链来管理被缓冲的数据页,一条是“自由”链,用于存放目前尚未使用的内存数据页,一条是“LRU”(最近最少使用)链,用于存放已被使用的内存数据页(包括未修改和已修改),还有一条即为“脏”链,用于存放已被修改过的内存数据页。(2)日志缓冲区日志缓冲区是用于存放重做日志的内存缓冲区。为了避免由于直接的磁盘IO而使系统性能受到影响,系统在运行过程中产生的日志并不会立即被写入磁盘,而是和数据页一样,先将其放置到日志缓冲区中。那么为何不在数据缓冲区中缓存重做日志而要单独设立日志缓冲区呢?主要是基于以下原因:重做日志的格式同数据页完全不一样,无法进行统一管理;重做日志具备连续写的特点;在逻辑上,写重做日志比数据页IO优先级更高。

达梦数据库提供了参数RLOG_BUF_SIZE对日志缓冲区大小进行控制,日志缓冲区所占用的内存是从共享内存池中申请的,单位为页数量,且大小必须为2的N次方,否则采用系统默认大小512页。(3)字典缓冲区字典缓冲区主要存储一些数据字典信息,如模式信息、表信息、列信息、触发器信息等。每次对数据库的操作都会涉及到数据字典信息,访问数据字典信息的效率直接影响到相应的操作效率,如进行查询语句,就需要相应的表信息、列信息等,这些字典信息如果都在缓冲区里,则直接从缓冲区中获取即可,否则需要I/O才能读取到这些信息。DM8采用的是将部分数据字典信息加载到缓冲区中,并采用LRU算法进行字典信息的控制。缓冲区大小设置问题,如果太大,会浪费宝贵的内存空间,如果太小,可能会频繁的进行淘汰,该缓冲区配置参数为DICT_BUF_SIZE,默认的配置大小为5M。(4)SQL缓冲区

SQL缓冲区提供在执行SQL语句过程中所需要的内存,包括计划、SQL语句和结果集缓存。很多应用当中都存在反复执行相同SQL语句的情况,此时可以使用缓冲区保存这些语句和它们的执行计划,这就是计划重用。这样带来的好处是加快了SQL语句执行效率,但同时给内存也增加了压力。DMServer在配置文件dm.ini提供了参数来支持是否需要计划重用,参数为USE_PLN_POOL,当指定为非0时,则启动计划重用;为0时禁止计划重用。DM同时还提供了参数CACHE_POOL_SIZE(单位为MB),来改变SQL缓冲区大小,系统管理员可以设置该值以满足应用需求,默认值为20M。结果集缓存包括SQL查询结果集缓存和DMSQL程序函数结果集缓存,在INI参数文件中同时设置参数RS_CAN_CACHE=1且USE_PLN_POOL非0时DM服务器才会缓存结果集。DM还提供了一些手动设置结果集缓存的方法。客户端结果集也可以缓存,但需要在配置文件dm_svc.conf中设置参数:ENABLE_RS_CACHE=(1)//表示启用缓存;RS_CACHE_SIZE=(100)//表示缓存区的大小为100M,可配置为1-65535RS_REFRESH_FREQ=(30)//表示每30秒检查缓存的有效性,如果失效,自动重查;0表示不检查。同时在服务器端使用INI参数文件中的CLT_CACHE_TABLES参数设置哪些表的结果集需要缓存。另外,FIRST_ROWS参数表示当查询的结果达到该行数时,就返回结果,不再继续查询,除非用户向服务器发一个FETCH命令。这个参数也用于客户端缓存的配置,仅当结果集的行数不超过FIRST_ROWS时,该结果集才可能被客户端缓存。三.排序区

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

达梦数据库提供了参数来指定排序缓冲区的大小,参数SORT_BUF_SIZE在达梦配置文件dm.ini中,系统管理员可以设置其大小以满足需求,由于该值是由系统内部排序算法和排序数据结构决定,建议使用默认值2M。四.哈希区

DM8提供了为哈希连接而设定的缓冲区,不过该缓冲区是个虚拟缓冲区。之所以说是虚拟缓冲,是因为系统没有真正创建特定属于哈希缓冲区的内存,而是在进行哈希连接时,对排序的数据量进行了计算。如果计算出的数据量大小超过了哈希缓冲区的大小,则使用DM8创新的外存哈希方式;如果没有超过哈希缓冲区的大小,实际上使用的还是VPOOL内存池来进行哈希操作。达梦数据库在dm.ini中提供了参数HJ_BUF_SIZE来进行控制,由于该值的大小可能会限制哈希连接的效率,所以建议保持默认值,或设置为更大的值。达梦数据库除了提供HJ_BUF_SIZE参数外,还提供了创建哈希表个数的初始化参数,其中,HAGR_HASH_SIZE表示处理聚集函数时创建哈希表的个数,建议保持默认值100000。五.

DM8数据库系统如何调整系统参数在DM8数据库系统中使用过程SP_SET_PARA_VALUES来调整参数值。语法如下:SP_SET_PARA_VALUES(SCOPE,PARA_NAME,PARA_VALUE);任务实践目前“工资管理系统”在执行某些功能的时候效率有些慢,需要对数据库的系统参数进行优化,以到提高“工资管理系统”的运行速度。经过DBA的诊断,发现需要对“数据缓冲区”(BUFFER),“SQL缓冲区”(CACHE_POOL_SIZE),“排序区”(SORT_BUF_SIZE)进行扩充。以达到提高“工资管理系统”的运行性能。具体调整如下:BUFFER=2048,CACHE_POOL_SIZE=200,SORT_BUF_SIZE=50。1.调整数据缓冲区(BUFFER)的值先查看一下BUFFER参数目前的值为多少,BUFFER是动态参数还是静态参数。如图所示,目前BUFFER的值为1000,并且为“INFILE”静态参数。设置参数后,需重启实例服务后生效。1.调整数据缓冲区(BUFFER)的值现在使用SP_SET_PARA_VALUES过程,对BUFFER的值进行调整。因为BUFFER是静态参数,重启实例服务后,BUFFER值变为2048。调整后BUFFER后,重启实例SALINST,可以看到BUFFER参数值变为2048。调整完毕。2.调整SQL缓冲区(CACHE_POOL_SIZE)的值查看CACHE_POOL_SIZE参数值,并核对CACHE_POOL_SIZE是动态参数还是静态参数。目前CACHE_POOL_SIZE的值为100,并且为“INFILE”静态参数,如下图。设置参数后,重启实例服务后生效。2.调整SQL缓冲区(CACHE_POOL_SIZE)的值使用SP_SET_PARA_VALUES过程,对CACHE_POOL_SIZE的值进行调整。CACHE_POOL_SIZE是静态参数,重启实例服务后,CACHE_POOL_SIZER值变为200。3.调整排序区(SORT_BUF_SIZE)的值查看SORT_BUF_SIZE参数值,并核对SORT_BUF_SIZE是动态参数还是静态参数。目前,SORT_BUF_SIZE的值为20,并且为“SESSION”动态参数,如下图。设置参数后,重启实列服务后生效。3.调整排序区(SORT_BUF_SIZE)的值使用SP_SET_PARA_VALUES过程对SORT_BUF_SIZE的值进行调整。因为SORT_BUF_SIZE是静态参数,重启实例服务后,SORT_BUF_SIZE值变为50。此时,DBA建议调整的参数BUFFER,CACHE_POOL_SIZE,SORT_BUF_SIZE已全部调整完毕。再来测试“工资管理系统”中执行效率慢的功能,结果发现性能都有所提升了。课程小节通过本节内容的学习,熟悉达梦数据库的主要内存结构,了解内存池、缓冲区的构成,了解运行时缓冲区的特点,掌握如何修改达梦数据库参数。

谢谢~达梦数据库线程结构

武汉职业技术学院

信创学院1.监听线程2.I/O线程3.工作线程4.调度线程5.日志线程线程结构一.监听线程监听线程主要的任务是在服务器端口上进行循环监听,一旦有来自客户的连接请求,监听线程被唤醒并生成一个会话申请任务,加入工作线程的任务队列,等待工作线程进行处理。它在系统启动完成后才启动,并且在系统关闭时首先被关闭。为了保证在处理大量客户连接时系统具有较短的响应时间,监听线程比普通线程优先级更高。二.I/O线程在数据库活动中,I/O操作历来都是最为耗时的操作之一。当事务需要的数据页不在缓冲区中时,如果在工作线程中直接对那些数据页进行读写,将会使系统性能变得非常糟糕,而把I/O操作从工作线程中分离出来则是明智的做法。I/O线程的职责就是处理这些I/O操作。通常情况下,数据库主要有以下三种情况需要进行I/O操作:需要处理的数据页不在缓冲区中,此时需要将相关数据页读入缓冲区;缓冲区满或系统关闭时,此时需要将部分脏数据页写入磁盘;检查点到来时,需要将所有脏数据页写入磁盘。I/O线程在启动后,通常都处于睡眠状态,当系统需要进行I/O时,只需要发出一个I/O请求,此时I/O线程被唤醒以处理该请求,在完成该I/O操作后继续进入睡眠状态。三.工作线程

工作线程是达梦服务器的核心线程,它从任务队列中取出任务,并根据任务的类型进行相应的处理,负责所有实际的数据相关操作。DM8数据库的初始工作线程个数由配置文件指定,随着会话连接的增加,工作线程也会同步增加,以保持每个会话都有专门的工作线程处理请求。为了保证用户所有请求及时响应,一个会话上的任务全部由同一个工作线程完成,这样减少了线程切换的代价,提高了系统效率。当会话连接超过预设的阀值时,工作线程数目不再增加,转而由会话轮询线程接收所有用户请求,加入任务队列,等待工作线程一旦空闲,从任务队列依次摘取请求任务处理。与工作线程相关的参数为:WORKER_THREADS(工作线程的数目),有效值范围为1~64。四.调度线程调度线程用于接管系统中所有需要定时调度的任务。调度线程每秒钟轮询一次,负责的任务如下:检查系统级的时间触发器,如果满足触发条件则生成任务加到工作线程的任务队列由工作线程执行;清理SQL缓存、计划缓存中失效的项,或者超出缓存限制后淘汰不常用的缓存项;检查数据重演捕获持续时间是否到期,到期则自动停止捕获;执行动态缓冲区检查。根据需要动态扩展或动态收缩系统缓冲池;自动执行检查点。为了保证日志的及时刷盘,减少系统故障时恢复时间,根据INI参数设置的自动检查点执行间隔定期执行检查点操作;会话超时检测。当客户连接设置了连接超时时,定期检测是否超时,如果超时则自动断开连接;必要时执行数据更新页刷盘;唤醒等待的工作线程。五.日志FLUSH线程

任何数据库的修改,都会产生重做重做日志,为了保证数据故障恢复的一致性,重做日志的刷

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论