Middle
SQLda qanday blokirovka turlari mavjud?
sobes.tech AI
AIdan javob
SQL'da blok turlari:
-
Dar daraja:
- Jadval bloklari (Table Locks): Butun jadvalni bloklaydi. Oson amalga oshiriladi, ammo paralellikni sezilarli darajada kamaytirishi mumkin. Butun jadvalni o'zgartiradigan operatsiyalar uchun yaxshi (masalan,
ALTER TABLE). - Qator bloklari (Row Locks): Boshqa qatorlarni bloklaydi. Yuqori paralellikni ta'minlaydi, ammo boshqarish uchun ko'proq resurs talab qiladi. Ko'pchilik DBMSlarda
INSERT,UPDATE,DELETEuchun standart foydalaniladi.
- Jadval bloklari (Table Locks): Butun jadvalni bloklaydi. Oson amalga oshiriladi, ammo paralellikni sezilarli darajada kamaytirishi mumkin. Butun jadvalni o'zgartiradigan operatsiyalar uchun yaxshi (masalan,
-
Kirish turiga ko'ra:
- Ulashilgan blok (Shared Lock - S Lock): Bir nechta tranzaktsiyalar ma'lumotlarni bir vaqtning o'zida o'qishiga imkon beradi, ammo boshqalar yozishni taqiqlaydi.
- Ekskluziv blok (Exclusive Lock - X Lock): Faqat bitta tranzaktsiya ma'lumotlarga kirish huquqiga ega (o'qish va yozish) va boshqalarni bloklaydi.
- Niyat blok (Intention Lock): DBMSga tranzaktsiyalar pastroq darajadagi bloklarni (qatorlar yoki jadvallar) o'rnatishni rejalashtirayotganini ko'rsatadi. Masalan,
IS(Intention Shared),IX(Intention Exclusive). Bu DBMSga bloklarning mosligini tezroq tekshirishga yordam beradi.
-
Boshqa turlar:
- Oraliq blok (Range Lock): Indeksdagi qatorlar oraliğini bloklaydi. Fantom o'qishni oldini olish uchun ishlatiladi.
- Metama'lumotlar bloklari (Metadata Lock): Ob'ektning metama'lumotlarini (jadval, ko'rinish va boshqalar) bloklaydi. DDL operatsiyalari davomida ishlatiladi.
Bloklarning mosligi, bir nechta tranzaktsiya bir vaqtning o'zida ma'lum turlar bloklarni ushlab turishi mumkinligini belgilaydi.
| Blok turi | S | X | IS | IX |
|---|---|---|---|---|
| S | Ha | Yo'q | Ha | Yo'q |
| X | Yo'q | Yo'q | Yo'q | Yo'q |
| IS | Ha | Yo'q | Ha | Ha |
| IX | Yo'q | Yo'q | Ha | Ha |