mysql-総務
その他
2020-02-12 19:39:09
訪問数: null
1.トランザクションの概念
- トランザクション: Aのトランザクションは個々のユニットが構成する1つまたは複数のSQL文で構成され、このユニットでは、各ステートメントは相互に依存しています。
- 記述が理解:全体として、この別のユニットを、文の実行に失敗したり、エラーで政府場合、ユニット全体がロールバックされます。影響を受けたすべてのデータは、事務の以前の状態に戻ります始めたユニットは、すべてのステートメントが正常に実行された場合にのみ、トランザクションが正常に実行されます。
- ストレージエンジン:ファイルまたはメモリ内のデータを保存するためにMySQLで異なるストレージ・テクノロジーを使用しています。
show engines:
あなたはMySQLのストレージエンジンのサポートを表示することができます。
- 一般的なストレージエンジン:
innodb
、myisam
、memory
。これらのうち、唯一のinnodb
トランザクション・メカニズムをサポートしています。
トランザクションの2.特性(ACID)
- アトミック(原子性)
、トランザクション一般に原子として、作業の不可分単位です。トランザクション内の操作が発生したか、または発生していないのいずれか。
- 一貫性(一貫性)
トランザクションは、別の一貫した状態にある一貫した状態からデータベースを変換する必要があります。
- 分離(アイソレーション)
トランザクションを実行するには、他のトランザクションを妨害することができず、内部トランザクション他の同時トランザクションの動作に用いられるデータが分離されて、同時に実行される各トランザクションの間に互いに干渉することができません。
- 永続性(耐久性)
トランザクションがコミットされると、彼はデータベース内のデータを変更するには、他の操作失敗したデータベースは、それに影響を持つべきではないとしても、次に、永久的です。
3.データベースの分離レベル
- 設定分離レベルはによって引き起こされる問題ではありません。
- 汚れを読む: 2つのトランザクションT1、T2のために、フィールドを読んT1、T2は、更新されたが、まだコミットしていないされています。ロールバックT2場合、T1は一時的の内容を読み取り、有効です。
- 非反復可能読み取り:トランザクションT1の場合は、T2; T1は、フィールドとフィールド更新T2を読み込みます。フィールドが再度読み込まれT1、そして最後の値が異なっをお読みください。
- :魔法のリーディング次いでT1がテーブルのフィールドの読み出し、及びテーブルの行T2にいくつかの行を挿入する;二つのトランザクションT1、T2のためにT1テーブルが再び同じに読んだとき、複数の行になります。
- 分離レベル
- 分離レベルの設定の必要性:回避の同時実行の問題各トランザクション。
- **非コミット読み取り(コミットされていない読み取り):**トランザクションは他のトランザクションからのデータが提出されていない読み取ることができます。可能性のある問題:
脏读
、不可重复读
、幻读
。
- **読み取り(コミット読み取り)コミット:**のみ、他のトランザクションによって提出された変更内容を読み取ることができます。避けてください汚れは、可能な読み込み
不可重复读
の問題を:幻读
、。
- **再現度(反復可能読み取り):**トランザクションは複数のフィールドからの同じ値から読み取ることができることを確認してください。トランザクションの期間は、他のトランザクションが更新されるように、このフィールドに禁止しました。問題が発生する可能性があります
幻读
。
- **直列化(シリアライズ):**トランザクションは常にテーブルの同じ行を読み取ることができることを確認してください。トランザクションの期間、他の禁止トランザクションの実行テーブルの挿入、更新、および削除操作。すべての並行性の問題は、パフォーマンスの低下に過ぎず回避することができますが。
公開された32元の記事
・
ウォン称賛7
・
ビュー7580
転載: blog.csdn.net/Isaacddx/article/details/87708562