Middle
SQL-ში რა სახის ბლოკირებები არსებობს?
sobes.tech AI
პასუხი AI-სგან
SQL-შესაკრებებში ბლოკირების ტიპები:
-
საფეხურით:
- ცხრილების ბლოკირება (Table Locks): ბლოკავს მთელ ცხრილს. მარტივია განხორციელება, მაგრამ შეიძლება მნიშვნელოვნად შეამციროს პარალელიზმი. კარგია ცხრილის მთლიანად შეცვლის ოპერაციებისათვის (მაგალითად,
ALTER TABLE). - საფრებზე ბლოკირება (Row Locks): ბლოკავს ცალკეულ სვეტებს. უზრუნველყოფს მაღალი პარალელიზმს, მაგრამ მოითხოვს მეტ რესურსს მართვისთვის. გამოიყენება უმეტეს DBMS-ებში
INSERT,UPDATE,DELETEოპერაციების დროს.
- ცხრილების ბლოკირება (Table Locks): ბლოკავს მთელ ცხრილს. მარტივია განხორციელება, მაგრამ შეიძლება მნიშვნელოვნად შეამციროს პარალელიზმი. კარგია ცხრილის მთლიანად შეცვლის ოპერაციებისათვის (მაგალითად,
-
შესვლის ტიპით:
- გადანაწილებული ბლოკირება (Shared Lock - S Lock): საშუალებას აძლევს რამდენიმე ტრანზაქციას ერთდროულად წაიკითხოს მონაცემები, მაგრამ აჩერებს სხვა ტრანზაქციებს წერის დროს.
- ექსკლუზიური ბლოკირება (Exclusive Lock - X Lock): მხოლოდ ერთ ტრანზაქციას აქვს წვდომა მონაცემებზე (წაკითხვა და წერა), და აჩერებს სხვა ტრანზაქციებს წვდომას.
- მიზნის ბლოკირება (Intention Lock): გამოიყენება DBMS-ის მიერ იმის დასანიშნად, რომ ტრანზაქციები გეგმავენ ბლოკის დამყარებას ქვედა დონეზე (საფრებზე ან ცხრილზე). მაგალითად,
IS(მიზნის გაზიარება),IX(მიზნის ექსკლუზიური). ეს ეხმარება DBMS-ს სწრაფად გადაამოწმოს ბლოკირების თავსებადი.
-
სხვა ტიპები:
- საფარვის ბლოკირება (Range Lock): ბლოკავს სვეტების დიაპაზონს ინდექსში. გამოიყენება ფანტომური წაკითხვის თავიდან ასაცილებლად.
- მეტადანობის ბლოკირება (Metadata Lock): ბლოკავს ობიექტის მეტადანობას (ცხრილები, წარმოდგენები და ა.შ.). გამოიყენება DDL ოპერაციების დროს.
შესაკრებების თავსებადობა განსაზღვრავს, შეიძლება თუ არა რამდენიმე ტრანზაქცია ერთდროულად შეინარჩუნოს გარკვეული ტიპის ბლოკირებები ერთ ობიექტზე.
| ბლოკირების ტიპი | S | X | IS | IX |
|---|---|---|---|---|
| S | დიახ | არა | დიახ | არა |
| X | არა | არა | არა | არა |
| IS | დიახ | არა | დიახ | დიახ |
| IX | არა | არა | დიახ | დიახ |