今更聞けないトランザクションについて
トランザクションとは
複数の処理をひとまとまりとして行うことです。
そもそもtransactionそのものが「処理」という意味だったりします。
例えば
処理1->処理2->処理3->処理4という一連の処理があったとして、
これをトランザクション"A"とします。
1から4まで問題なく終了したところでトランザクション"A"が実行されます。
自分の開発している環境がMySQLなので、MySQLで書くと
BEGIN;←BEGINでトランザクションを開始します。 処理1 処理2 処理3 処理4 COMMIT;←COMMITで処理1~4が反映されます。
上記の処理3を実行中にこのトランザクションへアクセスがあっても、COMMITで反映されるまでは後から来たアクセスは実行されません。
この仕組をロックと言います。
ロックには共有ロックと排他ロックの2種類あります。
共有ロック
他のプロセス(レコードへのアクセス)は読み込みはできるが、書き込みができなくなる。
排他ロック
他のプロセス(レコードへのアクセス)は読み込みも書き込みもできない。
まとめ
一連のSQLをBEGIN~COMMITで囲ってあげるとトランザクションになるいうこと。 他にもACID特性とかダーティリードとかファントムとかデータベースは奥深いうえに固い言葉が多いですが、また後日勉強します。