ACIDのMYSQL

アトミック(不可分)

原子性は、トランザクションを指しいずれかで動作を行うか行わないいる、作業の不可分の単位です。

絶縁(アイソレーション)

分離は並行トランザクション内で動作を実行する複数のトランザクションが他のトランザクションが分離され、互いに同時に実行様々な取引を妨害しないことができているときことを意味します。

永続性(耐久性)

持続性は、永続的である必要があり、そのデータベースを変更一度提出した取引を指します。次の操作またはその他の障害は、それらに影響を持つべきではありません。

一貫性(一貫性)

一貫性は、トランザクションの実行前と後の法的な状態のデータを意味し、この状態では意味論上の構文ではありません。状態が続いはっきり、所定の制約が法的状態と呼ばれている満たすためにある、この状態を定義するのはあなた次第です。この状態を満たすため、データが一貫している、データが矛盾している、この条件を満たしていません!

MySQLはどのように一貫性を確保するには?

データベースレベルから、原子性、分離性、耐久性によってデータベースが一貫性を確保します。それは、4つのACID特性の一つである、C(アイデンティティ)が目標である、A(原子)、I(アイソレーション)は、D(持続性)データベースによって提供手段の一貫性を確保するために、手段です。AIDデータベースは一貫性を達成することが可能、三の大特徴を実装する必要があります。アプリケーションレベルから、データベースのデータは、コードを有効判断され、その後、ロールバックするか、データを提出することを決定しました。

MySQLはどのように原子性を確保するには?

InnoDBはアンドゥログを使用しています。呼ばれるロールバック・ログをログ取り消し、ロールバックは、すべてのSQLステートメントが正常に実行された元に戻すことができたとき、彼はあなたがロールバックする適切なログ情報を記録する必要がある、原子達成するための鍵です。

例えば

(1)あなたは、このデータに情報を記録する必要がある場合は、データを削除すると、時間のロールバック、この古いデータを挿入
しますが、時間のデータを更新する場合(2)、あなたが前に古いログインする必要があり、バックロール時間、更新操作を実行するために古い値に応じた
とき(3)その後、アンドゥログに応じて削除操作を実行するための主キーが情報のロールバックの必要性を記録したときにロールバックし、それはこのレコードの主キーを必要とし、データの一部を挿入する時に、トランザクションが失敗したか、コールのロールバックは、トランザクションをロールバックすることが必要で、その結果、あなたが戻ってそれを修正する前にあったものに巻かれるアンドゥログデータ内の情報を使用することができます。

MySQLはどのように耐久性を確保するには?

REDOログのInnoDBの使用(REDOログ)。
前に述べたように、MySQLは背中に描かれたメモリ内のデータを変更、ディスク、最初にメモリにディスク上のデータをロードすることです。この時点では、突然ダウンした場合、メモリ内のデータが失われます。
どのようにこの問題を解決するには?
トランザクションがラインああでコミットされる前に、シンプルに、ああ、データがディスクに直接書き込まれます。
あなたはどんな質問がありますか?
唯一のバイトにページを修正し、ディスクにページ全体を磨く必要があるので、リソースの無駄。結局、16キロバイトのページサイズは、あなただけの1 Little Thingの変更、我々はコンテンツ16キロバイトのディスクへのブラシ、リスニングや不合理でなければなりません。
結局のところ、つまり、IOランダムである、単一のトランザクションでは、データのSQL複数ページの修正を含むことができ、これらのデータ・ページが連続しないかもしれません。明らかにランダムなIOを操作し、速度が遅くなります。
  上記課題を解決するためにREDOログ使用。だけでなく、メモリ操作でデータ変更時、として、この操作はでREDOログに記録されます。トランザクションがコミットすると、REDOログは、(ディスクの一部に、メモリ内の一部をREDOログ)ブラシプレートをログに記録します。データベースが再起動停止している場合は、ログを再実行します内容はデータベースに復元した後、ロールバックおよび内容に基づいてログデータを元に戻すか、ビンログデータを提出することを決定しています。
REDOログを使用する利点?
ブラシディスクとして具現化、ブラシプレートよりも、ページ高いデータ効率をREDOログ
ものだけ変更されたページなので、小さいサイズ、速いブラシディスクを記録した後、少量をREDOログ。
最後に追加する必要があるログをやり直し、それはIOの順に属しています。効率は明らかに速いランダムIOよりも来ています。

の絶縁を確保するためにどのようにmysqlの?

使用すると、MVCCロックとメカニズムです。
MVCC、即ち、マルチバージョン同時実行制御(マルチバージョン同時実行制御)、データ行のバージョンの複数のデータにアンドゥログ内のスナップショットデータをスナップショット。行がDELELEまたはUPDATE操作を読み込み、取引を行っている場合は、読み出し動作は、ライン上のロックの解除を待つが、行のスナップショット版を読んでいないだろう。

  読み取りがトランザクション分離レベル(読み取りコミット)に提出された場合、トランザクションは別のトランザクションが提出されましたから、アイソレーションが満たされていないデータを読み取ることができます。トランザクション分離レベルが反復可能読み取り(Repeateable読む)である場合しかし、バリア性が満たされています。

おすすめ

転載: www.cnblogs.com/zhangsanfeng/p/11693449.html