DM数据库的数据字典和动态视图简要概述

数据字典是数据库的一个重要组成部分,这是一组用于记录数据库信息的只读表。

平常意义上的数据字典是指静态数据字典信息,也即用户访问数据字典信息时,内容不会发生改变,静态字典表一般以 SYS 为前缀。数据存放在表文件中,关闭数据库实例后,数据不会被清空.数据库open状态下才可以查询。

达梦数据库中的动态性能视图能自动收集数据库中的一些活动信息,系统管理员根据这些信息可以了解数据库运行的基本情况,为数据库的维护和优化提供依据。数据字典中包含V$开头的是动态性能视图,其数据存放在内存中,动态变化,一旦实例被关闭,里面的数据就会被清空,重启实例后重新设置.数据库mount状态下可以查询。

达梦技术社区 

https://eco.dameng.com


系统管理员可以通过查询动态性能视图更好的了解数据库的当前运行状态。
可以通过查询 V$DYNAMIC_TABLES 获 得所有的动态性能视图名称。 
数据字典和动态视图对于巡检和运维,排查问题和了解系统架构来说是非常有用和高效的。

从数据库维护的角度来说,尤其对于初学者最重要也是最需要熟悉掌握的数据字典和动态视图有3个,分别是 SYSOBJECTS ,V$DYNAMIC_TABLES,和V$IFUN 。
第一个,SYSOBJECTS,记录系统中所有对象的信息。当在查询数据库中信息市,若需要用到数据库的基本架构、模块、组件和对象等信息,在不知道确认名字的情况下,可以使用SYSOBJECTS进行查询表名称,然后在进入到相应的表中查看具体信息。
第二个,V$DYNAMIC_TABLES视图,可以通过查询V$DYNAMIC_TABLES 获得所有的动态性能视图名称。
第三个,V$IFUN ,显示数据库提供的所有函数。比如,系统函数中最常用的查看参数,和配置参数的两类函数。可以使用如下语句查看系统函数的名称:
SELECT NAME FROM V$IFUN WHERE NAME LIKE '%SP_SET%VALUE';
SELECT NAME FROM V$IFUN WHERE NAME LIKE '%SF_GET%VALUE';
select name,type$,subtype$ from sysobjects where SUBtype$='PROC';

以下说明一些常用的DM达梦数据库的数据字典和动态视图的表。
数据字典的概要说明


1. SYSOBJECTS,记录系统中所有对象的信息。

最有用的一个数据字典表,可以查询数据库中所有的对象

2. SYSINDEXES,记录系统中所有索引定义信息。
3. SYSCOLUMNS,记录系统中所有列定义的信息。
4. SYSCONS,记录系统中所有约束的信息。
5. SYSHPARTTABLEINFO,记录系统中分区表的信息。
6. SYSCOLINFOS,记录列的附加信息,例如是否虚拟列。

以上的几个数据字典表,可以查询到数据库中与数据表相关性最强的几个信息,如索引、列等。


7. SYSSTATS,记录系统中的统计信息。
8. SYSMSTATS,记录多维统计信息的内容。

统计信息对SQL语句的正确、高效的执行有着非常重要的作用。


9. SYSDUAL,为不带表名的查询而设,用户一般不需查看。

SYSDUAL是一个单行单列的表,为了某些特殊的SQL查询可以执行,而使用的。

10. SYSGRANTS,记录系统中权限信息。

在查看系统权限分配记录时非常有用。

11. SYSTEXTS 存放字典对象的文本信息。
12. SYSCONTEXTINDEXES,记录全文索引的信息。
13. SYSTABLECOMMENTS,记录表或视图的注释信息。
14. SYSCOLUMNCOMMENTS,记录列的注释信息。

可以查看表的文本和注释等信息

15. SYSUSERS,记录系统中用户信息。
16. SYSRESOURCES,记录用户使用系统资源的限制信息。

查看数据库系统中用户的相关信息


17. SYSOBJINFOS,记录对象的依赖信息。
18. SYSDEPENDENCIES,记录对象间的依赖关系。

查看数据库系统中对象的依赖信息


19. SYSINJECTHINT,记录已指定的 SQL 语句和对应的 HINT。

查看数据库系统中SQL和对应的HINT信息

更多的数据字典信息,可以通过查询SYSOBJECTS 字典表获得,所以说SYSOBJECTS是了解数据库基础信息的重要入口。

动态管理视图的概要说明
在 DM达梦数据库中,动态视图提供的系统信息主要分为9个方面。

也可以将9个方面简单分为三类:
第一类,属于数据库系统的基本信息;
1、系统信息;2、存储信息;3、内存信息; 
第二类,属于应用程序执行的相关信息,包含连接、会话、事务以及线程信息;
4、会话信息;5、事务信息;6、线程信息; 
第三类,一些即时的,或者已经执行过的运行信息,包括缓存和历史,以及捕获信息。
7、缓存信息;8、历史模块;9、捕获信息;

