トランザクション サイズの管理

JDBC ドライバーのダウンロード

トランザクションを扱うときは、トランザクションをできるだけ短くすることが重要です。 setAutoCommit メソッドを使用して有効または無効にすることが可能な、既定の自動コミット モードでは、すべてのアクションが自動的にコミットされます。 このモードは、ほとんどの開発者にとっては最も簡単に扱えるモードです。

手動トランザクションを使用するときは、トランザクションを可能な限り迅速にコミットする必要があります。 開いているトランザクションを保持していると、他のユーザーがデータにアクセスできなくなります。 たとえば、ロールバックの呼び出しを catch ブロック内に配置し、コミットの呼び出しを finally ブロック内に配置するというプログラミング手法が望ましい場合があります。 ただしこの方法は、アプリケーションの設計によって異なります。

コンカレンシーを向上させるには、トランザクションのサイズを小さくしておきます。 たとえば、手動トランザクションを開始し、20,000 行のテーブル内の 10,000 行を変更すると、他のすべてのユーザーは、たとえデータを読み取ろうとしているだけであっても、テーブルの半分にアクセスできなくなります。 変更する行を 2,000 行に減らせば、テーブルの 90% はアクセス可能になります。

さらに、アプリケーションでブロックの問題が発生する可能性がある場合は、ロック タイムアウトの設定を使用してください。 タイムアウトを設定するには、setLockTimeout メソッドを使用します。 ロック タイムアウトの既定値は -1 です。これは、ロックを待機している間に無期限にブロックすることを意味します。 ロック タイムアウトを 30 秒に設定すると、別の接続によってブロックされている接続が 30 秒でタイムアウトになります。

関連項目

JDBC ドライバーによるパフォーマンスと信頼性の強化