PostgreSQL_トランザクション

基本

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 安全 安全 安全 ファントムリードを防ぐため参照時に対象のテーブルに共有ロックを行う
Author: gaa

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です