Serializable
সিরিয়ালাইজেবল
সর্বোচ্চ isolation — concurrent execution-এর ফল এমন, কোনো একটা serial order-এর সমান; anomaly-মুক্ত চুক্তি।
also: serializability
কীভাবে প্রতিশ্রুতি দেয়:
- 2PL (S2PL): read/write lock শেষ পর্যন্ত — conflict মানে wait/block
- SSI (PostgreSQL): MVCC snapshot + rw-conflict graph-এ dangerous cycle detection — conflict মানে abort, retry আপনার দায়
BEGIN ISOLATION LEVEL SERIALIZABLE;
SELECT sum(balance) FROM accounts WHERE branch = 'A'; -- on-call doctor count check
UPDATE doctors SET on_call = on_call - 1 WHERE ... ; -- write skew এখানেই SSI-এ ধরা পড়ে
COMMIT; -- serialization failure? → পুরো transaction retry
- Serializable ≠ serial execution — overlap থাকতে পারে, ফল সমান
- Write skew (দুই transaction ভিন্ন row লিখে এক constraint ভাঙে) — snapshot isolation-এ পার, SERIALIZABLE-এ নয়
- Retry loop বাধ্যতামূলক অংশ — abort মানে bug নয়, protocol
Correctness চূড়ান্ত দরকার (ledger, inventory) — তখনই এই ট্যাক্স দেওয়া সার্থক।