Home    |    Concepts   |   API   |   Samples
Concepts > Versioning > Basic Principles
Trimming

The state tree is automatically trimmed every time a save operation is executed; for example, during or at the end of an edit session. Trimming shrinks a linear branch of the state tree by removing states that are no longer required to represent a version. Child states will replace parent states within the branch, and all states that deviate from the direct path will be discarded. Trimming reduces the depth of the state tree and improves query performance.

In the adjoining diagram, at state 8, the edit session is saved, any uncommitted changes are written to the database, and the state tree is trimmed.

Trimming also occurs automatically when the number of states in a lineage exceeds an application threshold determined by a registry setting, HKEY_CURRENT_USER\Software\ESRI\Geodatabase\Settings\UndoRedoSize. The default maximum number of states in a lineage is 30; above 30, the state tree is automatically trimmed. Although this application setting may be altered, the potential negative impact on performance should be considered.

State tree trimming does not occur when many editors are simultaneously editing one version; for example, the DEFAULT version. As the state trees of any active edit session are not trimmed, this can result in a number of orphan states. Trimming also does not occur when a child version is reconciled with the parent. To reduce the state tree after a round of version reconcile and post, the database should be compressed.

feedback | privacy | legal