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;