达梦数据库-学习-23-获取执行计划的N种方法
目录
一、环境信息
二、说点什么
三、测试数据生成
四、测试语句
五、获取执行计划方法
1、EXPLAIN
(1)样例
(2)优势
(3)劣势
2、ET
(1)开启参数
(2)样例
(3)字段含义
(4)优势
(5)劣势
3、AUTOTRACE
(1)开启参数
(2)样例
(3)参数含义
(4)优势
(5)劣势
4、PLNDUMP
(1)样例
(2)SP_CLEAR_PLAN_CACHE
(3)参数含义
(4)优势
(5)劣势
5、DBMS_SQLTUNE
(1)开启参数
(2)常规样例
(3)自动调优样例
(4)参数含义
(5)优势
(6)劣势
6、10053事件
(1)样例
(2)语法树
(3)参数说明
(4)优势
(5)劣势
一、环境信息
名称 | 值 |
CPU | 12th Gen Intel(R) Core(TM) i7-12700H |
操作系统 | CentOS Linux release 7.9.2009 (Core) |
内存 | 4G |
逻辑核数 | 4 |
DM版本 | 1 DM Database Server 64 V8 2 DB Version: 0x7000c 3 03134284194-20240703-234060-20108 4 Msg Version: 12 5 Gsu level(5) cnt: 0 |
二、说点什么
优化是我们DBA工作中重要的一环,那执行计划的获取就成了我们的必修课,开始吧,我们的实验之旅。
三、测试数据生成
DROP TABLE LZL.SUN;
DROP TABLE LZL.MOON;
CREATE TABLE LZL.SUN (A INT, B VARCHAR2(20));
INSERT INTO LZL.SUN SELECT LEVEL,'SUN'||LEVEL FROM DUAL CONNECT BY LEVEL <= 10;
INSERT INTO LZL.SUN SELECT LEVEL,'MOON'||LEVEL FROM DUAL CONNECT BY LEVEL <= 1000;
CREATE TABLE LZL.MOON (A INT, B VARCHAR2(20));
INSERT INTO LZL.MOON SELECT LEVEL,'SUN'||LEVEL FROM DUAL CONNECT BY LEVEL <= 1;
INSERT INTO LZL.MOON SELECT LEVEL,'MOON'||LEVEL FROM DUAL CONNECT BY LEVEL <= 10000;
COMMIT;CALL SYS.DBMS_STATS.GATHER_TABLE_STATS('LZL','SUN',NULL,100);
CALL SYS.DBMS_STATS.GATHER_TABLE_STATS('LZL','MOON',NULL,100);
四、测试语句
SQL> SELECT * FROM LZL.SUN S INNER JOIN LZL.MOON M ON S.A = M.A WHERE S.B = 'SUN1';行号 A B A B
---------- ----------- ---- ----------- -----
1 1 SUN1 1 SUN1
2 1 SUN1 1 MOON1已用时间: 1.689(毫秒). 执行号:9907.
五、获取执行计划方法
1、EXPLAIN
(1)样例
SQL> EXPLAIN SELECT * FROM LZL.SUN S INNER JOIN LZL.MOON M ON S.A = M.A WHERE S.B = 'SUN1';1 #NSET2: [2, 1, 104]
2 #PRJT2: [2, 1, 104]; exp_num(4), is_atom(FALSE)
3 #HASH2 INNER JOIN: [2, 1, 104]; KEY_NUM(1); KEY(S.A=M.A) KEY_NULL_EQU(0)
4 #SLCT2: [1, 1, 52]; S.B = 'SUN1'
5 #CSCN2: [1, 1010, 52]; INDEX33555473(SUN as S); btr_scan(1)
6 #CSCN2: [1, 10001, 52]; INDEX33555474(MOON as M); btr_scan(1)已用时间: 16.655(毫秒). 执行号:0.
(2)优势
1、不需要执行SQL,因为很多慢SQL执行时间使我们怀疑人生。
2、不需要修改参数,有的生产环境调整一个参数,需要评估风险。
(3)劣势
1、非真实的执行计划,其中返回行数和代价都不一定是准确的,需要我们收集统计信息。
2、ET
(1)开启参数
CALL SP_SET_PARA_VALUE(1,'ENABLE_MONITOR',1);
CALL SF_SET_SESSION_PARA_VALUE('MONITOR_SQL_EXEC',1);
CALL SF_SET_SESSION_PARA_VALUE('MONITOR_TIME',1);
后面两个参数开会话级别即可。MONITOR_TIME参数新版本不允许修改,可以不动。
(2)样例
SQL> SELECT * FROM LZL.SUN S INNER JOIN LZL.MOON M ON S.A = M.A WHERE S.B = 'SUN1';行号 A B A B
---------- ----------- ---- ----------- -----
1 1 SUN1 1 SUN1
2 1 SUN1 1 MOON1已用时间: 1.689(毫秒). 执行号:9907.SQL> CALL ET(9907);行号 OP TIME(US) PERCENT RANK SEQ N_ENTER MEM_USED(KB) DISK_USED(KB)
---------- ----- -------------------- ------- -------------------- ----------- ----------- -------------------- --------------------HASH_USED_CELLS HASH_CONFLICT DHASH3_USED_CELLS DHASH3_CONFLICT HASH_SAME_VALUE -------------------- -------------------- ----------------- --------------- --------------------
1 PRJT2 4 0.32% 7 2 4 0 00 0 NULL NULL 02 DLCK 6 0.49% 6 0 2 0 00 0 NULL NULL 03 SLCT2 24 1.95% 5 4 7 0 00 0 NULL NULL 0行号 OP TIME(US) PERCENT RANK SEQ N_ENTER MEM_USED(KB) DISK_USED(KB)
---------- ----- -------------------- ------- -------------------- ----------- ----------- -------------------- --------------------HASH_USED_CELLS HASH_CONFLICT DHASH3_USED_CELLS DHASH3_CONFLICT HASH_SAME_VALUE -------------------- -------------------- ----------------- --------------- --------------------
4 CSCN2 102 8.27% 4 5 5 0 00 0 NULL NULL 05 NSET2 105 8.52% 3 1 3 0 00 0 NULL NULL 06 HI3 172 13.95% 2 3 39 19584 01 0 NULL NULL 0行号 OP TIME(US) PERCENT RANK SEQ N_ENTER MEM_USED(KB) DISK_USED(KB)
---------- ----- -------------------- ------- -------------------- ----------- ----------- -------------------- --------------------HASH_USED_CELLS HASH_CONFLICT DHASH3_USED_CELLS DHASH3_CONFLICT HASH_SAME_VALUE -------------------- -------------------- ----------------- --------------- --------------------
7 CSCN2 820 66.50% 1 6 35 0 00 0 NULL NULL 07 rows got已用时间: 48.333(毫秒). 执行号:9908.
(3)字段含义
字段 | 描述 |
OP | 操作符名称。 |
TIME(US) | 实际耗时(微秒),反映该步骤的实际执行时间。 |
PERCENT | 执行时间占总时间百分比。 |
RANK | 执行时间的耗时排序。 |
SEQ | 执行计划的节点号。 |
N_ENTER | 进入次数。 |
MEM_USED(KB) | 操作符使用的内存空间,单位:KB |
DISK_USED(KB) | 操作符使用的磁盘空间,单位:KB |
HASH_USED_CELLS | 哈希表使用的槽数 |
HASH_CONFLICT | 哈希表存在冲突的记录数 |
DHASH3_USED_CELLS | 动态哈希表中使用的槽数 |
DHASH3_CONFLICT | 动态哈希表中的冲突情况 |
HASH_SAME_VALUE | 开启哈希相同值挂链优化时,记录哈希表中相同值的总数,唯一值不纳入计数。例如:哈希表中存在一个 0 和两个相同值链 1—1—1、3—3,此时 HASH_SAME_VALUE=5 |
(4)优势
1、可迅速定位耗时的操作符。
2、可以看到一些EXPLAIN看不到的参数信息,辅助我们更好定位性能问题点。
(5)劣势
1、需开启额外参数。
2、需SQL执行完成,如果有的SQL跑不出来结果,就不能用此方法。
3、AUTOTRACE
(1)开启参数
CALL SP_SET_PARA_VALUE(1,'ENABLE_MONITOR',1);
CALL SF_SET_SESSION_PARA_VALUE('MONITOR_SQL_EXEC',1);
CALL SF_SET_SESSION_PARA_VALUE('MONITOR_TIME',1);-- 只生成实际的执行计划。
SQL> set autotrace traceonly;-- 生成实际的执行计划和返回结果。
SQL> set autotrace trace;
后面两个参数开会话级别即可。MONITOR_TIME参数新版本不允许修改,可以不动。
(2)样例
SQL> set autotrace traceonly;SQL> SELECT * FROM LZL.SUN S INNER JOIN LZL.MOON M ON S.A = M.A WHERE S.B = 'SUN1';1 #NSET2: [2, 1->2, 104]
2 #PRJT2: [2, 1->2, 104]; exp_num(4), is_atom(FALSE)
3 #HASH2 INNER JOIN: [2, 1->2, 104]; KEY_NUM(1), MEM_USED(19584KB), DISK_USED(0KB) KEY(S.A=M.A) KEY_NULL_EQU(0)
4 #SLCT2: [1, 1->1, 52]; S.B = 'SUN1'
5 #CSCN2: [1, 1010->1010, 52]; INDEX33555525(SUN); btr_scan(1)
6 #CSCN2: [1, 10001->10001, 52]; INDEX33555526(MOON); btr_scan(1)Statistics
-----------------------------------------------------------------0 data pages changed0 undo pages changed53 logical reads0 physical reads0 redo size349 bytes sent to client143 bytes received from client1 roundtrips to/from client0 sorts (memory)0 sorts (disk)0 rows processed0 io wait time(ms)7 exec time(ms)已用时间: 8.264(毫秒). 执行号:622.SQL> set autotrace trace;SQL> SELECT * FROM LZL.SUN S INNER JOIN LZL.MOON M ON S.A = M.A WHERE S.B = 'SUN1';行号 A B A B
---------- ----------- ---- ----------- -----
1 1 SUN1 1 SUN1
2 1 SUN1 1 MOON11 #NSET2: [2, 1->2, 104]
2 #PRJT2: [2, 1->2, 104]; exp_num(4), is_atom(FALSE)
3 #HASH2 INNER JOIN: [2, 1->2, 104]; KEY_NUM(1), MEM_USED(19584KB), DISK_USED(0KB) KEY(S.A=M.A) KEY_NULL_EQU(0)
4 #SLCT2: [1, 1->1, 52]; S.B = 'SUN1'
5 #CSCN2: [1, 1010->1010, 52]; INDEX33555525(SUN); btr_scan(1)
6 #CSCN2: [1, 10001->10001, 52]; INDEX33555526(MOON); btr_scan(1)Statistics
-----------------------------------------------------------------0 data pages changed0 undo pages changed53 logical reads0 physical reads0 redo size349 bytes sent to client143 bytes received from client1 roundtrips to/from client0 sorts (memory)0 sorts (disk)0 rows processed0 io wait time(ms)0 exec time(ms)已用时间: 1.652(毫秒). 执行号:624.
(3)参数含义
参数 | 描述 | 单位 | 建议 |
data pages changed | SQL 执行过程中修改的数据页数量(仅针对 DML 操作,如 `INSERT/UPDATE/DELETE`)。 | 页 | 高频更新场景建议定期整理表空间碎片。 |
undo pages changed | 事务修改 UNDO 日志的页数,用于回滚或恢复数据一致性。 | 页 | 长事务或大事务会导致 UNDO 页增长,需控制事务粒度。 |
logical reads | 从缓存(内存)中读取的数据页次数。 | 次数 | 高值可能表明缓存命中率低,需增大 BUFFER_POOLS 参数。 检查索引是否合理,减少全表扫描。 |
physical reads | 从磁盘直接读取的数据页次数(未命中缓存)。 | 次数 | 高值需优化索引或预热缓存(如预加载高频表)。 |
redo size | SQL 执行生成的重做日志(REDO)大小。 | 字节(Byte) | 大事务会导致 REDO 日志膨胀,建议拆分为小事务。 REDO日志频繁切换时,可增大REDO日志。 |
bytes sent to client | 查询结果集从服务器发送到客户端的字节数。 | 字节 | 若值过大,使用分页查询(LIMIT/OFFSET)或仅查询必要字段。 启用压缩传输。 |
bytes received from client | 客户端发送到服务器的请求数据量(如 SQL 文本、绑定变量值)。 | 字节 | |
roundtrips to/from client | 客户端与服务器之间的网络交互次数。 | 次数 | 减少频繁短查询,合并为批量操作。 使用连接池复用会话,降低建立连接开销。 |
sorts (memory) | 在内存中完成的排序操作次数。 | 次数 | 确保排序字段有索引(避免 ORDER BY 全表扫描)。 调整SORT_BUF开头的参数提升内存排序效率。 |
sorts (disk) | 因内存不足溢出到磁盘的排序次数(单路/多路归并排序)。 | 次数 | 非零值需增大 TEMP_SIZE 参数。 优化 SQL 减少排序(如去掉冗余 DISTINCT)。 |
rows processed | SQL 实际处理的数据行数(如 `SELECT` 返回行数或 `DML` 影响行数)。 | 行 | |
io wait time(ms) | SQL 执行过程中等待磁盘 I/O 的总时间。 | 毫秒(ms) | 高值需检查存储性能(如 RAID 配置、SSD 升级)。 减少随机 I/O(如索引碎片整理)。 |
exec time(ms) | SQL 从开始到结束的总执行时间(含网络传输、I/O 等待等)。 | 毫秒(ms) | 使用 `V$SQL_HISTORY` 分析历史执行耗时趋势。 |
(4)优势
1、可以看到一些EXPLAIN看不到的参数信息,辅助我们更好定位性能问题点。
(5)劣势
1、需开启额外参数。
2、需SQL执行完成,如果有的SQL跑不出来结果,就不能用此方法。
4、PLNDUMP
(1)样例
可获得该计划的详细信息,trc文件存放在数据文件目录的trace文件夹下。
SQL> SELECT * FROM LZL.SUN S INNER JOIN LZL.MOON M ON S.A = M.A WHERE S.B = 'SUN1';行号 A B A B
---------- ----------- ---- ----------- -----
1 1 SUN1 1 SUN1
2 1 SUN1 1 MOON1已用时间: 7.588(毫秒). 执行号:1001.SQL> SELECT CACHE_ITEM,SQLSTR FROM V$CACHEPLN WHERE SQLSTR LIKE '%SELECT * FROM LZL.SUN S INNER JOIN LZL.MOON M ON S.A = M.A%';行号 CACHE_ITEM
---------- --------------------SQLSTR ---------------------------------------------------------------------------------------------------------------------------
1 140075396266936SELECT CACHE_ITEM,SQLSTR FROM V$CACHEPLN WHERE SQLSTR LIKE '%SELECT * FROM LZL.SUN S INNER JOIN LZL.MOON M ON S.A = M.A%';2 140075396210168SELECT * FROM LZL.SUN S INNER JOIN LZL.MOON M ON S.A = M.A WHERE S.B = 'SUN1';已用时间: 4.761(毫秒). 执行号:1002.SQL> alter session set events 'immediate trace name plndump level 140075396210168 , dump_file ''/opt/Dm8/Data/DAMENG/trace/SUN.trc''';
操作已执行
已用时间: 5.796(毫秒). 执行号:1101.SQL> quit[dmdba@localhost ~]$ cat /opt/Dm8/Data/DAMENG/trace/SUN.trc
DM Database Server x64 V8*** 2025-05-16 10:39:32.410000000*** start dump the infos of pln[140075396210168].npln cache infos:scp cachetype: 0over flow: 0disable: 0fixed number: 1ts value: 1856type: 0hash val: -873397353schid: 150994945user id: 50331649obj id: 0--rs cachers can cache: 0rs cache size: 0talbes' size: 2
PLN_CREATE_TIME: 2025-05-16 10:20:12.000SQL_STR:
SELECT * FROM LZL.SUN S INNER JOIN LZL.MOON M ON S.A = M.A WHERE S.B = 'SUN1';PLN_CMD:0 savepoint 6 dop_try_begin 010 dop_try_begin 114 sql 0 024 nop26 jmp 6732 nop34 push 040 swap42 sloc 146 err_set 050 rollback56 jmp 6762 nop64 throw dir 167 exception end69 savepoint 75 cop "b 0"80 hlt82 hltsqlnode[0]::::
1 #NSET2: [2, 1, 104]
2 #PRJT2: [2, 1, 104]; exp_num(4), is_atom(FALSE)
3 #HASH2 INNER JOIN: [2, 1, 104]; KEY_NUM(1), MEM_USED(0KB), DISK_USED(0KB) KEY(S.A=M.A) KEY_NULL_EQU(0)
4 #SLCT2: [1, 1, 52]; S.B = 'SUN1'
5 #CSCN2: [1, 1010, 52]; INDEX33555592(SUN); btr_scan(1)
6 #CSCN2: [1, 10001, 52]; INDEX33555593(MOON); btr_scan(1)end dump the infos of pln[140075396210168].
如果我们想清理老的执行计划,可以使用如下方法:
SQL> SP_CLEAR_PLAN_CACHE(140075396210168);
DMSQL 过程已成功完成
已用时间: 3.519(毫秒). 执行号:4306.SQL> SELECT CACHE_ITEM,SQLSTR FROM V$CACHEPLN
WHERE SQLSTR LIKE '%SELECT * FROM LZL.SUN S INNER JOIN LZL.MOON M ON S.A = M.A%';行号 CACHE_ITEM
---------- --------------------SQLSTR -----------------------------------------------------------------------------------------------------------------------------
1 140075423825880SELECT CACHE_ITEM,SQLSTR FROM V$CACHEPLN WHERE SQLSTR LIKE '%SELECT * FROM LZL.SUN S INNER JOIN LZL.MOON M ON S.A = M.A%';2 140075396266936SELECT CACHE_ITEM,SQLSTR FROM V$CACHEPLN WHERE SQLSTR LIKE '%SELECT * FROM LZL.SUN S INNER JOIN LZL.MOON M ON S.A = M.A%';已用时间: 0.660(毫秒). 执行号:4307.
(2)SP_CLEAR_PLAN_CACHE
函数声明 | 函数说明 | 参数说明 |
SP_CLEAR_PLAN_CACHE() | 清空当前站点的执行缓存信息。 | 无。 |
SP_CLEAR_PLAN_CACHE(plan_id bigint) | 清空当前站点指定的执行缓存信息。 | plan_id:指定计划 ID,其值可以从动态视图 V$CACHEPLN 中的 CACHE_ITEM 列获得。 |
(3)参数含义
暂时不明,如果有知道的大佬,欢迎沟通。
PLN_CMD下面的算子看着像是汇编语言。
(4)优势
1、由于里面有些参数不了解,说不定对于深入的优化是有作用的,先占个沙发。
2、可以看到一些历史的SQL真实执行计划。
(5)劣势
1、需要执行完SQL。
2、计划是真实的,但里面的返回行数和一些内存使用都是估算的。
5、DBMS_SQLTUNE
(1)开启参数
CALL SP_SET_PARA_VALUE(1,'ENABLE_MONITOR',1);
CALL SF_SET_SESSION_PARA_VALUE('MONITOR_SQL_EXEC',1);
CALL SF_SET_SESSION_PARA_VALUE('MONITOR_TIME',1);
后面两个参数开会话级别即可。MONITOR_TIME参数新版本不允许修改,可以不动。
(2)常规样例
SQL> SET LONG 999999SQL> SELECT * FROM LZL.SUN S INNER JOIN LZL.MOON M ON S.A = M.A WHERE S.B = 'SUN1';行号 A B A B
---------- ----------- ---- ----------- -----
1 1 SUN1 1 SUN1
2 1 SUN1 1 MOON1已用时间: 1.545(毫秒). 执行号:608.SQL> SELECT DBMS_SQLTUNE.REPORT_SQL_MONITOR(SQL_EXEC_ID=>608);行号 DBMS_SQLTUNE.REPORT_SQL_MONITOR(SQL_EXEC_ID=>608)
---------- --------------------------------------------------------------------------------------------------------------------------------
1 SQL Monitoring ReportSQL Text
------------------------------
SELECT * FROM LZL.SUN S INNER JOIN LZL.MOON M ON S.A = M.A WHERE S.B = 'SUN1';Global Information
------------------------------Status : DONE (ALL ROWS)Session : SYSDBA (178983048:6)SQL ID : 12SQL Execution ID : 608Execution Started : 2025-05-19 08:59:02Duration : 0.001006sProgram : disqlGlobal Stats
=========================================================
| Affected | Bytes | Bytes | Physical | Logical |
| Rows | Allocate | Free | Read(page) | Read(page) |
=========================================================
| 0 | 0 | 0 | 0 | 53 |
=========================================================SQL Plan Monitoring Details
==================================================================================================================
| Id | Operation | Name | Rows | Cost | Time | Start | Execs | Rows | Activity | Activity Detail |
| | | | (Estim) | | Active(s) | Active | | (Actual) | (%) | (# samples) |
==================================================================================================================
| 0 | DLCK | | | | 0.000002 | +0.000971 | 2 | | 0.21 | |
| 1 | NSET2 | | 1 | 2 | 0.000085 | +0.000891 | 3 | 2 | 9.08 | |
| 2 | PRJT2 | | 1 | 2 | 0.000003 | +0.000890 | 4 | 2 | 0.32 | |
| 3 | HI3 | | 1 | 2 | 0.000113 | +0.000883 | 39 | 2 | 12.07 | |
| 4 | SLCT2 | | 1 | 1 | 0.000014 | +0.000119 | 7 | 1 | 1.50 | |
| 5 | CSCN2 | SUN | 1010 | 1 | 0.000052 | +0.000119 | 5 | 1010 | 5.56 | |
| 6 | CSCN2 | MOON | 10001 | 1 | 0.000667 | +0.000882 | 35 | 10001 | 71.26 | |
==================================================================================================================已用时间: 3.621(毫秒). 执行号:609.
(3)自动调优样例
创建调优任务
DBMS_SQLTUNE.CREATE_TUNING_TASK(
'SELECT * FROM LZL.SUN S INNER JOIN LZL.MOON M ON S.A = M.A WHERE S.B = ''SUN1''',
TASK_NAME=>'SUN');
执行调优任务
DBMS_SQLTUNE.EXECUTE_TUNING_TASK('SUN');
生成调优报告
SQL> SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK('SUN');行号 DBMS_SQLTUNE.REPORT_TUNING_TASK('SUN')
---------- --------------------------------------------------------------------------------------------------------------------------------
1 GENERAL INFORMATION SECTION
-------------------------------------------------------------------------------
TUNING TASK NAME : SUN
TUNING TASK OWNER : SYSDBA
WORKLOAD TYPE : SINGLE SQL STATEMENT
EXECUTION COUNT : 1
CURRENT EXECUTION : SYSEXECNAME_1
EXECUTION TYPE : TUNE SQL
SCOPE : COMPREHENSIVE
TIME LIMIT(SECONDS) : 1800
COMPLETION STATUS : COMPLETED
STARTED AT : 2025-05-19 10:41:04
COMPLETED AT : 2025-05-19 10:41:04
SQL TEXT : SELECT * FROM LZL.SUN S INNER JOIN LZL.MOON M ON S.A = M.A WHERE S.B = 'SUN1'-------------------------------------------------------------------------------FINDING SECTION (1 FINDING)
-------------------------------------------------------------------------------1 - INDEX FINDING-----------------通过创建一个或多个索引可以改进此语句的执行计划。RECOMMENDATION--------------考虑运行创建推荐的索引。CREATE INDEX IDX$$TASK1_EXEC1_1 ON "LZL"."SUN"("A");CREATE INDEX IDX$$TASK1_EXEC1_2 ON "LZL"."SUN"("B");CREATE INDEX IDX$$TASK1_EXEC1_3 ON "LZL"."MOON"("A");CREATE INDEX IDX$$TASK1_EXEC1_4 ON "LZL"."MOON"("B");-------------------------------------------------------------------------------已用时间: 7.403(毫秒). 执行号:613.
关闭调优任务
DBMS_SQLTUNE.DROP_TUNING_TASK('SUN');
(4)参数含义
Global Information
参数名 | 描述 |
Status | DONE (ALL ROWS):SQL执行已完成,且返回了所有结果集。 |
Session | 会话信息。 |
SQL ID | SQL语句的唯一标识符,相同SQL文本的ID相同。 |
SQL Execution ID | 本次SQL执行的全局唯一编号,用于区分不同执行实例。 |
Execution Started | SQL开始执行的时间戳。 |
Duration | SQL执行总耗时。 |
Program | 发起SQL执行的客户端程序。 |
Global Stats
参数名 | 描述 |
Affected Rows | SQL影响的行数。 |
Bytes Allocate | 执行过程中分配的内存字节数。 |
Bytes Free | 释放的内存字节数。 |
Physical Read | 物理读页数。 |
Logical Read | 逻辑读页数。 |
SQL Plan Monitoring Details
参数名 | 描述 |
Id | 执行计划步骤编号(从0开始)。 |
Operation | 执行计划操作类型。 |
Name | 操作涉及的对象名(如索引、表名)。 |
Rows (Estim) | 优化器估算的返回行数。 |
Cost | 优化器估算的执行代价。 |
Time Active(s) | 该步骤实际消耗的时间(秒)。 |
Start Active | 步骤开始执行的时间(相对于SQL启动时间的偏移量)。 |
Execs | 该步骤被执行的次数。 |
Rows (Actual) | 实际返回的行数。 |
Activity (%) | 该步骤在总执行时间中的占比(高占比可能为性能瓶颈)。 |
Activity Detail | 等待事件详情(如锁、I/O等)。 |
(5)优势
1、可以看到等待事件,实际执行时间、返回真实行数、执行次数等,对优化有一定帮助。
2、可以看到一些历史的SQL真实执行计划。
(6)劣势
1、需要执行完SQL。
2、SQL Plan Monitoring Details没有缩进,看不出执行顺序。
6、10053事件
(1)样例
SQL> select PARA_NAME,PARA_VALUE from v$dm_ini where PARA_NAME like '%TRACE_PATH%';行号 PARA_NAME PARA_VALUE
---------- ---------- --------------------------
1 TRACE_PATH /opt/Dm8/Data/DAMENG/trace已用时间: 16.736(毫秒). 执行号:601.SQL> alter session set events '10053 trace name context forever,level 1';
操作已执行
已用时间: 3.513(毫秒). 执行号:602.SQL> SELECT * FROM LZL.SUN S INNER JOIN LZL.MOON M ON S.A = M.A WHERE S.B = 'SUN1';行号 A B A B
---------- ----------- ---- ----------- -----
1 1 SUN1 1 SUN1
2 1 SUN1 1 MOON1已用时间: 20.469(毫秒). 执行号:603.SQL> alter session set events '10053 trace name context off';
操作已执行
已用时间: 2.819(毫秒). 执行号:604.
TRC文件
[root@localhost ~]# ll /opt/Dm8/Data/DAMENG/trace/
总用量 16
-rw-r--r-- 1 dmdba dinstall 12583 5月 19 11:11 DMSERVER_0519_1111_139852590978136.trc[root@localhost ~]# cat /opt/Dm8/Data/DAMENG/trace/DMSERVER_0519_1111_139852590978136.trc
DM Database Server x64 V8[03134284336-20250117-257733-20132], Jan 22 2025 09:16:16 built.*** 2025-05-19 11:11:27.876000000
*** Start trace 10053 event [level 1]
Current SQL Statement:
SELECT * FROM LZL.SUN S INNER JOIN LZL.MOON M ON S.A = M.A WHERE S.B = 'SUN1';*****************************
Parameters for this statement
*****************************
olap_flag = 2
mpp_flag = 0
enable_monitor = 1
max_opt_n_tables = 6
enable_hash_join = 1
enable_index_join = 1
enable_merge_join = 1
mpp_index_join_opt_flag = 1
mpp_nli_opt_flag = 1
enable_in_value_list_opt = 518
enhanced_bexp_trans_gen = 3
batch_param_opt = 0
use_pln_pool = 1
parallel_degree = 1
global_page_size = 8192
global_extent_size = 16
view_pullup_flag = 34
view_pullup_max_tab = 7
refed_exists_opt_flag = 1
hash_pll_opt_flag = 107
partial_join_evaluation_flag = 1
motion_opt_flag = 0
dpc_opt_flag = 0
use_fk_remove_tables_flag = 1
use_filter_joining_remove_table = 1
use_hagr_flag = 0
outer_join_index_opt_flag = 0
hagr_parallel_opt_flag = 4
group_opt_flag = 60
from_opt_flag = 0
hagr_distinct_opt_flag = 2
mpp_hash_lr_rate = 10
lpq_hash_lr_rate = 30
slct_opt_flag = 8575
slct_err_process_flag = 0
like_opt_flag = 127
filter_push_down = 2
star_transformation_enable = 0
max_opt_n_or_bexps = 7
dist_in_subquery_opt = 0
count_64bit = 1
use_htab = 1
sel_item_htab_flag = 0
or_cvt_htab_flag = 1
op_subq_cvt_in_flag = 1
enhanced_subq_merging = 3
case_when_cvt_flag = 9
or_nbexp_cvt_case_when_flag = 0
nbexp_opt_flag = 7
nonconst_or_cvt_in_lst_flag = 0
dblink_opt_flag = 509
outer_cvt_inner_pull_up_cond_flag = 11
opt_or_for_huge_table_flag = 0
enable_rq_to_spl = 1
multi_in_cvt_exists = 1
prjt_replace_npar = 1
subq_cvt_spl_flag = 13
enable_rq_to_inv = 0
subq_exp_cvt_flag = 193
use_refer_tab_only = 0
max_phc_be_num = 512
refed_subq_cross_flag = 1
order_by_nulls_flag = 0
in_list_as_join_key = 0
outer_join_flating_flag = 1
top_order_opt_flag = 5
top_order_estimate_card = 300
place_group_by_flag = 0
sfun_push_down_flag = 1
single_htab_remove_flag = 1
phf_ntts_opt = 1
use_ftts = 0
upd_del_opt = 2
mpp_dml_force_opt = 0
mpp_motion_sync = 200
use_mclct = 2
top_dis_hash_flag = 1
enable_rq_to_nonref_spl = 1
optimizer_mode = 1
enable_index_filter = 1
parallel_mode_common_degree = 1
hash_cmp_opt_flag = 0
nonrefed_subquery_as_const = 1
outer_opt_nlo_flag = 0
use_index_skip_scan = 0
distinct_use_index_skip = 2
index_skip_scan_rate = 0.002500
complex_view_merging = 2
optimizer_dynamic_sampling = 0
table_stat_flag = 0
speed_semi_join_plan = 9
multi_hash_dis_opt = 1
del_hp_opt_flag = 0
cnntb_opt_flag = 193
cte_opt_flag = 1
adaptive_npln_flag = 3
optimizer_or_nbexp = 29
npln_or_max_node = 20
optimizer_in_nbexp = 1
multi_upd_opt_flag = 1
multi_upd_max_col_num = 128
optimizer_version = 70101
optimizer_max_perm = 7200
enable_invisible_col = 1
push_subq = 0
invocation_opt_flag = 119
view_filter_merging = 138
enable_partition_wise_opt = 1
opt_mem_check = 0
optimizer_aggr_groupby_elim = 1
enable_join_factorization = 1
query_info_bits = 0x0
explain_show_factor = 1
error_compatible_flag = 0x0
hi_right_order_flag = 0
enable_nest_loop_join_cache = 0
enable_table_exp_ref_flag = 1
opt_cvt_var_cost_factor = 1
opt_max_adaptive_exec_times = 1000
sql_safe_update_rows = 0
sort_flag = 0
bexp_calc_st_flag = 128
spl_share_flag = 0
cpu_cost_factor = 9500
sel_rate_equ = 0.025000
base_mi_cpu = 1000000.000000
build_hash_base_cost = 0
sel_rate_single = 0.050000
having_rate_factor = 1
inter_rate_factor = 1
ret_null_rate_factor = 100
nlij_amplify_factor = 4
cpu_speed = 3145728
n_runs = 1
mem_bandwidth = 3145728
mem_intense_degree = 0
base_scan_cpu = 140000.000000
base_seek_cpu = 140000.000000
base_lkup_cpu = 62000.000000
base_nlij_cpu = 16000.000000
base_hi_cpu = 2683000.000000
base_nl_cpu = 1000000.000000
base_flt_cpu = 140000.000000
scan_cpu = 330.000000
seek_cpu = 400.000000
lkup_cpu = 2500.000000
nlij_cpu = 200.000000
hi_cpu = 400.000000
hi_search_cpu = 200.000000
mi_cpu = 300.000000
nl_cpu = 200.000000
flt_cpu = 30.000000
join_st_opt_flag = 1
enable_adjust_nli_cost = 1
enable_adjust_dist_cost = 0
lpq_motion_factor = 58.000000
mpp_motion_factor = 100.000000
memory_pool = 500
huge_buffer = 80
buffer = 4000
keep = 8
recycle = 300
sort_buf_size = 20
hagr_hash_size = 100000
hj_buf_global_size = 5000
hj_buf_size = 500
hj_blk_size = 2
hagr_buf_global_size = 5000
hagr_buf_size = 500
hagr_blk_size = 2
mtab_mem_size = 8
mmt_size = 0
mmt_flag = 1
dict_buf_size = 50
mal_buf_size = 100
mal_vpool_size = 128
vm_stack_size = 256
vm_pool_size = 64
sess_pool_size = 64
max_os_memory = 100
worker_threads = 16
worker_cpu_percent = 0
task_threads = 16
enhance_bind_peeking = 0
sqc_gi_num_per_tab = 2
dpc_sync_step = 16
dpc_sync_total = 0
xbox_dump_threshold = 0
xbox_target_size = 1024*** Plan before optimized:project[0x7f31f804ea28] n_exp(4) nest loop join[0x7f31f804d668] ((S.B = 'SUN1' AND S.A = M.A))base table[0x7f31f804dcc0] (S, FULL SEARCH) base table[0x7f31f804e318] (M, FULL SEARCH) *** cross join leaf rel pre-process start<<<<< selectivity estimate of table S >>>>>
*** stdesc 1: column = B, scan_type = EQU, key = ('SUN1')stat_info(1052,1,'C')= {#Valid = 'Y', #Type = 'Freq', #Card = 1010, #NDV = 1010, #Nulls = 0, #LP = 15, #LVLS = 1, #CLUF = 0, #NK = 0, #NS = 1010}---> st = 0.00099>>>>> total: 1010, estimate match rows: 1, st: 0.00099; -- st_other: 1.000, n_stdesc: 1---------------- single table access path probe for S ----------------
*** path 1: INDEX33555592 (FULL search), cost: 0.21536>>> best access path: INDEX33555592 (FULL search), cost: 0.21536---------------- single table access path probe for M ----------------
*** path 1: INDEX33555593 (FULL search), cost: 1.20021>>> best access path: INDEX33555593 (FULL search), cost: 1.20021*** cross join leaf rel pre-process complete*** cross join optimization start...---------------- [Join Order 1 of 2] ----------------
{ "S" }{ "M" }<<<<< inner join card estimate (not push down filter) >>>>>
*** stdesc 1: S.A = M.A ---> st: 0.00010stat_info(1052,0,'C')= {#Valid = 'Y', #Type = 'Freq', #Card = 1010, #NDV = 1000, #Nulls = 0, #LP = 15, #LVLS = 1, #CLUF = 0, #NK = 0, #NS = 1010}stat_info(1053,0,'C')= {#Valid = 'Y', #Type = 'Freq', #Card = 10001, #NDV = 10000, #Nulls = 0, #LP = 47, #LVLS = 1, #CLUF = 0, #NK = 0, #NS = 10001}>>>>> l_card: 1, r_card: 10001, estimate join card: 1(X), st: 0.00010; --- st_left = 1.000, st_right = 1.000, st_other = 1.000, n_stdesc = 1---------------- single table access path probe for M ----------------
*** path 1: INDEX33555593 (FULL search), cost: 1.20021>>> best access path: INDEX33555593 (FULL search), cost: 1.20021---------------- inner join method probe (not push down filter) ----------------
*** nest loop inner join cost: 43.37547
*** index inner join is not available
*** hash inner join cost: 2.96903
*** merge inner join is not available>>> current best plan(1, 1), cost: 2.96903 hash inner join[0x7f31d7435b28] (cost: 2.96903, rows: 1)select[0x7f31d7436170] (S.B = 'SUN1')(cost: 0.21536, rows: 1)base table[0x7f31d74367b8] (S, INDEX33555592, FULL SEARCH) (cost: 0.21536, rows: 1010)base table[0x7f31d7436e00] (M, INDEX33555593, FULL SEARCH) (cost: 1.20021, rows: 10001)---------------- [Join Order 2 of 2] ----------------
{ "M" }{ "S" }---------------- inner join method probe (push down filter) ----------------
*** nest loop inner join is not available
*** index inner join is not available
*** hash inner join cost: 3.66938
*** merge inner join is not available---------------- single table access path probe for S ----------------
*** path 1: INDEX33555592 (FULL search), cost: 0.16122>>> best access path: INDEX33555592 (FULL search), cost: 0.16122---------------- inner join method probe (not push down filter) ----------------
*** nest loop inner join is not available
*** index inner join is not available
*** hash inner join cost: 3.73043
*** merge inner join is not available>>> no better plan found*** BEST PLAN FOR THIS STATEMENT ***project[0x7f31f80a3f80] n_exp(4) (cost: 2.96903, rows: 1)hash inner join[0x7f31f80a4d18] (cost: 2.96903, rows: 1)select[0x7f31f80a5710] (S.B = 'SUN1')(cost: 0.21536, rows: 1)base table[0x7f31f80a63d8] (S, INDEX33555592, FULL SEARCH) (cost: 0.21536, rows: 1010)base table[0x7f31f80a6a30] (M, INDEX33555593, FULL SEARCH) (cost: 1.20021, rows: 10001)-------------------------- END --------------------------
(2)语法树
ALTER SESSION [<sess_id>] SET EVENTS '<event_defs>';
<sess_id>:: =0
<event_defs >:: =<event_def> {:<event_def>}
<event_def>:: = <event_name> TRACE <event_qualifiers>
<event_name>:: =IMMEDIATE |
:: =<错误码>|<内部事件号>
<内部事件号>:: =10001|10002|10003|10046|10053
<event_qualifiers>:: = NAME <trace_name >[trace_qualifiers]
<trace_name>::=CONTEXT|BLOCKDUMP|BUFFERS|VPOOLDUMP|HEAPDUMP|DCT_CACHE| SCP_CACHE| ERRORSTACK| REDOHDR| LOGHIST| PLNDUMP|TREEDUMP
<trace_qualifiers >::= <trace_qualifier> {, <trace_qualifier>}
<trace_qualifier>::=OFF|FOREVER|LEVEL <level_value>|DUMP_FMT <BINARY|STRUCT> |
DUMP_FILE <字符串常量>
(3)参数说明
参数名 | 描述 |
sess_id | 为0,表示为所有会话,省略表示为当前会话。 |
event_defs | 确定跟踪事件,可以同时设置多个跟踪事件,各个事件由符号“:”分隔。 |
event_name | IMMEDIATE时,表示诊断立即执行,且仅执行一次,IMMEDIATE不允许与<trace_qualifier>中的FOREVER关键字一起使用。 整数值常量,表示只在对应的错误码或事件号触发时执行。其值取负数就对应系统的错误码;取10000~10999之间的值则专指内部事件号,目前只能取值10001、10002、10003、10046或10053。其中,10001指操作符的监控事件;10002指DDL跟踪的事件;10003指针对全表扫描、嵌套循环连接等特定操作符的监控事件;10046指SQL语句分析和执行过程监控事件;10053指优化器的调试追踪事件。 当ecode 为10053,trace name为context时,对应的level只能是1 或2。 |
level_value | Level 1:输出查询语句计划中单表过滤或者多表连接的优化过程。如果一条语句同时包含了上述两种优化,那么只输出多表连接的优化过程。 Level 2:输出查询语句计划中单表过滤以及多表连接的优化过程。 |
(4)优势
1、深入揭示优化器决策逻辑。
2、仅需通过会话级命令开启,无需修改参数,对生产环境影响较小。
(5)劣势
1、技术门槛高。
2、达梦未公开代价计算公式,不同版本的优化器算法差异较大,导致跟踪结果难以通用化解读。
相关文章:
达梦数据库-学习-23-获取执行计划的N种方法
目录 一、环境信息 二、说点什么 三、测试数据生成 四、测试语句 五、获取执行计划方法 1、EXPLAIN (1)样例 (2)优势 (3)劣势 2、ET (1)开启参数 (2ÿ…...

【数据结构】树形结构--二叉树
【数据结构】树形结构--二叉树 一.知识补充1.什么是树2.树的常见概念 二.二叉树(Binary Tree)1.二叉树的定义2.二叉树的分类3.二叉树的性质 三.二叉树的实现1.二叉树的存储2.二叉树的遍历①.先序遍历②.中序遍历③.后序遍历④.层序遍历 一.知识补充 1.什…...

Baklib构建企业CMS高效协作与安全管控体系
企业CMS高效协作体系构建 基于智能工作流引擎的设计逻辑,现代企业内容管理系统通过预设多节点审核路径与自动化任务分配机制,有效串联市场、技术、法务等跨部门协作链路。系统支持多人同时编辑与版本追溯功能,结合细粒度权限管控模块&#x…...

深入理解 JDK、JRE 和 JVM 的区别
在 Java 中,JDK、JRE 和 JVM 是非常重要的概念,它们各自扮演着不同的角色,却又紧密相连。今天,就让我们来详细探讨一下它们之间的区别。 一、JVM JVM 即 Java 虚拟机,它是整个 Java 技术体系的核心。JVM 提供了 Java…...

LSTM 与 TimesNet的时序分析对比解析
前言 Hi,我是GISerLiu🙂, 这篇文章是参加2025年5月Datawhale学习赛的打卡文章!💡 本文将深入探讨在自定义时序数据集上进行下游分类任务的两种主流分析方法。一种是传统的“先插补后分析”策略,另一种是采用先进的端到…...

图论学习笔记 4 - 仙人掌图
先扔张图: 为了提前了解我们采用的方法,请先阅读《图论学习笔记 3》。 仙人掌图的定义:一个连通图,且每条边只出现在至多一个环中。 这个图就是仙人掌图。 这个图也是仙人掌图。 而这个图就不是仙人掌图了。 很容易发现…...
语音识别算法的性能要求一般是多少
语音识别算法的性能要求因应用场景和实际需求而异,但以下几个核心指标是通用的参考标准。以下是具体说明: 1. 准确率(Accuracy) 语音识别的核心性能指标通常是词错误率(WER, Word Error Rate)和字符错误率…...
百度ocr的简单封装
百度ocr地址 以下代码为对百度ocr的简单封装,实际使用时推荐使用baidu-aip 百度通用ocr import base64 from enum import Enum, unique import requests import logging as logunique class OcrType(Enum):# 标准版STANDARD_BASIC "https://aip.baidubce.com/rest/2.0…...

华为高斯数据库(GaussDB)深度解析:国产分布式数据库的旗舰之作
高斯数据库介绍 一、高斯数据库概述 GaussDB是华为自主研发的新一代分布式关系型数据库,专为企业核心系统设计。它支持HTAP(混合事务与分析处理),兼具强大的事务处理与数据分析能力,是国产数据库替代的重要选择。 产…...

LWIP 中,lwip_shutdown 和 lwip_close 区别
实际开发中,建议对 TCP 连接按以下顺序操作以确保可靠性: lwip_shutdown(newfd, SHUT_RDWR); // 关闭双向通信 lwip_close(newfd); // 释放资源...

xml双引号可以不转义
最近在开发soap方面的协议,soap这玩意,就避免不了XML,这里我用到了pguixml库。 输入了这个XML后,发现<和>都被转义,但是""没有被转义,很是奇怪啊。毕竟去网上随便一搜转义字符,…...
互联网大厂Java面试:从Spring到微服务的挑战
文章简介 在这篇文章中,我们将模拟一场互联网大厂的Java面试,场景设置为企业协同与SaaS。面试官提出了一系列技术问题,涵盖了Java核心语言、Spring框架、微服务架构等技术点,并结合实际业务场景进行循序渐进的提问。最后…...

兰亭妙微 | 图标设计公司 | UI设计案例复盘
在「33」「312」新高考模式下,选科决策成为高中生和家长的「头等大事」。兰亭妙微公司受委托优化高考选科决策平台个人诊断报告界面,核心挑战是:如何将复杂的测评数据(如学习能力倾向、学科报考机会、职业兴趣等)转化为…...

OpenCV视觉图片调整:从基础到实战的技术指南
引言:数字图像处理的现代意义与OpenCV深度应用 在人工智能与计算机视觉蓬勃发展的今天,图像处理技术已成为多个高科技领域的核心支撑。根据市场研究机构Grand View Research的数据,全球计算机视觉市场规模预计将从2022年的125亿美元增长到2030年的253亿美元,年复合增长率达…...
C#日期和时间:DateTime转字符串全面指南
C#日期和时间:DateTime转字符串全面指南 在 C# 开发中,DateTime类型的时间格式化是高频操作场景。无论是日志记录、数据持久化,还是接口数据交互,合理的时间字符串格式都能显著提升系统的可读性和兼容性。本文将通过 20 实战示例…...

手机收不到WiFi,手动输入WiFi名称进行连接不不行,可能是WiFi频道设置不对
以下是电脑上分享WiFi后,部分手机可以看到并且能连接,部分手机不行,原因是:频道设置为5GHz,修改成,任何可用频率,则可...

批量文件重命名工具
分享一个自己使用 python 开发的小软件,批量文件重命名工具,主要功能有批量中文转拼音,简繁体转换,大小写转换,替换文件名,删除指定字符,批量添加编号,添加前缀/后缀。同时还有文件时…...

ATPrompt方法:属性嵌入的文本提示学习
ATPrompt方法:属性嵌入的文本提示学习 让视觉-语言模型更好地对齐图像和文本(包括未知类别)。 一、问题场景:传统方法的局限 假设你有一个模型,能识别图像中的物体并关联到文本标签(如“狗”“猫”)。 传统方法: 用“软提示”(可学习的文本标签)和“硬类别标记”…...

14.「实用」扣子(coze)教程 | Excel文档自动批量AI文档生成实战,中级开篇
随着AI编程工具及其能力的不断发展,编程将变得越来越简单。 在这个大趋势下,大师兄判断未来的编程将真正成为像office工具一样的办公必备技能。每个人通过 (专业知识/资源编程)将自己变成一个复合型的人才,大大提高生…...

对于geoserver发布数据后的开发应用
对于geoserver发布数据后的开发应用 文章目录 对于geoserver发布数据后的开发应用[TOC](文章目录) 前言一、geosever管理地理数据的后端实用方法后端进行登录geoserver并且发布一个矢量数据前置的domain数据准备后端内容 总结 前言 首先,本篇文章仅进行技术分享&am…...
液体散货装卸管理人员备考指南
备考液体散货类装卸管理人员资格考试,需要系统学习理论知识、熟悉实操流程,并掌握相关法规标准。以下是备考建议,分为四个阶段: 一、明确考试内容与要求 考试范围 理论知识:液体散货(石油、化学品、液化…...

基于Qlearning强化学习的二阶弹簧动力学模型PID控制matlab性能仿真
目录 1.算法仿真效果 2.算法涉及理论知识概要 2.1 传统PID控制器 2.2 Q-Learning强化学习原理 2.3 Q-Learning与PID控制器的融合架构 3.MATLAB核心程序 4.完整算法代码文件获得 1.算法仿真效果 matlab2024B仿真结果如下(完整代码运行后无水印)&a…...
【监控】Spring Boot 应用监控
这段配置是 Spring Boot 应用中对 Actuator 和 Micrometer 监控系统的配置,用于将应用的指标暴露给 Prometheus 进行收集。下面我将详细介绍这种配置方式及其提供的指标。 配置说明 这个配置主要涉及 Spring Boot Actuator 和 Micrometer 两个核心组件:…...
「MATLAB」计算校验和 Checksum
什么是校验和 是一个算法,将一串数据累加,得到一个和。 MATLAB程序 function c_use Checksum(packet) %Checksum 求校验和 % 此处checksum提供详细说明checksum 0;for i 1:length(packet)value hex2dec(packet(i));checksum checksum value; …...

【AS32X601驱动系列教程】SMU_系统时钟详解
在现代嵌入式系统中,时钟与复位管理是确保系统稳定运行的关键。我们的SMU(系统管理单元)模块专注于此核心任务,通过精准的时钟配置和复位控制,为整个系统提供可靠的时序保障。 SMU模块的主要功能是完成时钟和复位的管…...

09 接口自动化-用例管理框架pytest之allure报告定制以及数据驱动
文章目录 一、企业级的Allure报告的定制左边的定制:右边的定制:1.用例的严重程度/优先级2.用例描述3.测试用例连接的定制4.测试用例步骤的定制5.附件的定制 二、企业中真实的定制有哪些?三、allure报告如何在本地访问四、allure中的数据驱动装…...

React笔记-Ant Design X样本间对接智谱AI
目标 后端对接是智谱AI。 过程 先把Ant Design X样本间搭建好,通过此篇博文获得智谱AI的URL等 智谱AI开放平台 看下此篇博文的“使用API接入” 通义千问 - Ant Design X 将样本间代码的: const [agent] useXAgent({request: async ({ message }, { …...

网络安全-等级保护(等保) 3-2 GB/T 28449-2019《信息安全技术 网络安全等级保护测评过程指南》-2018-12-28发布【现行】
################################################################################ GB/T 28448-2019 《信息安全技术 网络安全等级保护测评要求》规定了1~4及的测评要求以及对应级别云大物移工的测评扩展要求,与GB/T 22239-2019 《信息安全技术 网络安全等级保护…...

【Bug】--node命令加载失败
环境:本地已经安装好了nodejs,并且已经加入了环境变量path 报错: (解释器) PS D:\桌面文件\pythonProject\vue-fastapi-admin\web> npm i -g pnpm npm : 无法加载文件 D:\桌面文件\node-v22.14.0-win-x64\node-v22.14.0-win-x64\npm.p…...

Java 大视界 -- 基于 Java 的大数据分布式存储在视频会议系统海量视频数据存储与回放中的应用(263)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...