操作方法
版本化查询的性能(响应时间)会受到需要从添加表和删除表中过滤的行数的影响。
添加表或删除表的行数达到多少会影响版本化查询性能,并没有一个确定的数值标准。 从逻辑上讲,在版本查询执行过程中,过滤增量表中的行所产生的成本会影响性能。
本文提供了一种报告机制,供管理员执行,该报表可以显示特定对象类的 DEFAULT 版本沿袭中存在的行数。
如果版本查询的性能受到增量表中行数的影响,解决方案是将所有版本与 DEFAULT 版本进行协调,或者使用 ArcObjects 方法推荐的协调顺序,仅协调那些阻止 DEFAULT 版本被压缩的版本,然后压缩数据库。 通过将增量表中的行压缩回对象类的基表,可以减少版本查询执行时的工作量,从而提高性能。
本文档提供的步骤演示了如何获取版本化表的 registration_id,如何在 SQL*Plus 中定义局部变量,如何通过 SQL 语句设置这些变量的值,以及如何执行一条 SQL 语句来返回以下数据:DEFAULT 版本沿袭的增量表中的行数、DEFAULT 版本沿袭的添加表和删除表的行数百分比,以及添加表和删除表的总行数。
以下示例的目标是了解要素类 Primary Overhead 在 DEFAULT 版本沿袭的增量表中包含多少行数据。
SQL> SELECT registration_id
2 FROM sde.table_registry
3 WHERE owner = 'ADMIN' AND table_name = 'PRIMARYOH';
REGISTRATION_ID
---------------
67
SQL> VARIABLE lineage_id NUMBER;
SQL> VARIABLE lineage_name NUMBER;
SQL> BEGIN
2 SELECT state_id INTO :lineage_id FROM sde.versions WHERE owner = 'SDE' AND name = 'DEFAULT';
3 END;
4 /
PL/SQL procedure successfully completed.
SQL> BEGIN
2 SELECT lineage_name INTO :lineage_name FROM sde.states WHERE state_id = :lineage_id;
3 END;
4 /
PL/SQL procedure successfully completed.
SQL> SELECT
2 (SELECT COUNT(*) FROM admin.a67
3 WHERE sde_state_id IN
4 (SELECT lineage_id FROM sde.state_lineages
5 WHERE lineage_name = :lineage_name AND lineage_id <= :lineage_id)) AS "NUMBER OF ROWS",
6 ROUND((SELECT COUNT(*) FROM admin.a67
7 WHERE sde_state_id IN
8 (SELECT lineage_id FROM sde.state_lineages
9 WHERE lineage_name = :lineage_name AND lineage_id <= :lineage_id))
10 /(SELECT COUNT(*) FROM admin.a67) * 100, 2) AS "PERCENTAGE OF ROWS",
11 (SELECT COUNT(*) FROM admin.a67) AS "TOTAL ROWS"
12 FROM dual;
NUMBER OF ROWS PERCENTAGE OF ROWS TOTAL ROWS
-------------- ------------------ ----------
17413 26.78 65032
SQL> SELECT
2 (SELECT COUNT(*) FROM admin.d67
3 WHERE deleted_at IN
4 (SELECT lineage_id FROM sde.state_lineages
5 WHERE lineage_name = :lineage_name AND lineage_id <= :lineage_id)) AS "NUMBER OF ROWS",
6 ROUND((SELECT COUNT(*) FROM admin.d67
7 WHERE deleted_at IN
8 (SELECT lineage_id FROM sde.state_lineages
9 WHERE lineage_name = :lineage_name AND lineage_id <= :lineage_id))
10 /(SELECT COUNT(*) FROM admin.d67) * 100, 2) AS "PERCENTAGE OF ROWS",
11 (SELECT COUNT(*) FROM admin.d67) AS "TOTAL ROWS"
12 FROM dual;
NUMBER OF ROWS PERCENTAGE OF ROWS TOTAL ROWS
-------------- ------------------ ----------
16361 27.09 60384
文章 ID: 000010102
获取来自 ArcGIS 专家的帮助
下载 Esri 支持应用程序