トランザクションに独立性があることで、アクティブな各トランザクションは、他のアクティブなトランザクションがシステム内に存在していない場合と同様に動作できます。TimesTenでは、トランザクションの分離レベルとしてANSI SerializableおよびANSI Read_Committedの2つがサポートされています。
リピータブル・リードが保証されます。つまり、同じ問合せを複数回実行するトランザクションで、毎回同じ結果セットが戻されることが保証されます。他のトランザクションで、戻された行に対してUPDATEまたはCREATE VIEWを実行することはできません。また、問合せ条件を満たす新しい行に対してINSERTを実行することもできません。
この分離レベルでは、読取りユーザーが書込みユーザーをブロックできます。また、書込みユーザーは、読取りユーザーおよび他の書込みユーザーをブロックできます。
この分離レベルでは、読取りユーザーは書込みユーザーをブロックしません。また、書込みユーザーも読取りユーザーをブロックしません。これは、読取りおよび書込みを行うデータ項目が同じである場合でも同様です。読取りユーザーおよび書込みユーザーがブロックを実行せずに同じ項目にアクセスできるようにするには、更新する項目のプライベート・コピーを書込みユーザーが作成します。これらのプライベート・コピーは、トランザクションがコミットされるとパブリックになります。また、トランザクションがロールバックされると破棄されます。したがって、実行中のトランザクションによって更新された項目を別のトランザクションで読み取ると、その項目の更新前の状態が取得されます。コミットされていない状態を取得することはできません。
この分離レベルでは、非リピータブル・リードが可能です。Read_Committedトランザクションで同じ問合せが複数回実行される場合は、更新操作を行うトランザクションのコミットの影響で、結果が異なることがあります。
TimesTenのすべてのデータ・アクセスでは、ロックまたはコピーが実行されて、独立性が確保されます。ただし、排他モード接続(『Oracle TimesTen In-Memory Database APIおよびSQLリファレンス・ガイド』のExclAccessに関連する項を参照)の場合は例外です。この場合は、データ・ストアへの他の接続が許可されないため、常に独立性が確保されます。アプリケーションでトランザクションの分離レベルを設定するには、SQLSetConnectOption ODBC関数をSQL_TXN_ISOLATIONフラグとともに使用するか、またはIsolation接続属性を設定します。
マテリアライズド・ビューを常に一貫性がある状態に保つために、すべてのビュー・メンテナンス処理はシリアライズ可能分離レベルで効果的に実行されます。これは、トランザクションがコミット読取り分離レベルの場合も同様です。これは、トランザクションで、ビュー・メンテナンス時に読み取られるすべてのデータ項目に読取りロックを設定することを意味します。ただし、これらのロックは、トランザクションが終了するまで保持されるのではなく、ビュー・メンテナンス処理をトリガーしたINSERT文、UPDATE文またはCREATE VIEW文が終了すると解除されます。
TimesTenでは、行レベル・ロックおよびデータ・ストア・レベル・ロックがサポートされています。
接続ごとに異なるロック・レベルを使用できます。ただし、データ・ストア・レベル・ロックを使用している接続が1つでも存在すると、並行性が低下します。パフォーマンスについては、『Oracle TimesTen In-Memory Database Java開発者およびリファレンス・ガイド』の最適なロック方法の選択に関する項を参照してください。TimesTen Cアプリケーションのチューニングについては、『Oracle TimesTen In-Memory Database C開発者およびリファレンス・ガイド』の最適なロック方法の選択に関する項を参照してください。