Sobes.tech
Middle

Ի՞նչ տեսակների էականացումներ կան գործարքների համար։

sobes.tech AI

Պատասխան AI-ից

Տրանսակցիայի մեկուսացումը որոշում է, թե որքանով է մեկ տրանսակցիան կարող տեսնել մյուսը կատարված միջանկյալ փոփոխությունները:

SQL ստանդարտը սահմանում է չորս մեկուսացման մակարդակներ:

  1. Read Uncommitted (Կարդալ չկատարված տվյալներ): Ամենացածր մակարդակ: Տրանսակցիան կարող է կարդալ այլ տրանսակցիաների չկատարված փոփոխությունները (մթնոլորտային "լեղ" կարդում):
  2. Read Committed (Կարդալ հաստատված տվյալներ): Տրանսակցիան կարող է կարդալ միայն այն տվյալները, որոնք հաստատված են այլ տրանսակցիաներով: Խուսափում է "լեղ" կարդումից:
  3. Repeatable Read (Կրկնվող կարդում): Տրանսակցիան երաշխավորում է, որ տրված տվյալները, որոնք կարդացվել են տրանսակցիայի ընթացքում, չեն փոխվի կրկնակի կարդալիս: Խուսափում է "լեղ" և "չկրկնվող" կարդումից: Միջնորդային "ֆանտոմներ" կարող են լինել:
  4. Serializable (Սերիալիզացվող): Ամենաբարձր մեկուսացման մակարդակ: Գերաշխավորում է, որ միաժամանակ կատարվող տրանսակցիաները կատարվում են այնպես, կարծես դրանք կատարվել են հերթականությամբ: Խուսափում է բոլոր տեսակի անսպասելի երևույթներից՝ "լեղ" կարդում, "չկրկնվող" կարդում և "ֆանտոմներ":

Անպատասխան երևույթներ միաժամանակյա տրանսակցիաների կատարման ժամանակ:

  • Dirty Read (Լեղ կարդում): Տրանսակցիա A կարդում է տվյալներ, որոնք փոփոխվել են B տրանսակցիայի կողմից, բայց դեռ չեն հաստատվել: Եթե B-ն վերականգնի փոփոխությունները, A-ն աշխատում է սխալ տվյալների հետ:
  • Non-repeatable Read (Չկրկնվող կարդում): A տրանսակցիան կրկնակի կարդում է նույն տվյալները, բայց B-ն փոփոխում է դրանք միջեւ կարդումների: Արդյունքում, A-ն ստանում է տարբեր արժեքներ:
  • Phantom Read (Ֆանտոմներ): A տրանսակցիան կատարում է հարցում, որը վերադարձնում է տողերի հավաքածու: B-ն ավելացնում կամ հեռացնում է տողեր, որոնք համապատասխանում են A-ի հարցման չափանիշներին: Դրանից հետո, կրկնակի հարցման ժամանակ, A-ն ստանում է այլ հավաքածու:

Մեկուսացման մակարդակների անպատասխան երևույթների սեղան:

Մեկուսացման մակարդակ Լեղ կարդում Չկրկնվող կարդում Ֆանտոմներ
Read Uncommitted Այո Այո Այո
Read Committed Ոչ Այո Այո
Repeatable Read Ոչ Ոչ Այո
Serializable Ոչ Ոչ Ոչ

Ընտրած մակարդակը ազդում է ծրագրի կատարողականության և ճշգրտության վրա: Բարձր մակարդակն ավելի մեծ ծախսեր է պահանջում։