在达梦数据库的disql 工具中执行SQL语句时,会反馈一行提示,包含执行时间和执行号,如下:
[dmdba@www.cndba.cn ~]$ disql SYSDBA/SYSDBA
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间: 5.011(毫秒)
disql V8
SQL>
SQL> select * from cndba;
select * from cndba;
第1 行附近出现错误[-2106]:无效的表或视图名[CNDBA].
已用时间: 0.989(毫秒). 执行号:0.
SQL> select * from DAVE."cndba";
行号 id name phone
---------- -------- ---------- ------------------
1 1.000000 dave 18505568888.000000
已用时间: 0.547(毫秒). 执行号:6271.
SQL>
这里的执行号就是成功执行过SQL语句次数,执行成功执行号加一次,失败不加。执行号是一个累计值,会记录自第一次执行SQL语句后的所有次数。
注意这里的是所有,不仅仅是disql,也包含DM MANAGER等其他地方执行的语句,该值记录在达梦的系统统计信息中。
[dmdba@www.cndba.cn ~]$ disql SYSDBA/SYSDBA
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间: 5.011(毫秒)
disql V8
SQL>
SQL> select * from v$sysstat where name='sql executed count';
行号 ID CLASSID NAME STAT_VAL
---------- ----------- ----------- ------------------ --------------------
1 14 2 sql executed count 6275
已用时间: 2.818(毫秒). 执行号:6275.
SQL>
这里的CLASSID含义如下:
1:字典信息;
2:SQL;
3:事务;
4:检查点;
5:RLOG;
6:UNDO;
7:IO;
8:B 树;
9:网络;
10:文件;
11:内存;
12:CPU;
13:OS;
14:缓冲区;
15:限流控制;
20:其它
本来想删除这部分的统计信息,但查看了一下达梦的统计信息包,里面只有模式、表、列、索引的统计信息维护,并没有提供系统统计信息的维护。
然后进一步发现V$SYSSTAT居然是一张表:
CREATE TABLE "SYS"."V$SYSSTAT"
(
"ID" INT,
"CLASSID" INT,
"NAME" VARCHAR(128),
"STAT_VAL" BIGINT) STORAGE(ON "SYSTEM", CLUSTERBTR) ;
尝试直接update:
SQL> update v$sysstat set stat_val=0 where name='sql executed count';
update v$sysstat set stat_val=0 where name='sql executed count';
第1 行附近出现错误[-2633]:试图修改系统表或内建表[V$SYSSTAT].
已用时间: 0.297(毫秒). 执行号:0.
SQL>
这里直接禁止我们update。 所以在官方没有提供系统统计信息维护的情况下,我这里“破坏性”的想法就无法实现了,不过正常来讲,官方应该有一些内部的工具和方法可以直接修改这些值,只是我们外界不得而知。
版权声明:本文为博主原创文章,未经博主允许不得转载。
- 上一篇:DM8 达梦数据库 查看数据库版本号 方法
- 下一篇:稻盛和夫的《活用人才》