zoukankan      html  css  js  c++  java
  • 达梦体系结构

    体系结构.

    数据库和实例

    数据库:DM数据库指的是磁盘上存放在DM数据库中的数据的集合,一般包括:数据文件、日志文件、控制文件以及临时数据文件等。

    实例:由一组正在运行的DM后台进程/线程以及一个大型的共享内存组成。简单来说,实例就是操作DM数据库的一种手段,是用来访问数据库的内存结构以及后台进程的集合。

     

    DM逻辑存储结构

     

    DM物理存储结构

    dm.ctl: 它记录了数据库必要的初始信息,

    数据文件:数据文件以dbf为扩展名,它是数据库中最重要的文件类型,一个DM数据文件对应磁盘上的一个物理文件,数据文件是真实数据存储的地方,每个数据库至少有一个与之相关的数据文件。

    重做日志文件(REDO日志):在DM数据库中添加、删除、修改对象,或者改变数据,DM都会按照特定的格式,将这些操作执行的结果写入到当前的重做日志文件中。也成联机日志文件,主要用于数据库的备份与恢复。

    归档日志文件:在归档模式下,重做日志被连续写入到归档日志后,所生成了归档日志文件。归档日志文件以归档时间命名,扩展名也是log。但只有在归档模式下运行时,DM数据库才会将重做日志写入到归档日志文件中。

     

     

    内存结构

     

    DM数据库管理系统的内存结构主要包括内存池、缓冲区、排序区、哈希区等。根据系统中子模块的不同功能,对内存进行了上述划分,并采用了不同的管理模式。

     

    内存池

    1)共享内存池:是DM Server在启动时从操作系统申请的一大片内存。默认大小是200M,可在dm.ini修改参数MEMORY_POOL调整大小,MEMORY_EXTENT_SIZE指定共享内存池每次扩展的大小,MEMORY_TARGET    指定共享内存池能扩展到的最大值。

    2)运行时内存池:是从操作系统申请一片内存作为本功能模块的内存池来使用,如会话内存池、虚拟机内存池等。

     

    缓冲区

    1)数据缓冲区:DM Server在将数据页写入磁盘之前以及从磁盘上读取数据页之后,数据页所存储的地方。这是DM Server至关重要的内存区域之一,将其设定得太小,会导致缓冲页命中率低,磁盘IO频繁;将其设定得太大,又会导致操作系统内存本身不够用。

    数据库判断用户可能需要读多个数据页时,可一次性读取多个数据页

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

    3)字典缓冲区:主要存储一些数据字典信息,如模式信息、表信息、列信息、触发器信息等。

    4sql缓冲区:提供在执行SQL语句过程中所需要的内存,包括计划、SQL语句和结果集缓存。

     

    排序区

    排序缓冲区提供数据排序所需要的内存空间。当用户执行SQL语句时,常常需要进行排序,所使用的内存就是排序缓冲区提供的。

     

    哈希区

    DM8提供了为哈希连接而设定的缓冲区,不过该缓冲区是个虚拟缓冲区。之所以说是虚拟缓冲,是因为系统没有真正创建特定属于哈希缓冲区的内存,而是在进行哈希连接时,对排序的数据量进行了计算。

     

    SSD缓冲区

    固态硬盘采用闪存作为存储介质,因没有机械磁头的寻道时间,在读写效率上比机械磁盘具有优势。在内存、SSD磁盘、机械磁盘之间,符合存储分级的条件。为提高系统执行效率,DM ServerSSD文件作为内存缓存与普通磁盘之间的缓冲层,称为"SSD缓存"

     

    DM线程

    达梦采用单进程,多线程。

    服务器在运行时由各种内存数据结构和一系列的线程组成,线程分为多种类型,不同类型的线程完成不同的任务。线程通过一定的同步机制对数据结构进行并发访问和处理,以完成客户提交的各种任务。

    可以通过以下动态性能视图查看线程的信息

        名称

        说明

    V$LATCHES

    记录当前正在等待的线程信息

    V$THREADS

    记录当前系统中活动线程的信息

    V$WTHRD_HISTORY

    记录自系统启动以来,所有活动过线程的相关历史信息。

    V$PROCESS

    记录服务器进程信息

     

     

    重做日志文件的基本操作

    添加

    增加大小为80M的日志文件dameng_003.log

    ALTER DATABASE ADD LOGFILE 'dameng_003.log' size 80;

    修改

    将日志文件dameng_003.log大小更改为100M

    ALTER DATABASE RESIZE LOGFILE 'dameng_003.log' to 100;

    重命名( mount模式下)

    将日志文件dameng_003.log重命名为dameng_004.log

    ALTER DATABASE RENAME LOGFILE 'dameng_003.log' to 'dameng_004.log';

  • 相关阅读:
    安全测试的概述和用例设计
    性能测试(四)常见调优
    性能测试(三)常见的性能测试缺陷
    Jmeter(七)六种参数化的方式
    Jmeter(六)所有的断言
    接口测试的问题解答
    ES学习
    flutter 之BottomNavigationBar属性
    flutter StaggeredGridView.countBuilder 上方取消空白
    flutter升级、回退到指定版本---mac版
  • 原文地址:https://www.cnblogs.com/hong-yf/p/14762788.html
Copyright © 2011-2022 走看看