Hozirgi kunda aatning rivojlanishi ikki yo`nalishda olib borilmoqda



Download 347 Kb.
bet31/35
Sana07.04.2022
Hajmi347 Kb.
#533248
1   ...   27   28   29   30   31   32   33   34   35
yozishni blokirovkalash - tranzaksiyalar satrlarni jadvallarga shunday joylashtiradiki, ushbu satrlar uchun boshqa tranzaksiya so'rovi bekor qilinadi.
o'qish blokirovkasi - tranzaksiyalar qatorlarni blokirovka qiladi, shunda ushbu yozuvlarni blokirovka qilish bo'yicha boshqa tranzaktsiyaning so'rovi rad qilinadi.
Ma'lumotlar bazasi ma'lumotlarga kirish protokoli mos kelish muammosining oldini olish uchun foydalanadi. Uning mohiyati quyidagicha:



  • Jadvaldagi ma'lumotlar satridagi harakatlar natijasida olingan ma'lumotlar, ushbu satrda o'qish uchun blokirovkaga ega bo'lishi kerak bo'lgan operatsiya;

  • ma'lumotlar qatorini o'zgartirishga mo'ljallangan operatsiya unga yozuv blokirovkasini qo'yadi;

  • agar mavjud blokirovka tufayli qatorda talab qilingan qulf rad qilinsa, u holda blokirovka qo'yilguncha bitim kutish rejimiga o'tkaziladi;

  • yozish qulfi bitim oxirigacha saqlanib qoladi.

Ma'lumotlar bazasini parallel ravishda qayta ishlash muammosining yechimi shundaki, jadval satrlari qulflanadi va bu qatorlarni o'zgartiradigan keyingi operatsiyalar bekor qilinadi va kutish holatiga o'tkaziladi. Ma'lumotlar bazasining yaxlitligini saqlab qolish xususiyati tufayli tranzaksiyalar foydalanuvchilarni xavfsiz holatga keltiradigan moslamalardir. Darhaqiqat, agar ma'lumotlar bazasi bilan o'zaro munosabatlarning har bir seansi tranzaksiya orqali amalga oshirilsa, foydalanuvchi ma'lumotlar bazasining izchil holatiga - foydalanuvchi o'zi bilan ishlayotgan bo'lsa ham, bo'lishi mumkin bo'lgan holatga murojaat qilishdan boshlanadi.


Tranzaksiyalarni boshqarish. Tranzaksiyalarni boshqarish uchun quyidagi buyruqlardan foydalaniladi:


COMMIT - O'zgarishlarni saqlaydi
ROLLBACK - O'zgarishlarni qaytaradi (bekor qilish)
SAVEPOINT - Tranzaksiyalar guruhi orqaga qaytarishi mumkin bo'lgan nuqtani yaratadi
SET TRANSACTION - Tranzaksiya nomini joylashtiradi.

Tranzaktsiyalarni boshqarish buyruqlari faqat DML buyruqlari uchun ishlatiladi: INSERT, UPDATE, DELETE. Ularni jadval yaratish, o'zgartirish yoki yo'q qilish paytida ishlatib bo'lmaydi.


Misollar:


Ishni boshlashdan oldin, avtomatik tranzaktsiyalarni bajarilishini o'chirish uchun quyidagi buyruqni bajaring:

mysql> SET autocommit=0;


Aytaylik, bizda developers jadvali quyidagi yozuvlarni o'z ichiga oladi:


+----+-------------------+-----------+------------+--------+


| ID | NAME | SPECIALTY | EXPERIENCE | SALARY |
+----+-------------------+-----------+------------+--------+
| 1 | Eugene Suleimanov | Java | 2 | 2500 |
| 2 | Peter Romanenko | Java | 3 | 3500 |
| 3 | Andrei Komarov | C++ | 3 | 2500 |
| 4 | Konstantin Geiko | C# | 2 | 2000 |
| 5 | Asya Suleimanova | UI/UX | 2 | 1800 |
| 7 | Ivan Ivanov | C# | 1 | 900 |
| 8 | Ludmila Geiko | UI/UX | 2 | 1800 |
+----+-------------------+-----------+------------+--------+
Quyidagi buyruq bilan C ++ dasturchilarining barchasini o'chirib tashlang:

mysql> DELETE FROM developers


WHERE SPECIALTY = 'C++';

mysql> COMMIT;


Ushbu so'rovni bajarish natijasida bizning jadval quyidagi yozuvlarni o'z ichiga oladi:


+----+-------------------+-----------+------------+--------+
| ID | NAME | SPECIALTY | EXPERIENCE | SALARY |
+----+-------------------+-----------+------------+--------+
| 1 | Eugene Suleimanov | Java | 2 | 2500 |
| 2 | Peter Romanenko | Java | 3 | 3500 |
| 4 | Konstantin Geiko | C# | 2 | 2000 |
| 5 | Asya Suleimanova | UI/UX | 2 | 1800 |
| 7 | Ivan Ivanov | C# | 1 | 900 |
| 8 | Ludmila Geiko | UI/UX | 2 | 1800 |
+----+-------------------+-----------+------------+--------+

Endi ROLLBACK buyrug'ini bajarishga harakat qilaylik:


mysql> ROLLBACK;
Ushbu buyruqni bajargandan so'ng bizning jadvalimizda quyidagi ma'lumotlar mavjud:

+----+-------------------+-----------+------------+--------+


| ID | NAME | SPECIALTY | EXPERIENCE | SALARY |
+----+-------------------+-----------+------------+--------+
| 1 | Eugene Suleimanov | Java | 2 | 2500 |
| 2 | Peter Romanenko | Java | 3 | 3500 |
| 3 | Andrei Komarov | C++ | 3 | 2500 |
| 4 | Konstantin Geiko | C# | 2 | 2000 |
| 5 | Asya Suleimanova | UI/UX | 2 | 1800 |
| 6 | Ludmila Geiko | UI/UX | 2 | 1800 |
| 7 | Ivan Ivanov | C# | 1 | 900 |
+----+-------------------+-----------+------------+--------+

Ko'rib turganimizdek, C ++ dasturchisining yozuvi yana jadvalda.


Endi SAVEPOINT bilan shug'ullanishga harakat qilaylik.


Birinchidan, quyidagi so'rov yordamida saqlash nuqtasini yarataylik:

mysql> SAVEPOINT SP1;


Endi quyidagi so'rovlarni bajaramiz:


mysql> DELETE FROM developers WHERE ID = 7;


Query OK, 1 row affected (0.00 sec)

mysql> DELETE FROM developers WHERE ID = 6;


Query OK, 1 row affected (0.02 sec)

mysql> DELETE FROM developers WHERE ID = 5;


Query OK, 1 row affected (0.00 sec)

Ayni paytda bizning jadvalimizda quyidagi yozuvlar mavjud:


+----+-------------------+-----------+------------+--------+


| ID | NAME | SPECIALTY | EXPERIENCE | SALARY |
+----+-------------------+-----------+------------+--------+
| 1 | Eugene Suleimanov | Java | 2 | 2500 |
| 2 | Peter Romanenko | Java | 3 | 3500 |
| 3 | Andrei Komarov | C++ | 3 | 2500 |
| 4 | Konstantin Geiko | C# | 2 | 2000 |
+----+-------------------+-----------+------------+--------+

Endi SP1 saqlash nuqtasiga quyidagi buyruq bilan qaytamiz:


mysql> ROLLBACK TO SP1;


Ushbu so'rovni bajargandan so'ng, jadvalimiz quyidagi yozuvlarni saqlaydi:


+----+-------------------+-----------+------------+--------+


| ID | NAME | SPECIALTY | EXPERIENCE | SALARY |
+----+-------------------+-----------+------------+--------+
| 1 | Eugene Suleimanov | Java | 2 | 2500 |
| 2 | Peter Romanenko | Java | 3 | 3500 |
| 3 | Andrei Komarov | C++ | 3 | 2500 |
| 4 | Konstantin Geiko | C# | 2 | 2000 |
| 5 | Asya Suleimanova | UI/UX | 2 | 1800 |
| 6 | Ludmila Geiko | UI/UX | 2 | 1800 |
| 7 | Ivan Ivanov | C# | 1 | 900 |
+----+-------------------+-----------+------------+--------+
Ko'rib turganimizdek, biz SP1 saqlash nuqtasini yaratishda jadval holatiga qaytdik.

Endi biz ushbu saqlash nuqtasiga muhtoj bo'lmay turib, uni ozod qilishimiz mumkin:


mysql> RELEASE SAVEPOINT SP1;


Va nihoyat, ma'lumotlar bazasi tranzaksiyasini boshlash uchun ishlatiladigan SET TRANSACTION buyrug'ini ko'rib chiqamiz. Bu buyruq bizga tranzaksiyaning xususiyatlarini aniqlashga imkon beradi.


Masalan, agar biz tranzaksiya faqat o'qish uchun ekanligini ko'rsatmoqchi bo'lsak, unda biz quyidagi so'rovdan foydalanishimiz kerak.

SET TRANSACTION READ ONLY;


Agar biz tranzaksiyalar ma'lumotlarni yoza olishini istasak, unda so'rov quyidagicha bo'ladi:
SET TRANSACTION READ WRITE;

Download 347 Kb.

Do'stlaringiz bilan baham:
1   ...   27   28   29   30   31   32   33   34   35




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish