Tarkibga o'tish

030. Tranzaksiyalar, izolyatsiya va lock

Bu mavzuda SAVEPOINT, izolyatsiya darajalari, qatorlarni bloklash bo'yicha 25 ta masala bor. Har bir masala oldida qavs ichida sxema nomi va qiyinlik darajasi ko'rsatilgan. Sxemalar Sxemalar va tayyorlov sahifasida berilgan.

Masalani o'zingiz yechib, natijani Kutilgan natija bilan solishtiring. O'zgartiruvchi masalalarda (INSERT, UPDATE, DELETE, DDL) natija shartda aytilgan tekshiruv so'rovidan olingan. Natija 10 qatordan ko'p bo'lsa, birinchi 10 qator ko'rsatilgan.

1. (dokon, oson) SAVEPOINT: kategoriya qo'shing, savepoint qo'ying, ikkinchisini qo'shing, savepointga ROLLBACK TO qiling; kategoriyalar soni.

Kutilgan natija
6

2. (dokon, oson) RELEASE SAVEPOINT: o'zgarish saqlanib qoladimi: savepoint, insert, release; soni.

Kutilgan natija
6

3. (dokon, oson) Tranzaksiya izolyatsiya darajasini ko'rsating: current_setting('transaction_isolation').

Kutilgan natija
read committed

4. (dokon, o'rta) SET TRANSACTION ISOLATION LEVEL SERIALIZABLE ni o'rnating va darajani tekshiring.

Kutilgan natija
serializable

5. (dokon, o'rta) REPEATABLE READ ni o'rnating va darajani tekshiring.

Kutilgan natija
repeatable read

6. (dokon, o'rta) SELECT ... FOR UPDATE: 1-mahsulot qatorini bloklab, qoldiqni 1 ga kamaytiring.

Kutilgan natija
16

7. (dokon, o'rta) FOR UPDATE SKIP LOCKED: 1-3 mahsulotni bloklab olish, nechta qator qaytdi.

Kutilgan natija
3

8. (dokon, o'rta) Advisory lock: pg_advisory_xact_lock(42) olingach, shu sessiya locklari ro'yxatida bor-yo'qligini ko'rsating.

Kutilgan natija
1

9. (dokon, o'rta) LOCK TABLE: ACCESS EXCLUSIVE bilan mijoz jadvalini bloklab, pg_locks da shu rejimdagi lock bormi.

Kutilgan natija
1

10. (dokon, qiyin) Tranzaksiya ichida now() qo'shma emas: bir tranzaksiyada ikki marta now() va clock_timestamp() — now() ikki marta bir xilmi.

Kutilgan natija
t

11. (dokon, qiyin) DEFERRED constraint: FK ni SET CONSTRAINTS ALL DEFERRED qilib, mavjud bo'lmagan mahsulotga element qo'shing, keyin mahsulotni yarating (mahsulot_id=900). Cheklov tuzatilganini tekshiring.

Kutilgan natija
1

12. (dokon, qiyin) pg_advisory_xact_lock ning try varianti: pg_try_advisory_xact_lock(7) true qaytaradimi.

Kutilgan natija
t

13. (maktab, oson) Tranzaksiyada bahoni o'chirib ROLLBACK TO savepoint qiling: baholar soni o'zgarmasin.

Kutilgan natija
150

14. (maktab, o'rta) READ ONLY tranzaksiya: SET TRANSACTION READ ONLY va holatni tekshiring.

Kutilgan natija
on

15. (maktab, o'rta) FOR SHARE bilan o'quvchini o'qish va pg_locks da RowShareLock bor-yo'qligi (maktab.oquvchi).

Kutilgan natija
1

16. (maktab, qiyin) Ichma-ich savepoint: s1, s2 qo'yib, s1 ga qaytish s2 ni ham bekor qiladi: 3 ta fan qo'shib (9, s1, 10, s2, 11), s1 ga ROLLBACK TO; fanlar soni (9 bor).

Kutilgan natija
9

17. (bank, oson) Pul o'tkazma atomikligi: ikki UPDATE bitta tranzaksiyada; umumiy balans o'zgarmasligini tekshiring.

Kutilgan natija
0.00

18. (bank, o'rta) SELECT FOR UPDATE bilan hisobni bloklab, balans yetarliligini tekshirib yechish: 1-hisobdan 100 yeching.

Kutilgan natija
1234467.00

19. (bank, o'rta) Isolation: SERIALIZABLE READ ONLY DEFERRABLE ni o'rnating va tekshiring.

Kutilgan natija
serializable | on

20. (bank, qiyin) NOWAIT: 1-hisobni FOR UPDATE NOWAIT bilan olish (bir sessiyada muammosiz) va natija qatori.

Kutilgan natija
1

21. (bank, qiyin) Savepoint bilan qisman xato: xato SQL ni (1/0) PL/pgSQL EXCEPTION bloki bilan ushlang va keyingi insertni saqlang (DO blok).

Kutilgan natija
6

22. (kutubxona, oson) Tranzaksiyada a'zo qo'shib, SAVEPOINT ga qaytib, a'zolar sonini tekshiring.

Kutilgan natija
25

23. (kutubxona, o'rta) Pessimistik bloklash: kitob 1 ni FOR UPDATE bilan o'qib nusxani 1 ga kamaytirish.

Kutilgan natija
1

24. (kutubxona, qiyin) Deadlock oldini olish: ikki qatorni doim id tartibida bloklash: SELECT ... ORDER BY id FOR UPDATE (1,2 kitoblar) va qaytgan qatorlar soni.

Kutilgan natija
2

25. (kutubxona, qiyin) Optimistik bloklash: versiya ustuni bilan yangilash: kitob ga 'versiya' qo'shib, versiya=0 sharti bilan UPDATE; nechta qator yangilandi (CTE).

Kutilgan natija
1