ACID
信頼性のあるトランザクションシステムの持つべき性質。
A(atomicity/原子性)
- トランザクションを一番最小の単位(原子)としてみなし、トランザクションの中の出来事が全て実行される/全て巻き戻されることを保証する。
- トランザクション内の一部のみが実行されている状態は存在しない。
(余談)この話を聞いたとき、ソフトウェア開発で自身で切るトランザクションは可能な限り最小に保つべきだし、ロールバックできない処理(メール送信など)をトランザクションに組み込むのはどうなんだろうか?とも思ってしまった、、
C(consistency/一貫性)
- DB内のデータに矛盾のないことを常に保証する。
- トランザクション内で矛盾を発生させるようなことは存在しない。
I(isolation/独立性)
- トランザクション中に行われる操作は他のトランザクションに影響を与えないことを保証する。
- トランザクションが並列に実行されていても、単独実行の場合と同じ実行結果にならなければならない。
- この性質とパフォーマンスはトレードオフのため、世のRDBMSはこの性質の一部を緩和して実装されることが多い。
- トランザクション分離レベル
D(durability/永続性)
- トランザクション処理結果は永続的であることを保証する。
MySQLがACID特性をどのように担保しているか
ここを読む MySQLの深淵に踏み込むことになるな、、また別で勉強する https://dev.mysql.com/doc/refman/5.6/ja/mysql-acid.html