タグ

ブックマーク / www.shift-the-oracle.com (2)

  • 外部キー制約による表ロック - オラクル・Oracleをマスターするための基本と仕組み

    外部キー制約項目の更新(削除)によるロックエスカレーション 外部キー制約を使用する場合、原則的に子表の外部キーにはインデックス(第一キーに含む)を設定するようにしたい。 というのは、インデックスを設置しないと整合性チェックは子表全体のテーブルフルスキャンが実行される。 そのためにデッドロックが発生する可能性を抱えることになってしまう。 インデックスの容量と更新時のコストは少なからず消費してしまうもののデッドロックに悩まされるのとは比べられない。 ※ この状態がロックエスカレーションというのが適切かどうかはわからない。 オラクルはロックエスカレーションが発生しない行レベルによるロッキングと宣言しているので、 ロックエスカレーションと位置付けてはいない可能性もある。 しかし、実質的には行ロックと思っている状態が表ロックにエスカレート(拡大)しているケースではあることには変わりない。 外部キー制

  • 自律型トランザクション - オラクル・Oracleをマスターするための基本と仕組み

    自律型トランザクション (Autonomous Transactions) 自律型トランザクションプラグマ (PRAGMA AUTONOMOUS_TRANSACTION) は、メイントランザクション(以降 MT)とは独立した 自律トランザクション(以降 AT) を宣言するためのものである。 注意:自立型トランザクションという表記は正しくない。 自律型トランザクションのメリット SLECT で呼び出す関数の内部で DML を実行することが可能 通常 SELECT で呼び出す関数に DML が含まれると ORA-14551: 問合せの中でDML操作を実行することはできません。 とエラーが発生するが、この関数を自律型トランザクション宣言すると SELECT 内でテーブルデータを更新することができる。 MT 処理の中にエラー処理のログや監査のログを永続テーブルに書き込むことなどが可能 2つのトラン

  • 1