دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۱۷
  • اردیبهشت

جلسه ۲۲ : آشنایی با Deadlock در سیستم مدیریت پایگاه داده ( DBMS )

  • دسته‌بندی‌ها :
جلسه ۲۲ : آشنایی با Deadlock در سیستم مدیریت پایگاه داده ( DBMS )
    • جزئیات
    • نوع محتواآموزشی

      سلام به همه پی وی لرنی های عزیز!
      به دوره آموزش دوره آموزش سیستم مدیریت پایگاه داده DBMS خوش آمدید.
      Database Management System یا سیستم مدیریت پایگاه داده که به صورت خلاصه به آن DBMS می گویند؛ به فناوری ذخیره و بازیابی اطلاعات کاربران با حداکثر کارآیی در کنار اقدامات امنیتی مناسب اشاره دارد. در این آموزش اصول اولیه سیستم مدیریت پایگاه داده یا DBMS مانند معماری آن، مدل های داده، طرحواره داده ها، استقلال داده ها، مدل E-R، مدل رابطه، طراحی بانک اطلاعاتی رابطه ای، و ذخیره سازی و ساختار پرونده و موارد دیگر را می آموزیم.
      در جلسه گذشته به بررسی موضوع هم زمانی در سیستم مدیریت پایگاه داده پرداختیم؛ از پروتکل های کنترل همزمانی یا Concurrency Control را برای اطمینان از ظرفیت اتمی atomicity و جداسازی isolation و قابلیت تسلسل serializability  برای transactions های همزمان استفاده می کنیم.
      در این جلسه می خواهیم به آشنایی با Deadlock در سیستم مدیریت پایگاه داده ( DBMS ) بپردازیم.

      آشنایی با 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 استفاده می کنند تا از این طریق وضعیت پیش بینی شده را تعیین کنند.

      Wait-Die Scheme اسکیما Wait-Die

      در این طرح، اگر یک transaction بخواهد قفل یک منبع (مورد داده) را که قبلاً توسط یک transaction دیگر با یک قفل متناقض نگه داشته شده است، قفل کند، ممکن است یکی از دو امکان زیر رخ دهد.

      • اگر (TS (Ti) <TS (Tj – یعنی Ti ، که درخواست قفل متضاد است ، قدیمی تر از Tj است – پس از آن Ti مجاز است تا زمان دسترسی به داده را صبر کند.
      • اگر (TS (Ti)> TS (tj – یعنی Ti جدیدتر از Tj است – پس Ti از بین می رود. Ti بعداً با تاخیر تصادفی اما با همان، هم زمانی، دوباره شروع می شود.

      اسکیما Wait-Die اجازه می دهد تا transaction قدیمی تر صبر کند اما transaction جدید را از بین می برد.

      Wound-Wait Scheme اسکیما Wound-Wait

      در اسکیما Wound-Wait اگر یک transaction  بخواهد قفل منبعی (مورد داده) را که قبلاً توسط یک transaction دیگر با قفل متناقض نگه داشته شده است، قفل کند ، ممکن است یکی از دو امکان زیر رخ دهد:

      • اگر (TS (Ti) <TS (Tj، پس از آن Ti مجبور می شود Tj به عقب برگردانده شود – یعنی Ti نشانه های Tj. Tj بعداً با تأخیر تصادفی اما با همان هم زمانی دوباره شروع می شود.
      • اگر (TS (Ti)> TS (Tj، آنگاه Ti مجبور است صبر کند تا منبع در دسترس قرار گیرد.

      اسکیما Wound-Wait اجازه می دهد تا transaction  جدید منتظر بماند. اما هنگامی که transaction  قدیمی تر موردی را که توسط transaction جدید نگهداری می شود درخواست کند، transaction قدیمی تر transaction  جدید را مجبور به رهایی و آزاد کردن این مورد می کند.

      نکته

      در هر دو مورد ، transaction که در مرحله بعدی وارد سیستم می شود، قطع می شود.

      متوقف کردن transaction همیشه یک رویکرد عملی نیست. در عوض می توان از مکانیسم های جلوگیری از بن بست (Deadlock Avoidance) برای پیشبرد هرگونه وضعیت بن بست استفاده کرد. روش هایی مانند “wait-for graph” در دسترس است اما آنها فقط برای سیستمهایی که transaction  ها دارای وزن سبک هستند و مصادیق کمتری از منابع دارند مناسب هستند. در یک سیستم حجیم، تکنیک های جلوگیری از بن بست ممکن است بهتر عمل کند.

      در ادامه آشنایی با Deadlock در سیستم مدیریت پایگاه داده ( DBMS ) می خواهیم به سراغ تکنیک Wait-for Graph و آشنایی با آن برویم.

      تکنیک Wait-for Graph

      این تکنیک روش ساده برای ردیابی وضعیت احتمالی بن بست در دسترس است. برای هر transaction که وارد سیستم می شود، یک گره یا node ایجاد می شود. هنگامی که یک transaction Ti درخواست قفل کردن یک مورد را دارد ، به آن X گفته می شود، که توسط برخی دیگر از transaction Ti برگزار می شود، یک لبه directed از Ti تا Tj ایجاد می شود. اگر Tj مورد X را آزاد کند ، لبه بین آنها می افند و Ti آیتم داده را قفل می کند.

      سیستم این نمودار انتظار را برای هر transaction که منتظر برخی از داده های داده شده توسط دیگران است، حفظ می کند. این سیستم بررسی می کند که آیا چرخه ای در نمودار وجود دارد یا خیر.

      آشنایی با Deadlock در سیستم مدیریت پایگاه داده ( DBMS )

      آشنایی با Deadlock در سیستم مدیریت پایگاه داده ( DBMS )

      در اینجا می توانیم از هر دو روش زیر استفاده کنیم:

      • ابتدا هیچ ریکوئستی را برای یک مورد که قبلاً توسط یک transaction دیگر قفل شده است، مجاز نکنید. البته این کار همیشه امکان پذیر نیست و ممکن است باعث starvation شود (جایی که transaction به طور نامحدود منتظر یک مورد است و هرگز نمی تواند آن را بدست آورد.)
      • گزینه دوم برگرداندن یکی از transaction هاست. عقب افتادن transaction جدید همیشه امكان پذیر نیست ، زیرا این امر می تواند مهمتر از transaction های قدیمی تر باشد. با کمک برخی از الگوریتم های نسبی ، transaction ای انتخاب می شود که باید بی افتد. این transaction به عنوان قربانی (victim) شناخته می شود و این روند به عنوان victim selection شناخته می شود.

      سخن پایانی

      در این جلسه به آشنایی با Deadlock در سیستم مدیریت پایگاه داده ( DBMS ) پرداختیم؛ در یک سیستم چند فرآیندی Deadlock (بن بست) وضعیتی ناخواسته است که در یک محیط منبع اشتراکی بوجود می آید، جایی که یک فرآیند به طور نامحدود منتظر منبع است که توسط یک فرآیند دیگر برگزار می شود. بن بست برای یک سیستم سالم نیست. در صورت گیر افتادن سیستم در بن بست، transactions ها درگیر در بن بست یا به عقب رانده می شوند یا مجدداً راه اندازی می شوند.
      در جلسه بعدی فصل جدیدی از این مجموعه آموزشی را آغاز می کنیم و به سراغ بک آپ و نسخه های پشتیبان و بحث ریکاوری داده ها می رویم.
      با پی وی لرن همراه باشید.

      QR:  جلسه ۲۲ : آشنایی با Deadlock در سیستم مدیریت پایگاه داده ( DBMS )
      به اشتراک بگذارید