タグ

lockに関するredpandaのブックマーク (3)

  • InnoDBで行ロック/テーブルロックになる条件 - (゚∀゚)o彡 sasata299's blog

    2009年11月22日16:29 MySQL InnoDBで行ロック/テーブルロックになる条件 MySQL にはよく使われるストレージエンジンとして MyISAM と InnoDB がありますが、違いの一つとしてロックの挙動が挙げられます。MyISAM はテーブルロック、InnoDB は行ロックが掛かるというのは有名な話じゃないかと。 ただ、最近知ったのですが、InnoDB だとしても必ずしも行ロックになるわけではなく、テーブルロックになる場合もあるようですね。。このことについて手元の MySQL 5.1.26RC で簡単ですが検証してみます。サンプルとして使うテーブルはこちら。 CREATE TABLE `lock_sample` ( `id` int(11) NOT NULL AUTO_INCREMENT, `c1` int(11) NOT NULL, `c2` int(11) NOT

  • LAST_INSERT_IDを使って採番テーブルを扱う - (゚∀゚)o彡 sasata299's blog

    2009年07月06日22:54 MySQL LAST_INSERT_IDを使って採番テーブルを扱う 採番テーブルというのは、例えば同じ DB の違うテーブル(data_1テーブルとdata_2テーブルとか)で id を重複させたくない(つまり、data_1テーブル、data_2テーブルでは auto_increment は付けない)場合などに、ユニークな id を生成するためのテーブルです。こんな感じ。 CREATE TABLE num ( id bigint(20) unsigned NOT NULL DEFAULT '0' ) ENGINE=InnoDB; +-------+---------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---

  • 楽観的同時実行制御でいいかな?

    ADO.NET を使うと楽観的同時実行制御を容易に実装できる事、そして、超有名な「楽観的ロックでいいじゃん!」のお陰で、楽観的同時実行制御は、特に Web アプリケーション開発では広く使われているのではないでしょうか。勿論、大概のアプリケーションでは楽観的同時実行制御で十分なのかもしれません。しかし「楽観的同時実行制御こそが正義だ」と盲信されかねない空気に警鐘を鳴らす為にも、今一度考えてみましょう。 まず、楽観的同時実行制御、悲観的同時実行制御とは何なのかを整理してみます。先でも紹介した大西彰さんの記事には、悲観的ロックと楽観的ロックを対比してまとめてくれています(もう 2 年以上前の記事ですね。読んだ事がない人は是非一読を)。 「楽観的ロックでいいじゃん! 」より 悲観的ロック:ステートフルなロック 更新したい対象のリソースを照会して取得した直後から更新が終わるまでロックを維持すること 

  • 1