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 | არა | არა | არა |
მონიშნული დონე გავლენას ახდენს შესრულებაზე და პროგრამის სისწორეზე. მაღალი დონე მეტ ხარჯებს მოითხოვს.