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';

  • 相关阅读:
    ThinkPHP 3.2.2 实现持久登录 ( 记住我 )
    Java实现 LeetCode 20 有效的括号
    Java实现 LeetCode 20 有效的括号
    Java实现 LeetCode 19删除链表的倒数第N个节点
    Java实现 LeetCode 19删除链表的倒数第N个节点
    Java实现 LeetCode 19删除链表的倒数第N个节点
    Java实现 LeetCode 18 四数之和
    Java实现 LeetCode 18 四数之和
    Java实现 LeetCode 18 四数之和
    Java实现 LeetCode 17 电话号码的字母组合
  • 原文地址:https://www.cnblogs.com/hong-yf/p/14762788.html
Copyright © 2011-2022 走看看