注册
DM 常用动态性能视图及使用方法
专栏/金的探索记录/ 文章详情 /

DM 常用动态性能视图及使用方法

2021/01/18 3479 3 0
摘要 DM 常用动态性能视图及使用方法

达梦数据库中的动态性能视图能自动收集数据库中的一些活动信息,系统管理员根据这些信息可以了解数据库运行的基本情况,为数据库的维护和优化提供依据。动态性能视图信息也是数据库中数据字典的一部分,与我们平常所说的数据字典不同的是,平常意义上的数据字典是指静态数据字典信息,也即用户访问数据字典信息时,内容不会发生改变,而动态视图信息是随着数据库的运行随时更改,具有一定的即时性。

本文将介绍DM7中常用的动态性能视图及其用法,如果各位想对这一部分内容进行更加深入的学习,可以参考达梦管理员手册中《动态管理/性能视图》章节。

注:本文实验环境的 DM 数据库版本为:
DM Database Server x64 V7.1.6.46-Build(2018.02.08-89107)ENT

视图分类

  • 系统状态监控类

v$sysstat,v$datafile,v$rlog,v$ckpt_history,v$database,v$instance,V$resource_limit,v$danger_event。

  • 内存监控类

V$bufferpool,v$cacheitem,v$cachepln,v$dict_cache,v$mem_pool。

  • 会话,锁,事物类

V$sessions,v$session_history,v$lock,v$deadlock_history,v$trx,v$trxwait。

  • 等待事件类

V$event_name,v$session_wait_history,v$system_event,v$session_event。

  • SQL 历史类

V$sql_history,v$long_exec_sqls,v$system_long_exec_sqls,v$sort_history,v$pre_return_history,v$runtime_err_history,v$sqltext。

  • 配置文件类

V$dm_ini,v$dm_arch_ini,v$parameter,v$dm_mal_ini。

常用视图用法

  • v$BUFFERPOOL

用法:v$bufferpool 常用来查看数据库缓冲池的命中率,通过查看各个缓存 池的命中率来决定是否需要调整缓存池大小。

可以使用如下 SQL 语句查看命中率:

select name 缓冲池名称 sum(page_size)*sf_get_page_size 缓冲池大小(GB) sum(rat_hit) /count(*) 命中率 from v$bufferpool group by name
  • v$CACHEITEM

用法:在没有使用结果缓存集的情况下,v$cacheitem 用于记录缓存的 SQL 和执行计划。由于 SQL 缓存池可以最大动态的增长至 CACHE_POOL_SIZE 的三倍大小,所以如果 CACHE_POOL_SiZE 设置不合理,可能会造成使用较多的虚拟内存,从而导致较多的内存页 pagein/out,增加较大的系统负担。可以使用该视 图动态的观察 SQL 缓存池的使用情况。

可以使用如下 SQL 语句:

select sum(item_size)/1024/1024 sql 缓存池大小(MB) from v$cacheitem
  • v$CACHEPLN

用法:在有些版本中,在 SQL 执行计划错误的情况下,如果对表以及列都收 集过统计信息,并且尝试使用 hint 提示干预执行计划,但是有些 SQL 的执行计划 依然没有改变,可以利用该视图找到 SQL 语句所对应的 SQL 执行计划地址,使用 SP_CLEAR_PLAN_CACHE 清除 SQL 缓存池中的执行计划,确保 SQL 语句下次执行时可以重新解析。

例如:

select cache_item 执行计划地址 sqlstr sql 文本 from v$cachepln where sqlstr like '&select * from t&'; call SP_CLEAR_PLAN_CACHE(139756359411688);
  • v$CKPT_HISTORY

用法:该视图记录了检查点的详细信息,可以直接查看该视图确认检查点 是否正常。

  • v$DATAFILE

用法:该视图记录了数据库文件的使用状态,通常可以和 v$TABLESPACE 视图进行关联查询。

例如:

