ระดับการแยกธุรกรรม

Transactions and Error Handling in PostgreSQL

Jason Myers

Instructor

Concurrency

  • จัดการการทำงานหลายอย่างพร้อมกัน
  • มีปัญหาเฉพาะที่เกิดขึ้นในฐานข้อมูล
  • ใช้กฎที่เรียกว่าระดับการแยกธุรกรรมเพื่อให้คาดการณ์ผลลัพธ์ได้ง่ายขึ้น
Transactions and Error Handling in PostgreSQL

Dirty Read

Dirty Read

Transactions and Error Handling in PostgreSQL

Nonrepeatable Read

Nonrepeatable Read

Transactions and Error Handling in PostgreSQL

Phantom Read

Phantom Read

Transactions and Error Handling in PostgreSQL

Serialization Anomaly

Serialization Anomaly

Transactions and Error Handling in PostgreSQL

ระดับการแยกธุรกรรม

ระดับการแยกธุรกรรม Dirty Read Nonrepeatable Read Phantom Read Serialization Anomaly
Read Uncommitted ป้องกัน (PostgreSQL) เสี่ยง เสี่ยง เสี่ยง
Read Committed ป้องกัน เสี่ยง เสี่ยง เสี่ยง
Repeatable Read ป้องกัน ป้องกัน ป้องกัน (PostgreSQL) เสี่ยง
Serializable ป้องกัน ป้องกัน ป้องกัน ป้องกัน
Transactions and Error Handling in 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
Transactions and Error Handling in 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
Transactions and Error Handling in PostgreSQL

มาฝึกกันเถอะ!

Transactions and Error Handling in PostgreSQL

Preparing Video For Download...