2017-07-16 5 views
0

はどのDBMSはチェックが我々がコミットした後に、常に真で定義comstraintsを\ことを保証していますか?私はちょうどコミット直前のチェックを実行するために私たちにできるように、彼らは、特殊な技術を使用することがあります意味Dbをチェックし、同時トランザクション

、という理由だけで同時に起こって複数のトランザクションの仕事ではないでしょうか?

んACID特性は、DB状態を常に並行して実行されているどのように多くの取引関係なく一貫性がないことを私達を保証しますか?

おかげ

答えて

0

異なるデータベースには、異なる技術を使用していますが、基本的には、すべてのエンドアップCONSTRAINTが保たれていることを確認するために変更することができないというものが実際に変更されていないことを確認するために何かをロックします。 programmerinterview.comから

SQLのコンテキストでデータベースのロックは何ですか?例と説明を提供する。

データベースロックは、ただ1つのデータベース・ユーザー/セッションは、その特定のデータを更新できるように、データベース内のいくつかのデータを「ロック」するために使用されます。そのため、データベースのロックは全く同じ時刻に同じデータの正確な部分を更新から二つ以上のデータベース・ユーザーを防ぐために存在します。データがロックされている場合、それはロックが解除されるまで、他のデータベースセッションはデータのロックを解除し、他のデータベース・ユーザーがデータを更新することを可能にする(そのデータを更新できないことを意味します。ロックは通常、ROLLBACKまたはSQL文をCOMMITのいずれかによって解放されています。


これは、テーブルbからFOREIGN KEY constraintoを持つテーブルaであなたINSERT行ならば、それはなるように、テーブルbの対応する行が、あなたのトランザクションが終了するまでをロックされることを意味しますあなたが完了するまで別の同時トランザクションで削除することはできません。

複数バージョンの並行処理制御データベースでは、いくつかの異なる手法が使用される場合があります。しかし、彼らは同じ原則に基づいています。

関連する問題