Performance with CommitLevel
Introduction to File Server Mode
The Apollo CommitLevel property was designed to give users more control over how data is buffered by Apollo and by Windows. There are three values for CommitLevel:
- clFull (slowest, uses no buffering)
- clNormal (DEFAULT, good performance, uses Windows buffering)
- clNone (fastest performance, uses Apollo and Windows buffering)
Selecting the right setting
CommitLevel may not be the ideal name, and the default value could possible have ben clNone instead of clNormal, but with that aside, lets look at how the various settings of CommitLevel can dramatically affect performance:
clFull
1) CommitLevel = clFull (SLOWEST) This mode forces Apollo and Windows to always write to disk. There is a big performance penalty to use this mode, but the data is always flushed by both Apollo and Windows.
clNormal
2) CommitLevel = clNormal (GOOD PERFORMANCE) (DEFAULT) This mode is ideal for desktop configurations where there is a single user working on the data and you want to ensure that data is always saved to disk. clNormal mode provides decent performance because it lets Windows manage the memory as it normally does but it still doesn't use Apollo/SDE's internal buffering. Apollo always flushes its buffers and lets Windows do its thing.
clNone
3) CommitLevel = clNone (OUTSTANDING PERFORMANCE) This mode is ideal for either Desktop or LAN/Network configurations where you want data to be managed as fast as possible. With clNone, we take full advantage of Apollo's internal buffering and Windows memory, which gives applications outstanding performance.
In Summary
These CommitLevels were designed to help mange power outages or unexpected application termination. In other words, the rare case that the power goes out or that your application is closed unexpectedly. Setting CommitLevel to clFull and, to a lesser extent, clNormal, will provide a reasonable safety net for ensuring that data is actually written to disk because there will be a high degree of probability that the data will have already been "flushed" to disk before the failure event. That's why you may have noticed some performance changes between old versions of Apollo and new versions. In summary, we recommend that CommitLevel be set to clNone.