مرکزی مواد پر جائیں
ماڈیول 11 · سبق 4 از 4کورس میں 44/57~12 min
ماڈیول اسباق (4/4)

تنہائی کی سطحیں۔

اپ ڈیٹ کے لیے واضح سے ہٹ کر، ٹرانزیکشنز میں بھی فطری ریاضیاتی اصول ہوتے ہیں جو انجن کی گہرائی میں بنے ہوتے ہیں جو اس بات پر حکمرانی کرتے ہیں کہ ہر انفرادی تعامل کو بطور ڈیفالٹ الگ کرنے میں کتنی توانائی خرچ کرنی ہے۔ اسے Isolation Level کہا جاتا ہے۔ ایس کیو ایل دنیا میں ہم طاقت اور حفاظت کے لحاظ سے 4 معیاری جانتے ہیں لیکن ظاہر ہے کارکردگی کے لحاظ سے الٹا۔

  • READ UNCOMMITTED: انتشاری جنون، آپ کے لین دین میں دوسروں کی طرف سے کی جانے والی ہر تبدیلی نظر آئے گی جس میں لوگوں کے عارضی ڈیٹا ان کی اپنی اسکرپٹ کے ذریعے آدھے راستے میں شامل ہیں۔ مسلسل گندی پڑھنے کی غلطیوں کی وجہ سے کوئی بھی اسے بڑے DBs پر استعمال نہیں کرتا ہے۔
  • READ COMMITTED: (پوسٹگریس کے لیے ڈیفالٹ)۔ جیسے ہی کوئی فریق ثالث COMMIT جاری کرے گا آپ کو فوری طور پر نیا ڈیٹا نظر آئے گا، لیکن آپ فینٹم ریڈز (اپنے طویل ورک فلو کے درمیان نئے ریکارڈز دیکھنا) یا غیر لکیری مسلسل نظارے کا شکار ہو سکتے ہیں۔
  • REPEATABLE READ: زیادہ بھاری۔ آپ کے بڑے ٹائم ونڈو سیشن کے دورانیے کے لیے میں ڈیٹابیس کو "دیکھتا ہوں" جس وقت میرا استفسار شروع ہوا، مکمل طور پر نظر انداز کیا گیا اور یہاں تک کہ دوسرے لوگوں کی طرف سے مکمل کیے گئے سرکاری وعدوں کو بھی نظر انداز کیا گیا! یہ ریکارڈز کو جادوئی طور پر ظاہر ہونے سے بچاتا ہے، استحکام کی ضمانت دیتا ہے۔
  • SERIALIZABLE: خدا کا درجہ (سپر سست)۔ ہر اوور لیپنگ ٹرانزیکشن کو بلاک کرکے اور انہیں ایک ہی لین میں سلسلہ وار انجام دے کر، ٹکرانے والوں کو بے رحمی سے روک کر، معمولی تصادم کے سائنسی امکان کو جڑ سے ختم کرکے، ٹھوس 90% اعلی تھرو پٹ کی قربانی دے کر علاج کرتا ہے۔

آپ اسے کیسے ترتیب دیتے ہیں؟

عام BEGIN; کے بجائے آپ ٹائپ کرتے ہیں:

SQL
BEGIN ISOLATION LEVEL SERIALIZABLE;

-- and you proceed normally with your hermetically sealed isolation
UPDATE products SET stock = 10;
COMMIT;

یا کچھ متغیرات اور پرانے انجنوں میں آپ اسے شروع کرنے کے بعد تفویض کرتے ہیں:

SQL
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;

خود ہی آزمائیں۔

ورزش#sql.m11.l4.e1
کوششیں: 0لوڈ ہو رہا ہے…

ایک منجمد، محفوظ ایکسچینج بنانے کے لیے استفسار کی زندگی بھر کے لیے عالمی سطح کو باقاعدہ طور پر ترتیب دیتے ہوئے ایک ٹرانزیکشن شروع کریں۔\nیاد رکھیں کہ استفسار کی سطح پر اس کا کوئی مقصد نہیں ہوتا جب تک کہ کسی اور چیز کی پیروی نہ کی جائے، اس لیے اسے 'COMMIT' کے ساتھ خالی بند کریں۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

BEGIN Isolation LEVEL REPEATable READ کے ساتھ کھولیں؛ اور COMMIT کے ساتھ بند کریں؛

3 کوششوں کے بعد حل دستیاب ہے۔

ورزش#sql.m11.l4.e2
کوششیں: 0لوڈ ہو رہا ہے…

آئیے دیوانہ وار سیریلائز لیول آزماتے ہیں اور کچھ فرضی ڈیٹا داخل کرتے ہیں۔\nایک 'SERIALIZABLE' بلاک کھولیں۔\nکیٹیگری Id=2 کا نام 'Nuovo Nome Segreto' میں اپ ڈیٹ کریں۔\nفائنل ایٹم کو چلائیں، سیٹلنگ کمٹ۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

آئیسولیشن لیول سیریلائزبل شروع کریں؛\nکیٹیگریز کو اپ ڈیٹ کریں SET name = 'Nuovo Nome Segreto' جہاں id = 2؛\ncommit;

3 کوششوں کے بعد حل دستیاب ہے۔