select ts.name 表空间名称 ts.file_num 数据文件个数 df.path 数据库文件路径 df.total_size*df.page_size/1024/1024 整个数据文件大小(MB) df.free_size *df.page_size/1024/1024 整个数据文件大小(MB) decode(df.auto_extend,1'自动扩展打开','自动扩展关闭'from v$datafile df, v$tablespace ts where df.group_id=ts.id
  • v$DATABASE

用法:用于查看数据库相关信息,类似是否归档,数据库名称,创建时间,数据库状态等等。

例如:

select name 数据库名称 create_time 创建时间 decode(arch_mode,'Y','是','否') 是否归档,decode(status$,'1','启动','2','启动,redo完成','3','MOUNT','4','打开','5','挂起','6','关闭')数据库状态 decode(ROLE$,'0','普通','1','主机','2','备机')数据库模式 from v$database;
  • V$DICT_CAHCE

用法:该视图用于观察字典缓存池的信息,通过观察该视图可以动态的观 测 DICT_BUF_SIZE 参数如何设置较为合理。

例如:

select total_size/1024/1024 初始大小(MB) used_size/1024/1024 初始大小(MB) dict_num 缓存字典数量 from v$dict_cache
  • V$INSTANCE

用法:用于查看数据库实例相关信息,类似数据库版本,主机名,实例名称,实例状态等等。

  • V$IOCK

用法:用于记录数据库中锁信息。经常与 v$SESSIONS 关联查看数据库中阻塞信息。

V$LOCK 与 v$SESSIONS 组合查询阻塞会话。

select s.sess_id 会话号 s.sql_text sql 语句 s.state 会话状态 s.user_name 会话用户 s.create_time 会话创建时间 clnt_ip 会话 IP l.trx_id 事务 ID l.lmode 锁模式 l.table_id 表号 decode(l.blocked,1,'被阻塞','未阻塞') from v$sessions.s, v$lock 1 where s.trx_id=1.trx_id
  • V$PRE_RETURN_HISTORY

用法:该视图用于记录返回大量结果集的查询语句的历史信息。同时该视图可以与 v$SESSION_HISTORY 等视图组合使用。

  • V$RESOURCE_LIMIT

用法:该视图用于查看用户空间的限制信息。

例如:

select name 用户名 space_limit*32/1024 空间限制大小(MB) space_limit*32/1024 空间限制大小(MB) from v$resource_limit;
  • V$RLOG

用法:该视图用于记录日志信息,包括 LSN 号和日志使用情况等等。在主备环境中可以查看该视图确认主机和备机是否一致。

  • V$SESSION_HISTORY

用法:用于记录数据库中的会话历史信息。在本视图中只存放 v$SESSION的部分信息,可以通过与 v$SQL_HISTORY 关联找出对应 SQL 的 session 信息。

  • V$SQL_HISTORY

用法:用于记录最近执行的 10000 条 SQL 语句,该视图同时包括正在执行的 SQL 语句。该视图可以用于定位可能出现问题的 SQL 语句,该视图记录了 SQL 执行时间,物理读,逻辑读等关键信息。

例子:

select top_sql_text sql 文本 start_time 开始时间 time_used/1000/1000 执行时间(毫秒) n_logic_read 逻辑读数量 n_phy_read 物理读数量 affected_rows 影响行数 from v$sql history order by time_used desc; n_logic_read desc;
  • V$SYSSTAT

用法:用于记录数据库的运行相关状态的信息,主要用于观察解析类统计信息,物理读,逻辑读,内存池使用情况,数据库运行各个阶段占用时间(类似 cpu time,parse time 等等),通过分析这些信息来诊断问题并对数据库有个初步的判断。

  • V$THREADS

用法:该视图用于查看数据库中的线程。在新版本中 v$sessions 视图中增加了 thrd_id,配合使用操作系统 top –H –ppid 命令可以实现快速定位异常会话的功能,并可以使用 sp_close_session() 或者操作系统 killthrd_id,杀掉异常会话。

  • V$DM_INI,V$DM_ARCH_INI,V$DM_MAL_INI,v$PARAMETER

用法:用于查看数据库相关配置(INI,ARCH_INI,MAL_INI)信息。

  • V$DANGER_EVENT

用法:用于查看数据库中危险操作发生时间和用户以及相关操作信息,比如 truncate 操作。

  • V$SQLTEXT,V$SQL_PLAN

用法:用于显示sql缓冲池缓存的sql文本和执行计划。

  • V$EVENT_NAME

用法:用于查看 DM 所支持的所有等待事件。

  • V$SESSION_EVENT,V$SYSTEM_EVENT

用法:用于统计数据库中系统或会话级别的等待事件。

例如:

select event 等待事件名称 total_waits 等待事件发生次数 time_waited_micro /1000 等待事件总用时(ms) average_wait_micro/1000 平均等待事件(ms) from v$system_event order by average_wait_micro desc;
  • V$LONG_EXEC_SQLS,V$SYSTEM_LONG_EXEC_SQLS

用法:用于记录数据库中最近 10000 条执行时间长的 SQL。

  • V$SORT_HISTORY

用法:用于记录排序较多的 SQL 语句,可以使用该视图定位异常排序的 SQL。

  • v$MEM_POOL

用法:用于监控数据库中各个内存组件使用状况。

例子:

select name 内存池名称 org size /1024/1024 参数文件配置大小(MB) reserved_size/1024/1024 实际使用大小(MB) from v$mem_pool order by reserved_size desc;
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服