Izolace transakcφ (SQL)

Klient databßzovΘho serveru m∙₧e nastavit stupe≥ izolace vlastnφch transakcφ od transakcφ provßd∞n²ch jin²mi klienty. Izolace transakcφ urΦuje, v jakΘ mφ°e se mohou zm∞ny v databßzi soub∞₧n∞ provßd∞nΘ r∙zn²mi klienty navzßjem ovliv≥ovat.

Stupn∞ izolace transakcφ jsou definovßny svojφ schopnostφ brßnit vzniku t°φ fenomΘn∙, k nim₧ by p°i soub∞₧nΘ prßci klient∙ A a B mohlo dochßzet:

FenomΘn DIRTY READ: Klient A provede zm∞nu dat a prozatφm neukonΦφ transakci. Klient B p°eΦte tato zm∞n∞nß data. PotΘ klient A odvolß svou transakci. Klient B tedy p°eΦetl data, kterß nikdy nebyla potvrzena.

FenomΘn NON-REPEATABLE READ: Klient A p°eΦte data a prozatφm neukonΦφ transakci. Klient B zm∞nφ nebo zruÜφ tato data a ukonΦφ svou transakci. Klient A ve svΘ transakci znovu Φte stejnß data a nenajde je.

FenomΘn PHANTOM: Klient A polo₧φ dotaz, p°eΦte odpov∞∩ na n∞j a prozatφm neukonΦφ transakci. Klient B vlo₧φ do databßze dalÜφ °ßdky vyhovujφcφ podmφnkßm v dotazu klienta A a ukonΦφ svou transakci. Klient A ve svΘ transakci znovu polo₧φ stejn² dotaz a obdr₧φ jinou odpov∞∩.

JednotlivΘ stupn∞ izolace transakcφ jsou definovßny takto:

Stupe≥ izolace / fenomΘn DIRTY READ NON-REPEATABLE READ PHANTOM
READ UNCOMMITTED m∙₧e nastat m∙₧e nastat m∙₧e nastat
READ COMMITTED nem∙₧e nastat m∙₧e nastat m∙₧e nastat
REPEATABLE READ nem∙₧e nastat nem∙₧e nastat m∙₧e nastat
SERIALIZABLE nem∙₧e nastat nem∙₧e nastat nem∙₧e nastat

Stupe≥ izolace SERIALIZABLE zaruΦuje, ₧e soub∞₧nΘ transakce budou mφt stejn² efekt, jako by byly provedeny po sob∞. Zßrove≥ vÜak sni₧uje schopnost serveru provßd∞t akce soub∞₧n∞, tudφ₧ m∙₧e snφ₧it propustnost serveru, pokud vφce klient∙ pracuje se stejn²mi daty.

Stupe≥ izolace transakcφ lze nastavit p°i zahßjenφ transakce p°φkazem START TRANSACTION nebo p°ed zahßjenφm transakce p°φkazem SET TRANSACTION.

Intern∞ SQL server WinBase602 implementuje pouze stupn∞ izolace READ COMMITTED a SERIALIZABLE. P°i nastavenφ READ UNCOMMITTED se vnit°n∞ nastavφ READ COMMITTED, p°i nastavenφ REPEATABLE READ se vnit°n∞ nastavφ SERIALIZABLE. Toto chovßnφ je pln∞ v souladu s normou.