隔离级别

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;

语句结果

  • 第一次 SELECT 结果:5
  • 第二次 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;

语句结果

  • 第一次 SELECT 结果:5
  • 第二次 SELECT 结果:5
PostgreSQL 中的事务与错误处理

Vamos praticar!

PostgreSQL 中的事务与错误处理

Preparing Video For Download...