Share via


コンカレンシーの種類

カーソルのコンカレンシーの低下の問題を解決するために、ODBC では、次の 4 種類のカーソルコンカレンシーが公開されています。

  • 読み取り専用 カーソルはデータを読み取ることができますが、データを更新または削除することはできません。 これが既定の変換の種類です。 DBMS は、反復可能読み取り分離レベルとシリアル化可能分離レベルを適用するために行をロックする場合がありますが、書き込みロックの代わりに読み取りロックを使用できます。 これにより、他のトランザクションが少なくともデータを読み取ることができるため、コンカレンシーが高くなります。

  • ロッキング カーソルは、結果セット内の行を更新または削除できるようにするために必要な最下位レベルのロックを使用します。 これは通常、コンカレンシー レベルが非常に低くなります。特に、反復可能な読み取りとシリアル化可能なトランザクション分離レベルです。

  • 行バージョンを使用したオプティミスティック コンカレンシーと値 を使用したオプティミスティック コンカレンシー カーソルはオプティミスティック コンカレンシーを使用します。最後の読み取り以降に行が変更されていない場合にのみ、行が更新または削除されます。 変更を検出するために、行のバージョンまたは値を比較します。 カーソルが行を更新または削除できる保証はありませんが、ロックを使用する場合よりもはるかにコンカレンシーが高くなります。 詳しくは、次のセクション「オプティミスティック コンカレンシー」を参照してください。

アプリケーションは、SQL_ATTR_CONCURRENCY ステートメント属性でカーソルを使用するコンカレンシーの種類を指定します。 サポートされている型を確認するために、SQL_SCROLL_CONCURRENCY オプションを使用して SQLGetInfo を呼び出します。