スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

データベースのロック問題について

今日はちょっとマジメにDBのロック問題について
(プログラムの話だから面白くないよ!)

DBのロックは致命的である。
どんなに処理が早いマシンでもピタッと止まってしまう。
ロックは基本的に処理の無限ループか、テーブルロックの取得で起こってしまう。
処理の無限ループは発見しやすいのでいいが(良くないけど)
テーブルロックとなると途端に難しくなる。
例えばAがXのロックを取得し、Yのロックを取得してから終了。
BがYのロックを取得し、Xのロックを取得してから終了 というプログラムがあると、AがXのロック取得時にBがYのロックを取得すると
相互のロックが永久に外れない事になる。
こうなると、XとYを用いる処理全てが止まってしまい、場合によっては連鎖的にロックが発生し、最終的にサイト全体がダウン ということになる。
恐いですねー恐ろしいですねー。

解決法としては、
1.テーブルロックを使わない
2.ロックをかける優先順位を予め定義してからコーディングする

1が出来たら苦労はしません。SEの方は出来るだけ1の選択肢になる設計をしましょう。
(現実的にはシーケンスNoとかで一意の数字を取得する時にどーしてもいるんよね)

2.これは今日お仕事で教えられた事。
ロックの優先順位が定義されていて、コーディングもそれに倣っていたら、少なくとも相互ロックという問題が無くなる。

これは当たり前のようで、当たり前ではなかった。
かなり大きな気づきでした。

ここを見ている人に大規模なネットワークプログラム組む人がいるかは不明だけど、万が一いたら、この辺気を付けてね!
まじ泣けるよ!


スポンサーサイト

テーマ : データベース
ジャンル : コンピュータ

コメントの投稿

非公開コメント

へぇ。そういうのがあるんだぁ。
そういうのを習ってるω㌧に尊敬のまなざしだなw

いや、その前にロックマンにツッコんでくれよ。

ぇーそこはあえて突っ込まないよ?w(鬼
プロフィール

をめが

Author:をめが
をめがの気まぐれ日記へようこそ。
2年近く放置していた気がします。さすが気まぐれ。
FFやったりマビ復帰してみたりして、今度はLunatia辺りでもやろうか悩んでる感じ。

Amazon検索サーチ

最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
カテゴリー
ブロとも申請フォーム

この人とブロともになる

ブログ内検索
RSSフィード
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。