基本
begin;--//トランザクション開始
create table fruit(id int, name text);--//テーブル作成
insert into fruit values(1,'banana');--//登録
commit;--・//コミット または rollback;
BEGIN READ ONLY;読み込みだけOK デフォルトはこれになっているのでBEGIN;だけでOK
BEGIN READ WRITE;読み書きOK
show default_transaction_isolation;←でデフォルトの設定がわかる
BEGIN ISOLATION LEVEL READ UNCOMMITTED;「ビギン アイソレーション レベル リード アンコミテッド」
BEGIN ISOLATION LEVEL READ COMMITTED;「ビギン アイソレーション レベル リード コミテッド」
BEGIN ISOLATION LEVEL REPEATABLE READ;「ビギン アイソレーション レベル リピータブル リード」
BEGIN ISOLATION LEVEL SERIALIZABLE;「ビギン アイソレーション レベル シリアライザブル」
ダーティリード
反復不能読み取り(ノンリピータブルリード)(ファジーリード)
ファントムリード
※下記を参考
隔離レベル | ダーティリード | 反復不能読み取り | ファントムリード | 対策例 |
---|---|---|---|---|
READ UNCOMMITTED | 可能性あり | 可能性あり | 可能性あり | |
READ COMMITTED | 安全 | 可能性あり | 可能性あり | ダーティリードを防ぐため更新時には対象の行に専有ロックを行う |
REPEATABLE READ | 安全 | 安全 | 可能性あり | ノンリピータブルリードを防ぐため参照時に対象の行に共有ロックを行う |
SERIALIZABLE | 安全 | 安全 | 安全 | ファントムリードを防ぐため参照時に対象のテーブルに共有ロックを行う |