Sobes.tech
Senior

Шумо сатҳиҳои ҷудоии транзаксияҳои PostgreSQL-ро медонед?

sobes.tech AI

Ҷавоб аз AI

Дар PostgreSQL, чор дараҷаи изоляции транзаксияҳо мавҷуд аст, ки аз ҷониби стандарт SQL муайян карда шудаанд:

  1. Read Uncommitted — пасттарин дараҷаи изоляция. Имкон медиҳад, ки маълумотҳое, ки ҳанӯз тасдиқ нашудаанд (dirty reads), хонда шаванд. Дар PostgreSQL, дар асл, ҳамчун Read Committed рафтор мекунад, зеро dirty reads дастгирӣ намешавад.

  2. Read Committed — дараҷаи стандартӣ. Транзаксия танҳо маълумоте, ки дар вақти ҳар як саволи инфиродӣ тасдиқ шудааст, мебинад. Миёни саволҳо дар дохили транзаксия метавон тағйиротҳое, ки дигар транзаксияҳо анҷом додаанд, пайдо шаванд.

  3. Repeatable Read — транзаксия тасвирро дар вақти оғозаш мебинад. Ҳамаи саволҳо дар дохили транзаксия ҳамон маълумотҳоро мебинанд, ҳатто агар дигар транзаксияҳо онҳоро тағйир диҳанд ва тасдиқ кунанд. Аз хондани такрорнопазир (non-repeatable read) пешгирӣ мекунад, аммо хондани фантомро иҷозат медиҳад.

  4. Serializable — баландтарин дараҷаи изоляция. Тамоми транзаксияҳоро ба таври пурра сериалӣ мекунад, хондани фантомро пешгирӣ мекунад ва рафторро, ки баробар ба иҷрои пайдарпайи онҳост, таъмин мекунад.

Масалан, барои танзим кардани дараҷаи изоляция:

BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-- Оператсияҳои SQL
COMMIT;