Snapshot mode allows you to get the advantages of the Lazy queries avoiding their side effects. When query is executed, the query processor chooses the best indexes, does all index processing and creates a snapshot of the index at this point in time. Non-indexed constraints are evaluated lazily when the application iterates through the ObjectSet
result set of the query.
Snapshot queries ensure better performance than Immediate queries, but the performance will depend on the size of the result set.
As the snapshot of the results is kept in memory the result set is not affected by the changes from the caller or from another transaction.
Client/Server applications with the risk of concurrent modifications should prefer Snapshot over Lazy mode to avoid side effects from other transactions.