分離レベル

PostgreSQL におけるトランザクションとエラー処理

Jason Myers

Instructor

同時実行

  • 同時に複数の処理を調整すること。
  • データベース特有の課題がある。
  • 結果を推論しやすくするため、分離レベルという規則を用いる。
PostgreSQL におけるトランザクションとエラー処理

ダーティリード

ダーティリード

PostgreSQL におけるトランザクションとエラー処理

再読不能

再読不能

PostgreSQL におけるトランザクションとエラー処理

ファントムリード

ファントムリード

PostgreSQL におけるトランザクションとエラー処理

直列化異常

直列化異常

PostgreSQL におけるトランザクションとエラー処理

分離レベル

分離レベル ダーティリード 再読不能 ファントムリード 直列化異常
Read Uncommitted 保護(PostgreSQL) 脆弱 脆弱 脆弱
Read Committed 保護 脆弱 脆弱 脆弱
Repeatable Read 保護 保護 保護(PostgreSQL) 脆弱
Serializable 保護 保護 保護 保護
PostgreSQL におけるトランザクションとエラー処理

分離レベルの影響

START TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; 
SELECT COUNT(*) FROM cookies WHERE name = 'lemon drop';

-- Cookie 6 has been added in an external transaction.

SELECT COUNT(*) FROM cookies WHERE name = 'lemon drop';
COMMIT;

実行結果

  • 1回目のSELECT結果: 5
  • 2回目のSELECT結果: 6
PostgreSQL におけるトランザクションとエラー処理

分離レベルの影響

START TRANSACTION ISOLATION LEVEL SERIALIZABLE; 
SELECT COUNT(*) FROM cookies WHERE name = 'lemon drop';

-- Cookie 6 has been added in an external transaction.

SELECT COUNT(*) FROM cookies WHERE name = 'lemon drop';
COMMIT;

実行結果

  • 1回目のSELECT結果: 5
  • 2回目のSELECT結果: 5
PostgreSQL におけるトランザクションとエラー処理

Let's practice!

PostgreSQL におけるトランザクションとエラー処理

Preparing Video For Download...