Sobes.tech
Senior

PostgreSQL ტრანზაქციის იზოლაციის დონეებს იცნობთ?

sobes.tech AI

პასუხი AI-სგან

PostgreSQL-ში, SQL სტანდარტით განსაზღვრულია ოთხი ტრანზაქციის იზოლაციის დონე:

  1. Read Uncommitted — ყველაზე დაბალი იზოლაციის დონე. საშუალებას აძლევს წაიკითხოს მონაცემები, რომლებიც ჯერ კიდევ არ არის დადასტურებული (dirty reads). PostgreSQL-ში, პრაქტიკულად, ის როგორც Read Committed მუშაობს, რადგან dirty reads მხარდაჭერილი არ არის.

  2. Read Committed — დეფოლტ დონე. ტრანზაქცია ხედავს მხოლოდ იმ მონაცემებს, რომლებიც დადასტურებულია თითოეული ცალკეული სარეკლამო მოთხოვნის დროს. ტრანზაქციის შიგნით სხვა ტრანზაქციების მიერ განხორციელებული ცვლილებები შეიძლება მოხდეს.

  3. Repeatable Read — ტრანზაქცია ხედავს მონაცემების სურათს მისი დაწყების დროს. ყველა მოთხოვნა within ტრანზაქციის ხედავს ერთსა და იმავე მონაცემებს, მიუხედავად იმისა, რომ სხვა ტრანზაქციები მათ შეცვლიან და დადასტურებენ. თავიდან აცილება non-repeatable read-ებს, მაგრამ ფანტომური წაკითხვების დაშვება.

  4. Serializable — ყველაზე მკაცრი იზოლაციის დონე. უზრუნველყოფს ტრანზაქციების სრული სერილიზაციას, ფანტომური წაკითხვების თავიდან აცილებას და უზრუნველყოფს სქემას, რომელიც თანხვედრია სერიული შესრულებისთან.

მაგალითი იზოლაციის დონესთან დაკავშირებული:

BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-- SQL ოპერაციები
COMMIT;