タグ

ロックに関するa_t_o_a_t_oのブックマーク (2)

  • MySQLのINSERT/UPDATE時におこる不整合対策 - LukeSilvia’s diary

    先日、作っているアプリケーションにバグが発生しました。バグの内容は次のようなものでした。 同時に存在してはいけないはずのデータが、DB に存在する 整合性のチェックはアプリケーションレベルで行っている 一意制約のような単純なものではないので、アプリケーションレベルで実装 整合性のチェックロジックは正しい これに対し、バグは次のような状況で発生したと仮説を立てました。 ユーザがレコードを一括登録しようとする 登録ボタンを押したがレスポンスが遅い この間、整合性チェックが走っている ユーザはもう一度登録ボタンを押した 2回目の登録の整合性チェックが走り始める 1回目の登録の整合性チェックが完了、INSERTが始まる 2回目の登録の整合性チェックが完了、INSERTが始まる 2回目の登録の整合性チェックの間、DBにはまだ1回目の登録によるINSERTが実行されていないので、チェックを通過した 結

    MySQLのINSERT/UPDATE時におこる不整合対策 - LukeSilvia’s diary
  • 排他って何だろう

    福岡寿和 FUKUOKA,Toshikazu 富士通SSL はじめに 同時にひとつの資源を複数のプログラムから使おうとしたときは,必ず「排他」というものが必要です.今回は,いろいろある排他問題の中から,RDBMSの世界での「排他」,特にレコード変更(挿入・更新・削除)に関係するものに注目してみます.なお,今回のリストプログラムは,Oracle Objects for OLEをミドルウェアとして,Oracle7またはOracle8をターゲットにしています.また,事前にリスト1を実行して,テスト用のテーブルを作成してください. リスト1:サンプル用定義スクリプト DROP TABLE VBMArea CASCADE CONSTRAINTS; CREATE TABLE VBMArea ( AreaCode CHAR(2) NOT NULL, AreaName VARCHAR2(10) N

  • 1