タグ

2013年6月27日のブックマーク (3件)

  • IDEA * IDEA

    ドットインストール代表のライフハックブログ

    IDEA * IDEA
  • 表ロックの種類と相互関係 - オラクル・Oracleをマスターするための基本と仕組み

    ● ロックを取得可能 × ロックの取得は不可能 ▲ ロックを取得可能であるが別セッションからの同一行へのアクセスは待機させられる(TX待機) ▼ ロックを取得可能であるが別セッションからの プライマリキー制約、ユニーク制約 に該当する行の INSERT は待機させられる(TX待機) ▲ ▼ に関して:トランザクションが分散トランザクションの場合には初期化パラメータによってタイムアウトが発生する。 参考 ⇒ ORA-02049: タイムアウト: 分散トランザクションがロックを待機しています。 共有ロックと排他ロック 共有ロック 共有ロックとは主に参照を行う際に掛けるロックであり複数設定することも可能。しかし SELECT の度にロックを掛けているわけではなく、データや表定義が変更されると困る操作のときにだけ掛けられる。 例: 更新予定の行を宣言して SELECT する(RSロック)、インデッ

  • SELECT FOR UPDATE - オラクル・Oracle SQL 入門

    SELECT 時に明示的な行ロックを行なう方法 SELECT 〜 FOR UPDATE は行レベルでロックをするための SQL 文である。そのために FOR UPDATE で SELECT した後のプロシージャ処理で処理中のレコードが更新されたり、削除されたりすることを防ぐことが可能である。 しかし、一度に大量のレコードをロックしたり、表全体をロックするような大規模のロックは 同時操作性にも問題が生ずるので極力控えるように設計したい。要件上、どうしても必要な場合には LOCK TABLE などの表ロックを検討する。 SELECT 〜 FOR UPDATE [WAIT | NOWAIT] Oracle 9i から FOR UPDATE の WAIT に待機秒数が指定できる。(※1) SELECT 〜 WHERE ... FOR UPDATE [OF [table_name.]column_n