• DM逻辑结构


    数据库和实例

    数据库

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

    实例

    实例一般是由一组正在运行的 DM 后台进程/线程以及一个大型的共享内存组成。

    逻辑存储结构

    结构图

    image-20211018135324576

    层次结构组成

    1. 数据库由一个或多个表空间组成;
    2. 每个表空间由一个或多个数据文件组成;
    3. 每个数据文件由一个或多个簇组成;
    4. 段是簇的上级逻辑单元,一个段可以跨多个数据文件;
    5. 簇由磁盘上连续的页组成,一个簇总是在一个数据文件中;
    6. 页是数据库中最小的分配单元,也是数据库中使用的最小的 IO 单元。

    表空间

    表空间由一个或者多个数据文件组成。表空间的名称不能超过128个字节,单个表空间最多可以添加256个数据文件【由 TS_FIL_MAX_ID 静态参数限制每个表空间所支持的最大文件个数,范围(2 ~255)】。

    在创建 DM 数据库时,会自动创建 5 个表空间:SYSTEM 表空间、ROLL 表空间、MAIN 表空间、TEMP 表空间和 HMAIN 表空间。

    1. SYSTEM 表空间:存放了有关 DM 数据库的字典信息,用户不能在 SYSTEM 表空间创建表和索引。
    2. ROLL 表空间:完全由 DM 数据库自动维护,用户无需干预。该表空间用来存放事务运行过程中执行 DML 操作之前的值,从而为访问该表的其他用户提供表数据的读一致性视图。
    3. MAIN 表空间:在初始化库的时候,就会自动创建一个大小为 128M 的数据文件MAIN.DBF。在创建用户时,如果没有指定默认表空间,则系统自动指定 MAIN 表空间为用户默认的表空间。
    4. TEMP 表空间:完全由 DM 数据库自动维护。当用户的 SQL 语句需要磁盘空间来完成某个操作时,DM 数据库会从 TEMP 表空间分配临时段。如创建索引、无法在内存中完成的排序操作、SQL 语句中间结果集以及用户创建的临时表等都会使用到 TEMP表空间。
    5. HMAIN 表空间:属于 HTS (HUGE TABLESPACE) 表空间,完全由 DM 数据库自动维护。当用户在创建 HUGE 表时,未指定 HTS 表空间的情况下,充当默认 HTS 表空间。

    页大小与表空间容量关系

    初始化页大小的选择不仅影响表空间数据文件的大小选择,也会对表中每个字段及每条记录产生限制,如下表所示:

    数据库页大小 每个字符类型字段实际最大长度(字节) 每行记录最大字段外其他字段总长度(字节) 表空间单个数据文件最小 (MB)/最大 (MB)
    4 KB 1938 2047 16/8388608
    8 KB 3878 4095 32/16777216
    16 KB 8000 8195 64/33554432
    32 KB 8188 16176 128/67108864

    单个文件的最小值为页大小乘以4096,最大值为页大小乘以2147483647 (即:2^31-1=2147483647)

    相关参数

    • EXTENT_SIZE: 数据文件使用的簇大小 (16),可选值: 16、 32、 64,单位:页

      select para_name, para_value from v$dm_ini where para_name = 'GLOBAL_EXTENT_SIZE';
      
    • PAGE_SIZE: 数据页大小 (8),可选值: 4、 8、 16、 32,单位: KB

      select para_name, para_value from v$dm_ini where para_name = 'GLOBAL_PAGE_SIZE';
      
    • TS_MAX_ID:限制系统所支持的最大表空间 ID,有效值范围(512 ~ 65517)。默认值为:8192。静态参数

    • TS_FIL_MAX_ID:限制每个表空间所支持的最大文件个数,有效值范围(2 ~255)。静态参数

    TEMP 表空间

    TEMP 表空间完全由 DM 数据库自动维护。当 SQL 语句需要磁盘空间来完成某个操作时,DM 数据库会从 TEMP 表空间分配临时段。如创建索引、无法在内存中完成的排序操作、SQL 语句中间结果集以及用户创建的临时表等都会使用到 TEMP 表空间。

    Temp 表空间可自动扩充,为了不影响磁盘空间的使用,通常会通过 ini 参数 TEMP_SIZE 配置大小TEMP_SPACE_LIMIT 设置上限,通过存储过程 SP_TRUNC_TS_FILE收缩 Temp 表空间文件

    相关参数

    实例每次启动时,都会依据 TEMP_PATH, TEMP_SIZE 和 TEMP_SPACE_LIMIT 参数来设置。

    • TEMP_PATH:指定临时表空间的文件路径,只能通过修改 dm.ini 文件调整配置静态参数

    • TEMP_SIZE:指定默认创建的临时表空间大小,以 M 为单位。静态参数

    • TEMP_SPACE_LIMIT:指定系统级临时表空间大小上限,以 M 为单位。0 表示不限制临时表空间大小。动态参数

    调整临时表空间大小
    SP_SET_PARA_VALUE(2, 'TEMP_SIZE', 666);
    
    检查 Temp 表空间的大小
    SELECT
            a.tablespace_name "表空间名称"                         ,
            total        / (1024 * 1024) "表空间大小(M)"                 ,
            free         / (1024 * 1024) "表空间剩余大小(M)"               ,
            (total       - free) / (1024 * 1024 ) "表空间使用大小(M)"      ,
            total        / (1024 * 1024 * 1024) "表空间大小(G)"          ,
            free         / (1024 * 1024 * 1024) "表空间剩余大小(G)"        ,
            (total       - free) / (1024 * 1024 * 1024) "表空间使用大小(G)",
            round((total - free) / total, 4) * 100 "使用率 %"
    FROM
            (
                    SELECT
                            tablespace_name,
                            SUM(bytes) free
                    FROM
                            dba_free_space
                    GROUP BY
                            tablespace_name
            )
            a,
            (
                    SELECT
                            tablespace_name,
                            SUM(bytes) total
                    FROM
                            dba_data_files
                    GROUP BY
                            tablespace_name
            )
            b
    WHERE
            a.tablespace_name = b.tablespace_name and a.tablespace_name='TEMP';
    
    回收 Temp 表空间
    CALL SP_TRUNC_TS_FILE (ts_id ,file_id, to_size);
    

    其中 ts_id,file_id 可以通过 v$datafile 查询,to_szieb 表示指定将文件截断至多大,以 MB 为单位;to_size 大小换算成页数后,值必须在 4096 到 2 GB 之间

    HMAIN表空间

    HMAIN表空间属于HTS表空间,完全由DM数据库自动维护。当创建HUGE表时,未指定HTS(huge tablespace)表空间的情况下,默认使用此HTS表空间。

    查看HMAIN表空间
    SELECT * FROM V$HUGE_TABLESPACE;
    

    页(数据块)

    数据页(也称数据块)是DM数据库中最小的数据存储单元。页的大小对应物理存储空间上特定数量的存储字节,在DM数据库中,页大小可以为4KB、8KB、16KB或者32KB,可以在创建数据库时可以指定page_size参数,默认大小为8KB,一旦创建好了数据库,则在该库的整个生命周期内,页大小都不能够改变

  • 相关阅读:
    mysql 中表和数据库名称不要使用 '-' 命名
    htmlElement.style 是只读属性
    chrome 远程调试相关问题
    纯小白入手 vue3.0 CLI
    纯小白入手 vue3.0 CLI
    纯小白入手 vue3.0 CLI
    《前端之路》- TypeScript (四) class 中各类属性、方法,抽象类、多态
    《前端之路》- TypeScript (三) ES5 中实现继承、类以及原理
    《前端之路》- TypeScript(二) 函数篇
    《前端之路》--- 重温 Egg.js
  • 原文地址:https://www.cnblogs.com/binliubiao/p/15515598.html
Copyright © 2020-2023  润新知