问题

问题:协调版本的速度较慢或者需要较长时间才能完成

Last Published: January 5, 2021

描述

在执行调解时,有时协调过程较慢或者需要较长时间才能完成。

在执行协调时,必须了解协调在内部执行的过程,以及组织的工作流可能会对协调性能产生重大影响的原因。

注: 本文仅适用于 ArcGIS 8.x 和 9.x 版本。 更高版本的 ArcGIS 可能包含不同的功能,对于菜单、命令和地理处理工具,可能具有不同的名称和位置。

原因

在协调过程中,可将在源版本中执行的所有编辑内容、针对目标版本进行编辑和协调的版本、作为主要版本或 DEFAULT 版本的目标版本复制到目标版本中,并通过冲突解决对话框来检测和显示任何冲突。

执行协调所需的时间取决于编辑内容的数量。 要更好地理解它取决于编辑内容数量的原因,需要了解版本化地理数据库的状态树。

将由 state_id 唯一标识在版本化地理数据库中进行的每次编辑。 版本化地理数据库中的状态集合称为状态树,并且每个状态都会参与状态谱系,状态谱系源自状态 0(基本状态)。 状态树中的每个谱系代表不同的编辑会话或不同的版本。

状态树与版本的唯一关系是版本所引用的状态。 但是,版本等级将影响可以相互协调的版本。 只能对直接前导版本的版本执行协调,例如主要版本或主要版本之前的版本等。

但是,这并未显示版本如何与地理数据库状态相关的完整故事。 在以下示例中,请注意版本 Editor2 是根据 Trans_mnt 版本创建的辅助版本,但是状态树的结构以及版本与特定状态的对应方式不可见。

在此等级中,Editor1 可以协调为 Trans_mnt 或 DEFAULT。

[O-Image] 示例:版本树

在协调版本和目标版本时,可将源版本谱系中所有与目标版本谱系不通用的编辑内容复制到目标版本谱系中的新状态。 在以下示例中,Trans_mnt 和 Editor1 具有通用前导状态,即状态 40。

可以在此处看到版本的谱系为:

  • Trans_mnt: 0, 40, 41, 52
  • Editor1: 0, 40, 78, 92, 97
  • Editor2: 0, 40, 56
[O-Image] 协调前的状态树

最高状态在两个版本的谱系中通用。 可将状态 78、92 和 97 的无冲突编辑内容分别复制到目标版本的谱系。 可将 Editor1 谱系(78、92 和 97)的唯一状态复制到 Trans_mnt 谱系的新状态。 地理数据库中的新状态为状态 99。

[O-Image] 将 Editor1 协调为 Trans_mnt 后的状态树

上图未说明状态 78、92 和 97 中的编辑内容数量。 如果针对每个状态的要素类,仅存在一个编辑内容,则协调状态 99 仅包含在状态 78、92 和 97 中执行的三个编辑内容,由此在要素类添加表和删除表中生成 3 个新行。

但是,如果针对状态 92 更新了 50,000 个要素,则在协调过程中,必须将所有 50,000 个编辑内容都复制到状态 99,并将其插入要素类添加表和删除表中。 因此,状态 92 将有 50,000 个编辑内容,状态 99 将另有 50,000 个编辑内容。

此外,地理数据库必须标识版本的两个谱系之间的更改,以标识协调过程中的冲突。 冲突分为以下几类:

  • Updates/Update 冲突。
  • Update/Delete 冲突。
  • Delete/Update 冲突。

可将不冲突的编辑内容或者与冲突对象相关的编辑内容复制到目标版本的协调状态。 冲突的编辑内容将显示在冲突解决对话框中。

源版本谱系中的编辑内容数量将会影响协调的性能。

工作流必须充分考虑这些情况。

解决方案或解决方法

在处理版本化地理数据库时,用于创建和协调版本的工作流将非常重要。 对于一个主要版本的多个辅助版本,将辅助版本协调和发布到主要版本的顺序同样非常重要。

如果自创建和编辑源版本以来,未对目标版本进行任何修改,则协调过程无需复制任何修改内容,因为每个版本将共享相同的谱系。 在这些情况下,如果用户在执行协调后发布,则源版本和目标版本将更新为引用相同的数据库状态。

在以下示例中,自创建 Editor1 和 Editor2 版本以来,尚未对 Trans_mnt 版本或主要版本进行任何修改。 Trans_mnt 版本引用状态 40,即 Editor1 和 Editor2 版本的通用前导状态。

以下是协调前的状态树示例。 请注意,这些版本的谱系为:

  • Trans_mnt: 0, 40
  • Editor1: 0, 40, 78, 92, 97
  • Editor2: 0, 40, 56
[O-Image] 协调前的状态树

请注意,Trans_mnt 版本引用状态 40。 Editor1 版本的谱系为:0, 40, 78, 92, 97。

将 Editor1 与 Trans_mnt 版本进行协调时,无需将 Editor1 当前谱系中的所有编辑内容复制到 Trans_mnt 版本的新状态。

以下是协调后的状态树示例。 将 Editor1 版本与 Trans_mnt 版本进行协调。 在这种情况下,Trans_mnt 版本引用的状态与 Editor1 遵循相同的谱系,因此无需将编辑内容复制到协调状态。

[O-Image] Editor1 协调后的状态树

如果在状态 92 中执行了 50,000 个更新内容,则不会将编辑内容复制到状态 99,因为这些编辑内容已存在于版本的谱系中。 在这种情况下,由于未发现冲突,也无需将编辑内容复制到目标版本的状态,因此协调速度将非常快。

单击“发布”命令时,Editor1 和 Trans_mnt 版本将引用相同的状态:状态 99。

[O-Image] 发布 Editor1 和 Trans_mnt

随着工作流的继续,将协调 Editor2 版本并将其发布到 Trans_mnt。

[O-Image] Editor2 协调为 Trans_mnt

对于此协调,已修改 Trans_mnt 或主要版本并将引用新状态,例如,状态 99,它位于与 Editor2 版本不同的谱系上。 要根据 Editor2 版本协调编辑内容,需要将状态 56 中的所有编辑内容都复制到 Trans_mnt 谱系上的新状态。

当根据同一主要版本创建多个辅助版本时,协调操作会始终将一个谱系中的编辑内容复制到另一个谱系。 要最大程度地减少要复制的数据量,请首先协调并发布具有最大编辑内容数量的版本,由此可减少复制并存储在要素类的添加表和删除表中的记录数。

在辅助版本或批量编辑中执行大量编辑内容时,了解工作流注意事项将对协调尤为重要。 对于用于批量编辑的版本,在修改目标版本之前,必须尝试将此版本与其目标版本进行协调。

文章 ID:000009113

从 ArcGIS 专家处获得帮助

联系技术支持部门

下载 Esri 支持应用程序

转至下载选项

相关信息

发现关于本主题的更多内容