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 არა არა არა

მონიშნული დონე გავლენას ახდენს შესრულებაზე და პროგრამის სისწორეზე. მაღალი დონე მეტ ხარჯებს მოითხოვს.