Middle
Ի՞նչ տեսակների էականացումներ կան գործարքների համար։
sobes.tech AI
Պատասխան AI-ից
Տրանսակցիայի մեկուսացումը որոշում է, թե որքանով է մեկ տրանսակցիան կարող տեսնել մյուսը կատարված միջանկյալ փոփոխությունները:
SQL ստանդարտը սահմանում է չորս մեկուսացման մակարդակներ:
- Read Uncommitted (Կարդալ չկատարված տվյալներ): Ամենացածր մակարդակ: Տրանսակցիան կարող է կարդալ այլ տրանսակցիաների չկատարված փոփոխությունները (մթնոլորտային "լեղ" կարդում):
- Read Committed (Կարդալ հաստատված տվյալներ): Տրանսակցիան կարող է կարդալ միայն այն տվյալները, որոնք հաստատված են այլ տրանսակցիաներով: Խուսափում է "լեղ" կարդումից:
- Repeatable Read (Կրկնվող կարդում): Տրանսակցիան երաշխավորում է, որ տրված տվյալները, որոնք կարդացվել են տրանսակցիայի ընթացքում, չեն փոխվի կրկնակի կարդալիս: Խուսափում է "լեղ" և "չկրկնվող" կարդումից: Միջնորդային "ֆանտոմներ" կարող են լինել:
- 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 | Ոչ | Ոչ | Ոչ |
Ընտրած մակարդակը ազդում է ծրագրի կատարողականության և ճշգրտության վրա: Բարձր մակարդակն ավելի մեծ ծախսեր է պահանջում։