Փակուղի է առաջանում, երբ 2 պրոցեսները մրցում են ռեսուրսի բացառիկ հասանելիության համար, սակայն չեն կարողանում բացառիկ մուտք ստանալ դեպի այն, քանի որ մյուս գործընթացը խանգարում է դրան: … SQL Server-ը ավտոմատ կերպով հայտնաբերում է, երբ փակուղիներ են հայտնվել և քայլեր է ձեռնարկում՝ սպանելով գործընթացներից մեկը, որը հայտնի է որպես զոհ:
Ինչու՞ է առաջանում փակուղի։
Երկու գործընթաց, որոնք մրցում են երկու ռեսուրսների համար՝ հակառակ հերթականությամբ: … Հետագա գործընթացը պետք է սպասել: Փակուղի է առաջանում երբ առաջին գործընթացը կողպում է առաջին ռեսուրսը միաժամանակ, երբ երկրորդ գործընթացը արգելափակում է երկրորդ ռեսուրսը Փակուղին կարող է լուծվել՝ չեղարկելով և վերագործարկելով առաջին գործընթացը:
Ինչպե՞ս կարող ենք խուսափել SQL Server-ում փակուղուց:
Օգտակար ուղիներ SQL Server փակուղիներից խուսափելու և նվազագույնի հասցնելու համար
- Փորձեք գործարքները կարճ պահել; դա թույլ կտա խուսափել գործարքի կողպեքները երկար ժամանակ պահելուց:
- Մուտք գործեք օբյեկտներ նույն տրամաբանական եղանակով բազմաթիվ գործարքներում:
- Ստեղծեք ծածկող ինդեքս՝ փակուղու հավանականությունը նվազեցնելու համար:
Ի՞նչ է փակուղին SQL Server-ում:
SQL Server փակուղին ըստ էության կանգ է առնում երկու գործընթացների միջև, որոնք մրցում են նույն ռեսուրսի բացառիկ հասանելիության համար: Քանի որ միայն մեկ գործընթաց կարող է միաժամանակ օգտագործել ռեսուրս, կատարումը դանդաղում է մինչև փակուղին լուծվի:
Ինչպե՞ս լուծել փակուղին:
Փակուղիների հաճախականությունը երբեմն կարող է կրճատվել՝ ապահովելով, որ բոլոր հավելվածները հասանելի ենիրենց ընդհանուր տվյալներին նույն հերթականությամբ, ինչը նշանակում է, օրինակ, որ նրանք մուտք են գործում (և հետևաբար՝ արգելափակում) տողերը: Աղյուսակ A, որին հաջորդում է աղյուսակ B, որին հաջորդում է Աղյուսակ C և այլն: