DM数据库中数据字典表分类及常用查询。

        众所周知,在Oracle数据字典中,对象名称多数以"USER.","ALL.","DBA."为前缀",USER."视图中记录通常记录执行查询的帐户所拥有的对象的信息,"ALL."视图中记录包括"USER"记录和授权至PUBLIC或用户的对象的信息,"DBA."视图包含所有数据库对象,而不管其所有者,当然还有一些只有DBA权限才能访问的$$内部视图,在mysql中,数据字典表存放在information_schema库中通过show tables;可以列出需要查询的内部视图。这里就不详细举例了,下边主要介绍以下DM的数据字典及内部试图查询。

        我们都知道oracle有一个内部数据字典,dictonary或者同义词dict可以管理查询所有数据字典的name,和columns用途。DM数据库也是有库、模式的概念,在每个库下面,都有一个SYSDBA的模式,这个模式下,有一部分表归纳到系统表中,在系统表中,有一个叫SYSTABLES和SYSCOLUMNS的表,里面就记录了数据字典信息。
  通过查询SYS.SYSOBJECTS 可以得知在DM数据库内部还是分很多类型的对象的,我大概粗略查询了一下大概有60种左右,我只取了前三个字符为准。如下图:

 

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

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

        从数据库维护的角度来说,尤其对于初学者最重要也是最需要熟悉掌握的数据字典和动态视图有3个,分别是 SYS.SYSOBJECTS ,V$DYNAMIC_TABLES,和V$IFUN 。
        第一个,SYS.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,记录列的附加信息,例如是否虚拟列。

二、统计信息对SQL语句的正确、高效的执行信息

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

三、在查看系统权限分配记录

  1.  SYSDUAL,为不带表名的查询而设,用户一般不需查看。SYSDUAL是一个单行单列的表,为了某些特殊的SQL查询可以执行,而使用的。
  2. SYSGRANTS,记录系统中权限信息。

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

  1.  SYSTEXTS 存放字典对象的文本信息。
  2.  SYSCONTEXTINDEXES,记录全文索引的信息。
  3. SYSTABLECOMMENTS,记录表或视图的注释信息。
  4. SYSCOLUMNCOMMENTS,记录列的注释信息。

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

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

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

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

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

  1. SYSINJECTHINT,记录已指定的 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 语句进行分析和改写。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值