以下就每个方面进行简要说明:

1. 系统信息
包括数据库版本、实例、统计信息、资源限制信息、进程信息、全局索引 IID 信息、 事件信息;
涉及的动态视图有,V$INSTANCE、V$RESOURCE_LIMIT、 V$PROCESS、V$IID、V$SYSSTAT 等。

2. 存储信息
包括数据库信息、表空间信息、数据文件信息、日志相关信息;
涉及的动态视图有, V$DATAFILE、V$DATABASE、V$TABLESPACE、$HUGE_TABLESPACE、V$RLOGFILE 等。

3. 内存管理信息
包括内存池使用情况、BUFFER 缓冲区信息、虚拟机信息、虚拟机栈帧信息;
涉及的动态视图有, V$MEM_POOL、V$VMS、V$STKFRM、V$BUFFERPOOL、V$BUFFER_LRU_FIRST、 V$BUFFER_UPD_FIRST、V$BUFFER_LRU_LAST、V$BUFFER_UPD_LAST、V$ RLOG_PKG、 V$COSTPARA 等。

4. 会话信息
包括连接信息、会话信息;
涉及的动态视图有, V$CONNECT、V$STMTS、V$SESSIONS 等。

5. 事务信息
包括所有事务信息、当前事务可见的事务信息、事务锁信息(TID 锁、对象锁)、回滚段信息、事务等待信息;
涉及的动态视图有, V$TRX、V$TRXWAIT、V$TRX_VIEW、V$LOCK、 V$PURGE 等。

6. 线程信息
包括所有活动线程信息、线程作业信息、线程锁信息、线程的资源等待信息;
涉及的动态视图有, V$THREADS、V$LATCHES 等。

7. 缓存信息
包括 SQL 语句缓存、执行计划缓存、结果集缓存、字典缓存信息、字典缓存中的对象信息、代价信息;
涉及的动态视图有, V$CACHEITEM、V$SQL_PLAN、V$CACHERS、 V$CACHESQL、V$DICT_CACHE_ITEM、V$DICT_CACHE 等。

8. 历史模块
包括 SQL 历史信息、SQL 执行节点历史信息、检查点历史信息、命令行历史信息、线程等待历史信息、死锁历史信息、回滚段历史信息、运行时错误历史信息、DMSQL 程序中执行 DDL 语句的历史信息、返回大数据量结果集历史信息、所有活动过线程的历史信息;
涉及的动态视图有, V$CKPT_HISTORY、V$CMD_HISTORY、V$DEADLOCK_HISTORY、V$PLSQL_DDL_HISTORY、V$PRE_RETURN_HISTORY、V$RUNTIME_ERR_HISTORY、V$WAIT_HISTORY、V$WTHRD_HISTORY、V$SQL_HISTORY、V$SQL_NODE_HISTORY、V$SQL_NODE_NAME 等。

9. 捕获信息
捕获信息涉及的视图为 V$CAPTURE。

动态视图使用示例:

在熟悉了DM达梦数据库的动态视图中的信息内容后,查看动态视图可以不单单只查询一个动态视图表,可以利用多个动态视图表之间的联系,进行查询得到更多想要的信息。
可以用一个动态视图的使用示例记性说明。例如,系统管理员如果要对一条 SQL 语句进行调优,需要知道每个执行节点花费了多少时间。
查询 V$SQL_NODE_NAME 可以知道执行节点的名字,
查询 V$SQL_NODE_HISTORY可以查询到每个执行节点的时间,
通过两个动态视图表的执行节点类型 TYPE$字段做等值连接。

示例:执行一条 SQL 语句,然后查询其执行节点所花费时间。
SELECT * FROM t1 WHERE c1 = (SELECT d1 FROM t2 WHERE c2 = d2);

假设其执行 ID(EXEC_ID)为 4,通过视图 V$SQL_NODE_NAME 与 V$SQL_NODE_HISTORY 视图查询结点执行时间:

SELECT N.NAME, TIME_USED, N_ENTER
FROM V$SQL_NODE_NAME N, V$SQL_NODE_HISTORY H
WHERE N.TYPE$ = H.TYPE$ AND EXEC_ID = 4;

结果为:
            NAME         TIME_USED         N_ENTER
1         CSCN2         381                        6
2         CSCN2         250                        3
3         NLI2              52                         14
4         SLCT2         102                         8
5         HAGR2        11831                     6
6         PRJT2          32                          6
7         CSCN2         272                        3
8         HI3               19309                    9
9         PRJT2          29                         6
10       NSET2         120                        4
11       DLCK            23                         2
根据结果可以看到执行计划中各执行节点花费的时间,进而对 SQL 语句进行分析和改写。

达梦技术社区  https://eco.dameng.com
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值