[解決済み] ACIDとデータベーストランザクションの仕組みは?
質問
ACIDとデータベース・トランザクションの関係を教えてください。
ACIDはデータベース・トランザクションを与えるのか、それとも同じものなのか?
このトピックについて、どなたか教えてください。
どのように解決するのですか?
ACID は、データベースを修正する際に適用したいプロパティのセットです。
- 原子性
- 一貫性
- 分離
- 耐久性
トランザクションは、ACID特性のいくつかを達成するために使用される、関連する変更のセットです。トランザクションは、ACID特性を実現するためのツールです。
アトミック性とは、トランザクションのすべてが起こるか、あるいはまったく起こらないかを保証できることです。複雑な操作を1つのユニットとして、オール・オア・ナッシングで行うことができ、クラッシュ、停電、エラー、その他によって、関連する変更の一部しか起こっていない状態になることは許されないのです。
一貫性とは、データの一貫性を保証することであり、関連するデータに対して持つ制約が一切破られないことを意味します。
分離とは、あるトランザクションが、まだ完了していない別のトランザクションからデータを読み取ることができないことを意味します。2つのトランザクションが同時に実行されている場合、それぞれのトランザクションは順次実行されているかのように世界を見ます。一方が書いたデータを他方が読む必要がある場合、他方が終了するまで待たなければなりません。
耐久性とは、トランザクションが完了すると、すべての変更が耐久性のある媒体(ハードディスクなど)に記録され、トランザクションが完了した事実も同様に記録されることが保証されることである。
つまり、トランザクションはこれらの特性を保証するためのメカニズムであり、全体としてアトミックで、一貫した結果を出し、他の操作から隔離され、永続的に記録できるように、関連する操作をグループ化する方法なのです。
関連
-
[解決済み】Entity FrameworkからのSqlException - セッション内で他のスレッドが動作しているため、新しいトランザクションは許可されません。
-
MYSQL "Access denied; you need (at least one of) SUPER privilege(s) for this operation" 問題解決
-
MySQLの基本的な使い方 (I)
-
[解決済み] MySQLデータベースの名前を素早く変更する(スキーマ名を変更する)方法は?
-
[解決済み] rake db:migrate db:reset とdb:schema:loadの違いについて
-
[解決済み] 全レコードを返すElasticsearchクエリ
-
[解決済み] トランザクションを使用するか、SaveChanges(false)とAcceptAllChanges()を使用するか?
-
データファイルのsqlldrフィールドが最大長を超えています。
-
[解決済み】「INNER JOIN」と「OUTER JOIN」の違いは何ですか?
-
[解決済み】MongoDBがv4以前にACID準拠でなかったことの本当の意味は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
MYSQL "Access denied; you need (at least one of) SUPER privilege(s) for this operation" 問題解決
-
ERROR 1046 (3D000)の解決策です。MySQLでアカウント削除時にデータベースが選択されない問題
-
解決方法 テーブルの定義が正しくありません。自動列は1つだけで、キーとして定義する必要があります。
-
MySQLデータベースのクエリ機能を使用する際に、グループ関数の使用が無効である問題の解決方法
-
PDOデータベース接続エラー。SQLSTATE[HY000] [2002] そのようなファイルやディレクトリはありません。
-
MySqlエラー解析'where節'の未知の列'xxx'
-
sql common mistake of incorrect predicate orderConversion failed when converting varchar value 'abc' to data type int
-
[解決済み] 並行処理と並列処理の違いは何ですか?
-
Postgresqlのインストールに関する問題
-
[解決済み] VARCHAR(255) が(他の長さではなく)頻繁に使用されているのを見るのは、何か理由があるのでしょうか?