سلام به همه پی وی لرنی های عزیز!
به دوره آموزش دوره آموزش سیستم مدیریت پایگاه داده DBMS خوش آمدید.
Database Management System یا سیستم مدیریت پایگاه داده که به صورت خلاصه به آن DBMS می گویند؛ به فناوری ذخیره و بازیابی اطلاعات کاربران با حداکثر کارآیی در کنار اقدامات امنیتی مناسب اشاره دارد. در این آموزش اصول اولیه سیستم مدیریت پایگاه داده یا DBMS مانند معماری آن، مدل های داده، طرحواره داده ها، استقلال داده ها، مدل E-R، مدل رابطه، طراحی بانک اطلاعاتی رابطه ای، و ذخیره سازی و ساختار پرونده و موارد دیگر را می آموزیم.
در جلسه گذشته به بررسی موضوع هم زمانی در سیستم مدیریت پایگاه داده پرداختیم؛ از پروتکل های کنترل همزمانی یا Concurrency Control را برای اطمینان از ظرفیت اتمی atomicity و جداسازی isolation و قابلیت تسلسل serializability برای transactions های همزمان استفاده می کنیم.
در این جلسه می خواهیم به آشنایی با Deadlock در سیستم مدیریت پایگاه داده ( DBMS ) بپردازیم.
در یک سیستم چند فرآیندی Deadlock (بن بست) وضعیتی ناخواسته است که در یک محیط منبع اشتراکی بوجود می آید، جایی که یک فرآیند به طور نامحدود منتظر منبع است که توسط یک فرآیند دیگر برگزار می شود.
به عنوان مثال ، مجموعه ای از معاملات ass T0 ، T1 ، T2 ، … ، Tn ume را فرض کنید. T0 برای تکمیل کار خود به یک منبع X نیاز دارد. Resource X توسط T1 برگزار می شود و T1 منتظر منبع Y است که توسط T2 برگزار می شود. T2 منتظر منبع Z است که توسط T0 برگزار می شود. بنابراین ، تمام فرایندها منتظر هستند تا منابع آزاد شوند. در این شرایط ، هیچ یک از فرایندها نمی توانند وظیفه خود را تمام کنند. این وضعیت به بن بست یا Deadlock معروف است.
بن بست برای یک سیستم سالم نیست. در صورت گیر افتادن سیستم در بن بست، transactions ها درگیر در بن بست یا به عقب رانده می شوند یا مجدداً راه اندازی می شوند.
به عنوان اولین موضوع در آشنایی با Deadlock در سیستم مدیریت پایگاه داده به موضوع می پردازیم که چگونه می توان از Deadlock یا بن بست جلوگیری کرد.
برای جلوگیری از هرگونه وضعیت بن بست در سیستم ، DBMS تمام عملیات را بررسی می کند، (جایی که transactions ها در حال انجام است.) DBMS آن را بازرسی می کند و تجزیه و تحلیل می کند که آیا می تواند وضعیت بن بست را ایجاد کند یا خیر. اگر متوجه شود ممکن است وضعیت بن بست وجود داشته باشد ، هرگز آن معامله مجاز به اجرای نخواهد بود.
طرح های پیشگیری از بن بست وجود دارند که از مکانیسم ترتیب زمان transactions استفاده می کنند تا از این طریق وضعیت پیش بینی شده را تعیین کنند.
در این طرح، اگر یک transaction بخواهد قفل یک منبع (مورد داده) را که قبلاً توسط یک transaction دیگر با یک قفل متناقض نگه داشته شده است، قفل کند، ممکن است یکی از دو امکان زیر رخ دهد.
اسکیما Wait-Die اجازه می دهد تا transaction قدیمی تر صبر کند اما transaction جدید را از بین می برد.
در اسکیما Wound-Wait اگر یک transaction بخواهد قفل منبعی (مورد داده) را که قبلاً توسط یک transaction دیگر با قفل متناقض نگه داشته شده است، قفل کند ، ممکن است یکی از دو امکان زیر رخ دهد:
اسکیما Wound-Wait اجازه می دهد تا transaction جدید منتظر بماند. اما هنگامی که transaction قدیمی تر موردی را که توسط transaction جدید نگهداری می شود درخواست کند، transaction قدیمی تر transaction جدید را مجبور به رهایی و آزاد کردن این مورد می کند.
در هر دو مورد ، transaction که در مرحله بعدی وارد سیستم می شود، قطع می شود.
متوقف کردن transaction همیشه یک رویکرد عملی نیست. در عوض می توان از مکانیسم های جلوگیری از بن بست (Deadlock Avoidance) برای پیشبرد هرگونه وضعیت بن بست استفاده کرد. روش هایی مانند “wait-for graph” در دسترس است اما آنها فقط برای سیستمهایی که transaction ها دارای وزن سبک هستند و مصادیق کمتری از منابع دارند مناسب هستند. در یک سیستم حجیم، تکنیک های جلوگیری از بن بست ممکن است بهتر عمل کند.
در ادامه آشنایی با Deadlock در سیستم مدیریت پایگاه داده ( DBMS ) می خواهیم به سراغ تکنیک Wait-for Graph و آشنایی با آن برویم.
این تکنیک روش ساده برای ردیابی وضعیت احتمالی بن بست در دسترس است. برای هر transaction که وارد سیستم می شود، یک گره یا node ایجاد می شود. هنگامی که یک transaction Ti درخواست قفل کردن یک مورد را دارد ، به آن X گفته می شود، که توسط برخی دیگر از transaction Ti برگزار می شود، یک لبه directed از Ti تا Tj ایجاد می شود. اگر Tj مورد X را آزاد کند ، لبه بین آنها می افند و Ti آیتم داده را قفل می کند.
سیستم این نمودار انتظار را برای هر transaction که منتظر برخی از داده های داده شده توسط دیگران است، حفظ می کند. این سیستم بررسی می کند که آیا چرخه ای در نمودار وجود دارد یا خیر.
در اینجا می توانیم از هر دو روش زیر استفاده کنیم:
در این جلسه به آشنایی با Deadlock در سیستم مدیریت پایگاه داده ( DBMS ) پرداختیم؛ در یک سیستم چند فرآیندی Deadlock (بن بست) وضعیتی ناخواسته است که در یک محیط منبع اشتراکی بوجود می آید، جایی که یک فرآیند به طور نامحدود منتظر منبع است که توسط یک فرآیند دیگر برگزار می شود. بن بست برای یک سیستم سالم نیست. در صورت گیر افتادن سیستم در بن بست، transactions ها درگیر در بن بست یا به عقب رانده می شوند یا مجدداً راه اندازی می شوند.
در جلسه بعدی فصل جدیدی از این مجموعه آموزشی را آغاز می کنیم و به سراغ بک آپ و نسخه های پشتیبان و بحث ریکاوری داده ها می رویم.
با پی وی لرن همراه باشید.