タグ

ロックに関するchanpon0のブックマーク (10)

  • Rails4で楽観的ロックを実装する - Rails Webook

    ActiveRecordでは、lock_versionというカラムを追加するだけで楽観的ロックを利用できます。 レコード単位でlock_versionを保持しているため、レコード単位での更新が競合した場合、ActiveRecord::StaleObjectError例外が発生します。 動作確認 Rails 4.1 ActiveRecord 4.1 目次 楽観的ロックとは 楽観的ロック(ロックバージョン)の実装 楽観的ロックの使い方 楽観的ロックを画面から扱う 1. 楽観的ロックとは楽観的ロックとは、基的には変更が競合しないだろうという状況に向いたロック手法です。 テーブルにロックバージョンカラムを持たせ、レコードを変更するたびにロックバージョンを更新し、更新しようとしたときにロックバージョンが異なっている場合には、更新の競合が発生したと判断しレコードを更新しないようにします。 Activ

    Rails4で楽観的ロックを実装する - Rails Webook
  • Oracle 11gでテーブルをロックしたままのセッションを削除する - 小さい頃はエラ呼吸

    はじめに Oracleのテーブルをロックするようなプログラムを作成中に、ロールバック処理に不備があるとテーブルがロックされたままになってしまいます。 こうなってしまった場合に、ロックしているセッションを強制的に終了させる方法をまとめました。 機能で学ぶ Oracle Database入門posted with amazlet at 14.06.16翔泳社 (2013-10-30) 売り上げランキング: 23,228 Amazon.co.jpで詳細を見る ロックしているセッションを特定する ロックをつかんでいるセッションを特定するには、以下のサイトに記載されているSQLを使います。 このSQLでは、テーブルをロックしているセッションのSIDとシリアルNoを知ることができます。 Oracleでテーブルロックしているsessionを殺す - Qiita ロックしているセッションを終了させる セッ

    Oracle 11gでテーブルをロックしたままのセッションを削除する - 小さい頃はエラ呼吸
  • MySQL - InnoDBのロック関連まとめ - Qiita

    メモ開放。InnoDBの行ロック関連について、それぞれの項目が必ずしも並列関係にあるわけではないが、以下のようにまとめていく。 排他ロックと共有ロック SELECT ~ FOR UPDATE SELECT ~ LOCK IN SHARE MODE 排他ロックと共有ロック 読み取りを許すかどうかの違い。排他ロックは対象行を全てのクエリからロックするため、UPDATEやDELETEなどの更新クエリはもちろん、SELECTなどの読み取りクエリも通さない。共有ロックは更新クエリを通さないが、読み取りクエリは通す。 (追記:排他ロックは分離レベルによってはSELECTを通すとのこと。 公式 ) 排他ロックは全てのクエリを通さず、共有ロックは排他ロックを伴うクエリを通さない、と言い換えたほうがいいかもしれない。 公式では共有ロックは同トランザクション内のselectを許し、排他ロックは同トランザクショ

    MySQL - InnoDBのロック関連まとめ - Qiita
  • InnoDBのロックの範囲とネクストキーロックの話 - かみぽわーる

    この記事はMySQL Casual Advent Calendar 2013 3日目の記事です。 はじめに 以前にSELECT ... FOR UPDATEとロックの挙動 - walf443's blogの記事にTwitterで少し言及したんですが、それの補足というか、InnoDBのロックの範囲について僕はこう理解していますよという話です。 MySQLといえば、InnoDBをネットワークサーバとして使うためのフレームワークであり、SQLはInnoDBのインデックスにアクセスするためのDSLといっても過言ではないでしょう。 InnoDBのロックとはつまるところインデックス行のロックなので、InnoDBのロックの範囲を理解するためにInnoDBのインデックスについて少し前置きしておきます(だいぶ端折ったけど長くなった…)。 クラスタインデックスとセカンダリインデックス すでにInnoDBのイン

    InnoDBのロックの範囲とネクストキーロックの話 - かみぽわーる
  • MySQL InnoDBのネクストキーロック おさらい - SH2の日記

    MySQLのInnoDBストレージエンジンは行ロックをサポートしています。しかしOracleと同じ感覚でアプリケーションを作っていると、思わぬところでデッドロックに出くわすことがあります。これはInnoDBのロック範囲がOracleよりも微妙に広いためです。 実際の例で確認してみましょう。 mysql> select * from t; +----+------+ | c1 | c2 | +----+------+ | 10 | a | | 15 | a | | 20 | a | | 25 | a | | 30 | a | | 35 | a | | 40 | a | | 45 | a | | 50 | a | +----+------+c1列は主キーになっています。1つめのセッションで以下のSQLを実行します。 mysql> set tx_isolation = 'repeatable-r

    MySQL InnoDBのネクストキーロック おさらい - SH2の日記
  • MySQL :: MySQL 8.0 リファレンスマニュアル :: 15.7.2.3 一貫性非ロック読み取り

    一貫性読み取りとは、InnoDB がマルチバージョンを使用して、ある時点でのデータベースのスナップショットをクエリーに提供することを意味します。 クエリーには、その時点よりも前にコミットされたトランザクションによる変更のみが表示され、その時点よりもあとのトランザクションまたはコミットされていないトランザクションによる変更は表示されません。 このルールの例外として、同じトランザクション内の以前のステートメントによる変更はクエリーに表示されます。 この例外によって、次のような異常が発生します。テーブル内の一部の行を更新すると、更新された行の最新バージョンが SELECT に表示されますが、いずれかの行の旧バージョンも表示される可能性があります。 その他のセッションで同じテーブルが同時に更新される場合、その異常は、データベースに存在しない状態でテーブルが表示される可能性があることを意味します。

    chanpon0
    chanpon0 2013/09/05
    トランザクション中は、同じselectデータを得る。別トランザクションでcommitされていても。for updateしましょう。
  • ke-tai.org > Blog Archive > MySQLとPostgreSQLのRepeatable Read時の挙動の違いについて

    MySQLとPostgreSQLのRepeatable Read時の挙動の違いについて Tweet 2010/7/2 金曜日 matsui Posted in サーバ | 1 Comment » モバイルとは全く関係ないですが、自分のメモ代わりに記事にしてみたいと思います。 たまたまテストしていて、MySQLとPostgreSQLのRepeatable Read時の挙動の違いを見つけました。 AさんとBさんという二人のユーザが同時に一つのレコードを更新している場合です。 user_tblのuser_typeというカラムを「0」→「1」にアップデートしています。 分離レベルはMySQL、PostgreSQLともにRepeatable Readです。 Aさん Bさん mysql> begin; Query OK, 0 rows affected (0.00 sec) トランザクション開始 my

  • innodbでサブクエリを使ったときの FOR UPDATE のロックの範囲 - ngyukiの日記

    前提として、次の通りテーブルを使用する。 CREATE TABLE A ( id INT NOT NULL, no INT NOT NULL, PRIMARY KEY (id, no) ); CREATE TABLE B ( id INT NOT NULL, PRIMARY KEY (id) ); 普通に結合すると A と B の両方の行がロックされる。 SELECT * FROM A INNER JOIN B USING (id) WHERE A.id = 1 AND A.no = 1 FOR UPDATE サブクエリの中で FOR UPDATE すれば、サブクエリの中の A だけがロックされ、外側の B はロックされない。 SELECT * FROM ( SELECT * FROM A WHERE A.id = 1 AND A.no = 1 FOR UPDATE ) X INNER J

    innodbでサブクエリを使ったときの FOR UPDATE のロックの範囲 - ngyukiの日記
    chanpon0
    chanpon0 2013/09/04
    副問い合わせ時のFOR UPDATE.
  • Ground-SunLight

    — y2sunlight ,Since 2019-10-02 Ground Sunlight は「Windowsで作る - PHPプログラミングの開発環境」をテーマにしたサイトです。 オープンソースを利用している全ての人達に祝福を!

  • ePhotoChest: お宝写真をパスワードで隠せる、男のロマン無料アプリ。471 | AppBank

    これや!entrypostmanはこういうアプリを探してたんや!!! ePhotoChest は出来れば隠しておきたい画像を隠しておける無料アプリ。 要するに、パスワードでロックできる画像ビューアーです。 知り合いに「iPhoneに求めることは『エロ』をどこにでも持ち歩けること!」と言い放ったテレビ局マンがいました。そう、このアプリは彼のような人に必要なアプリィィィ!!! ePhotoChestの紹介はこちらから 誰にでも、秘密にしておきたいことがあります。 エロをどうどうと机の上においておく、と言うような少年時代を過ごした男性は世の中に1%もいないでしょう。大半の男性は隠しているはず。 最近は女子まで、腐女子という名の下好き勝手やってます。 そんなあなたにこのアプリ紹介を送ります。 これが起動画面。パスワードを要求されます。 初回起動時のパスワードは空欄で設定されています。 まずログイ

  • 1