ترمیم پایگاه داده ها

Download Report

Transcript ترمیم پایگاه داده ها

‫پایگاه داده پیشرفته‬
‫فصل چهارم‬
‫ترمیم‬
‫روح اله امیدوار‪ -‬علی حیدری‪ -‬محمد دژداخ ‪ -‬حامد حسینی‬
‫دلیل لزوم ترمیم‬
‫•‬
‫پایگاه داده ها بالقوه در معرض اسیب است‪ (.‬انواع نقص (عیب) و درنتیجه خرابی ممکن است در پایگاه داده بروز کند‪).‬‬
‫•‬
‫سیستم مدیریت پایگاه داده ها باید بتواند در صورت بروز خرابی پایگاه داده ها را ترمیم و اسیب و خسارات وارده بران را جبران کند‪.‬‬
‫‪2‬‬
‫تعریف ترمیم‬
‫•‬
‫ترمیم یعنی بازگرداندن پایگاه داده ها به وضع سازگاری که درست قبل از بروز خرابی داشت (بازگرداندن به اخرین وضع سازگار‪ ،‬به گونه ای که‬
‫اثری از خرابی در ان نباشد‪).‬‬
‫•‬
‫‪3‬‬
‫ترمیم ‪ ،‬فرایندی است که در صورت بروز خرابی ‪ ،‬پایگاه داده ها را به وضع صحیح برمی گرداند‪.‬‬
‫ترمیم پایگاه داده ها‬
‫استراتژی واحد مدیریت ترمیم ‪ ،‬برای ترمیم پایگاه داده ها پس از بروز خرابی به دو صورت زیر است‪:‬‬
‫‪1‬‬
‫• فرایند بازانجام )بازکرد(‬
‫• فرایند پادکرد )خنثی سازی(‬
‫‪2‬‬
‫‪1- Redoing‬‬
‫‪2 Undoing‬‬
‫‪4‬‬
‫خرابیها‬
‫انواع خرابی به طور کلی‬
‫‪3‬‬
‫• خرابی سیستمی‪(1‬خدشه نرم)‬
‫سبب می شود تا حداقل یک و معموال تمام تراکنشهای در جریان در سیستم اسیب ببینند ولی داده های ذخیره شده درحافظه جانبی‬
‫دچارخرابی نمی شوند‪.‬‬
‫مثل قطع جریان برق در حافظه اصلی‬
‫•‬
‫خرابی سیستمی وقتی که پایگاه داده های مقیم درحافظه اصلی داشته باشیم ‪ ،‬پیامدهای نامطلوب بیشتری می تواند داشته باشد که موضوع‬
‫این فصل نیست‪.‬‬
‫‪4‬‬
‫‪2‬‬
‫خرابی رسانه ای (خدشه سخت)‬
‫سبب ایجاد خرابی در تمام یا قسمتی از داده های ذخیره شده در حافظه مانا می شود و حداقل روی ان تراکنشهای ی که در حال استفاده از‬
‫داده ها هستند ‪ ،‬تاثیر می گذارد‪.‬‬
‫مثل خرابی در حافظه مانا(دیسک)‬
‫‪1- System failure‬‬
‫‪2- Media failure‬‬
‫‪3- Soft crash‬‬
‫‪5‬‬
‫‪4- Hard crash‬‬
‫انواع خرابی از نظر حیطه تاثیر‬
‫•‬
‫‪1‬‬
‫خرابی موضعی‬
‫تنها در اجرای یک تراکنش خاص خلل وارد می سازد و منجر به طرد تراکنش می شود که می گوییم خرابی تراکنش پیش امده است‪.‬‬
‫‪ ‬بروز سرریز در محاسباتی که تراکنش انجام می دهد‪.‬‬
‫‪ ‬انجام عمل تقسیم برصفر‬
‫‪ ‬وجود اشتباه منطقی در برنامه سازی‬
‫‪ ‬دادن مقادیر اشتباه به پارامترها در برنامه‬
‫•‬
‫خرابی سراسری‬
‫‪2‬‬
‫در اجرای تمام تراکنشهای در جریان خلل وارد می کند ومنجر به توقف اجرای تمام برنامه ها می شود وممکن است سیستمی یا رسانه ای‬
‫باشد‪.‬‬
‫‪ ‬قطع جریان برق در پردازنده مرکزی‬
‫‪ ‬بروزخرابی درحافظه نامانا (مثال در حافظه نهان که دراختیار مدیریت ترمیم باشد‪).‬‬
‫‪ ‬بروزخرابی درحافظه مانا‬
‫‪6‬‬
‫‪1- Local Failure‬‬
‫‪2- Global failure‬‬
‫انواع خرابی از نظر طول مدت‬
‫•‬
‫دائمی‬
‫‪1‬‬
‫خرابی در سخت افزار‬
‫•‬
‫ادوار‬
‫•‬
‫گذرا‬
‫ی‪2‬‬
‫‪3‬‬
‫سنگینی بار سیستم‬
‫خرابی ناشی ازافزایش دمای محیط‬
‫‪1- permanent‬‬
‫‪2- Intermittent‬‬
‫‪3- Transient‬‬
‫‪7‬‬
‫عوامل بروزخرابی‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫‪8‬‬
‫اشتباه برنامه سازی ‪ :‬ورودی نادرست ‪ ،‬بروز سرریز ‪ ،‬به سررسیدن مهلت اجرای برنامه و ‪...‬‬
‫اشتباه اپراتور ‪ :‬اشتباه در ‪ ، JCL‬در جابجای ی دیسکها ‪ ،‬در گذاشتن نوارها و‪...‬‬
‫اشتباه سیستمی ‪ :‬سیستم عامل یا سیستم مدیریت پایگاه داده ها‪،‬مثل بن بست‬
‫اشکال سخت افزاری ‪ :‬در پردازنده اصلی ‪ ،‬در حافظه اصلی ‪ ،‬در رسانه های ذخیره سازی‪ ،‬در شبکه‬
‫اشکال نرم افزاری ‪ :‬در سیستم عامل ‪ ،‬در سیستم مدیریت پایگاه داده ها و در برنامه های واسط ‪:‬مثل ویروس و ‪...‬‬
‫اشتباه عملیاتی (اشتباه درعملیات مربوط به فرایند ترمیم) ‪ :‬از بین رفتن نسخه پشتیبان‪ ،‬بازنویسی روی دیسک حاوی داده ها و‪...‬‬
‫رویدادهای محیطی ‪ :‬اتش سوزی‪،‬سیل‪،‬زلزله‪،‬قطع جریان برق‬
‫عملیات اسیب رسان توسط انسان ‪ :‬خرابکاری‪،‬دزدی و ‪...‬‬
‫اشکاالت دیگردر سیستم کامپیوتری ‪ :‬خرابی در خطوط ارتباط ‪ ،‬در پایانه و ‪...‬‬
‫زیرسیستم مدیریت ترمیم‬
‫•‬
‫•‬
‫•‬
‫درهرسیستم مدیریت پایگاه داده ها (غیر از سیستمهای تک کاربری) باید یک زیرسیستم برای مدیریت ترمیم پایگاه داده ها وجود داشته باشد‪.‬‬
‫طراحی زیرسیستمی که بتواند در همه انواع خرابیها ‪ ،‬به طور کارا عمل کند و همه اسیبها و خرابیها را جبران نماید‪ ،‬شدنی نیست‪ .‬اما سیستم باید‬
‫توان ترمیم کارای خرابیهای رایج را بدون دخالت انسان داشته باشد‪.‬‬
‫فرکانس بروز خرابیها در یک سیستم یکسان نیست اما سیستم درهرحال باید بتواند درهر مورد به طور مناسب اقدام کند‪.‬‬
‫به عنوان مثال ممکن است ‪:‬‬
‫‪ ‬خرابی تراکنش چند بار در دقیقه پیش اید‪.‬‬
‫‪ ‬خرابی سیستمی چند بار در ماه پیش اید‪.‬‬
‫‪ ‬خرابی رسانه ای چند بار در سال بروز کند‪.‬‬
‫‪9‬‬
‫اجزای زیرسیستم مدیریت ترمیم‬
‫•‬
‫•‬
‫‪10‬‬
‫مدیر ترمیم (واحد نرم افزاری)‬
‫امکاناتی برای ترمیم‬
‫‪ ‬حافظه مانا‬
‫‪ ‬حافظه نامانا‬
‫‪ ‬فایل ثبت‬
‫‪ ‬ایجاد نقطه وارسی‬
‫‪ ‬لیستهای کاری‬
‫‪ ‬نسخه پشتیبان‬
‫مدیرترمیم‬
‫‪1‬‬
‫•‬
‫مدیرترمیم از واحدهای الیه مدیریت محیط پایگاه داده ها در سیستم مدیریت پایگاه داده ها است‪.‬‬
‫•‬
‫دشوارترین واحد در این سیستم ‪ ،‬از نظر طراحی و پیاده سازی ‪ ،‬همین واحد مدیریت ترمیم است‪ ،‬زیرا زمانی فراخوانی می شود که سیستم در‬
‫حالت خرابی است‪.‬‬
‫•‬
‫وظیفه اصلی این واحد ‪ ،‬انجام فرایند ترمیم با استفاده از الگوریتمها و تکنیکهای ی است‪.‬‬
‫•‬
‫مدیر ترمیم با بعضی از مدیریتهای دیگر در سیستم از جمله مدیر حافظه نهان و زمان بند اجرا ارتباط دارد‪.‬‬
‫‪11‬‬
‫‪2‬‬
‫‪1- Recovery Manager‬‬
‫‪2- Cache Manager‬‬
‫محیط عملیاتی مدیرترمیم و ارتباطات ان با واحدها و اجزای دیگر سیستم‬
‫‪12‬‬
‫مدیر ترمیم‬
‫مدیر ترمیم با دو واحد زیر ارتباط‬
‫مستقیم دارد‪:‬‬
‫زمان بند اجرا •‬
‫مدیر بافر نهان •‬
‫‪13‬‬
‫وظیفه مدیر ترمیم پس از وقوع نقض سیستمی ‪:‬‬
‫فاز تحلیل ‪ :‬بررسی وضیعت بافرهای نهان جهت شناسای ی ‪:‬‬
‫•‬
‫•‬
‫صفحات تغییر یافته‬
‫تراکنش های فعال در لحظه بروز خرابی‬
‫صفحه تغییر یافته ‪ ،‬صفحه ای است که تغییرات اعمال شده در ان توسط یک تراکنش ‪ ،‬هنوز روی دیسک منتقل نشده اند ‪.‬‬
‫‪14‬‬
‫(ادامه) وظیفه مدیر ترمیم پس از وقوع نقض سیستمی ‪:‬‬
‫•‬
‫بعد از فاز تحلیل ‪ ،‬یکی یا هردو عمل زیر بسته به الگوریتم ترمیم انجام می شود ‪:‬‬
‫‪ ‬عمل ‪REDO‬‬
‫( تکرار عملیات انجام شده توسط تراکنش تثبیت شده)‬
‫‪ ‬عمل ‪UNDO‬‬
‫(خنثی کردن اثر اجرای ناقص تراکنش طرد شده و رفع تاثیرات بروز نقص در پایگاه داده ها)‬
‫برای انجام این اعمال از فایل ثبت ( ‪ )log file‬استفاده می شود ‪.‬‬
‫‪15‬‬
‫عملیات ترمیم توسط مدیر ترمیم صورت می گیرد و کاربر دخالتی در ان ندارد اما اخیرا پیشنهاداتی ارائه شده که بخشی از اعمال ترمیم و به ویژه عمل‬
‫‪ UNDO‬به صورت تعاملی با کاربر ‪ ،‬انجام شود‪.‬‬
‫‪16‬‬
‫روشهای تخلیه بافر نهان‬
‫زمانی که سیستم دستور نوشتن را اجرا می کند دو روش برای انتقال نتیجه عمل نوشتن وجود دارد ‪:‬‬
‫•‬
‫بهنگام سازی با تاخیر‬
‫•‬
‫بهنگام سازی بالفاصله‬
‫‪17‬‬
‫بهنگام سازی با تاخیر‬
‫•‬
‫تیجه عمل بهنگام سازی داده تغییر یافته در بافر نهان ‪ ،‬تنها پس از انکه تراکنش به نقطه تثبیت رسید ‪ ،‬به پایگاه داده ها در حافظه مانا‬
‫منتقل می شود و بافر تخلیه (فالش) می شود ‪.‬‬
‫•‬
‫در اثنا عمل تثبیت تراکنش ‪ ،‬نسخه ای از داده تغییر یافته ‪ ،‬در فایل ثبت (‪ )log file‬نوشته می شود ‪.‬‬
‫•‬
‫اگر تراکنش قبل از رسیدن به نقطه تثبیت دچار خرابی شود عمل ‪ undo‬الزم نیست زیرا هیچ تغییری در پایگاه داده ها ایجاد نشده‬
‫است ‪.‬‬
‫•‬
‫‪18‬‬
‫اما عمل ‪ redo‬ممکن است الزم باشد ‪ ،‬چون هنوز نتیجه اجرای تراکنش به پایگاه داده ها منتقل نشده است‪.‬‬
‫بهنگام سازی بالفاصله‬
‫•‬
‫•‬
‫•‬
‫•‬
‫‪19‬‬
‫نتیجه عمل بهنگام سازی داده تغییر یافته در بافر نهان ‪ ،‬قبل از انکه تراکنش به نقطه تثبیت برسد ‪ ،‬به پایگاه داده ها منتقل و بافر تخلیه(فالش)‬
‫می شود ‪.‬‬
‫نسخه ای از داده تغییر یافته ‪ ،‬قبل از انکه بافر نهان تخلیه شود ‪ ،‬وارد فایل ثبت می شود ‪.‬‬
‫اگر تراکنش ‪ ،‬بعد از اعمال تغییرات در داده و قبل از رسیدن به نقطه تثبیت ‪ ،‬دچار خرابی شود ‪ ،‬تراکنش واگردانده می شود و اثر ناقص ان در‬
‫پایگاه داده ها ‪ undone‬می شود ولی نیازی به عمل ‪ redo‬نیست‪.‬‬
‫اگر تراکنش به تثبیت برسد ‪ ،‬پیش از انکه تمام تغییرات در پایگاه داده ها اعمال شوند ‪ ،‬ترمیم با روش عمومی تر ‪ undo/redo‬انجام می‬
‫شود‪.‬‬
‫روشهای تخلیه بافر نهان‬
‫•‬
‫روش غیر دزدی ‪ :‬در واقع همان روش بهنگام سازی با تاخیر می باشد که در ان صفحه به هنگام در امده توسط یک تراکنش تنها پس از تثبیت ‪ ،‬بر‬
‫روی دیسک نوشته می شود ‪.‬‬
‫•‬
‫روش دزدی (قاپیدن) ‪ :‬در واقع همان روش بهنگام سازی بالفاصله می باشد ‪ .‬اصطالحا گ فته می شود سیستم قاب بافر را از یک تراکنش می دزدد تا‬
‫در اختیار تراکنشی دیگر قرار دهد و زمانی به کار می رود که مدیر بافر نهان ‪ ،‬فضای بافر را برای تراکنش دیگری الزم دارد و صفحه ای را جایگزین‬
‫صفحه موجود در بافر می کند‪.‬‬
‫مزیت روش دزدی ‪ :‬نیاز به حافظه زیاد برای تامین بافرها نیست ‪.‬‬
‫‪20‬‬
‫‪ ‬در روش بهنگام سازی با تاخیر دو حالت داریم ‪:‬‬
‫•‬
‫•‬
‫روش تخلیه اجباری (باشتاب)‬
‫روش تخلیه غیر اجباری (بدون شتاب)‬
‫اگر تمام صفحات بهنگام در امده توسط یک تراکنش ‪ ،‬بالفاصله پس از تثبیت ‪ ،‬به دیسک منتقل شوند ‪،‬می گوییم سیستم از روش تخلیه‬
‫اجباری استفاده می کند در غیر این صورت از روش تخلیه غیر اجباری استفاده می کند ‪.‬‬
‫‪21‬‬
‫•‬
‫مزیت روش تخلیه غیر اجباری نسبت به روش اجباری ان ‪ ،‬درکاهش حجم عملیات ورودی‪/‬خروجی و در نتیجه کاهش هزینه این عملیات است‪.‬‬
‫•‬
‫در سیستمهای موجود عمدتا از استراتژی دزدی‪/‬تخلیه غیر اجباری استفاده می شود‪.‬‬
‫•‬
‫روش غیر دزدی در حالت تراکنشهای طوالنی که معموال در اسلوب یکجا اجرا می شوند غیر واقع بینانه است (مثل پردازش حقوق) زیرا فرض می‬
‫شود که تمام صفحات تغییر یافته توسط تراکنشهای در جریان را می توان در بافر ها نگه داشت‪.‬‬
‫‪22‬‬
‫امکانات ترمیم‬
‫حافظه مانا ‪:‬‬
‫• فایل ثبت‬
‫• پایگاه داده ها‬
‫• نسخه های پشتیبان‬
‫حافظه نامانا ‪:‬‬
‫• بافر نهان‬
‫‪23‬‬
‫حافظه مانا‬
‫•‬
‫حافظه ای است صفحه بندی شده که در ان عمل نوشتن یک صفحه ‪ ،‬انجام می شود ‪.‬‬
‫•‬
‫درقبال نقص سیستمی از اسیب مصون است‪.‬‬
‫حافظه مانای برخط (دیسک)‬
‫•‬
‫حافظه مانا‬
‫حافظه مانای برون خط (نوار مغناطیسی)‬
‫‪24‬‬
‫حافظه نامانا‬
‫•‬
‫بخشی از حافظه اصلی است ‪.‬‬
‫•‬
‫بافر ها در ان ایجاد و مدیریت می شوند ‪.‬‬
‫•‬
‫به ان حافظه نهان یا بافر نهان گ فته می شود ‪.‬‬
‫•‬
‫در صورت بروز خرابی ‪ ،‬محتوای ان از بین می رود ‪.‬‬
‫•‬
‫عملیات بهنگام سازی تراکنش ‪ ،‬ابتدا بر روی صفحه ای در بافر نهان انجام می شود ‪.‬‬
‫‪25‬‬
‫حافظه نامانا‬
‫‪26‬‬
‫گذاشتن صفحات در بافرها وانتقال انها روی دیسک ‪ ،‬از وظایف سیستم عامل است اما سیستم مدیریت پایگاه داده ها ‪ ،‬به دلیل تاثیر این عملیات‬
‫در کارای ی رویه های ترمیم ‪ ،‬خود مسئولیت ان را به عهده دارد و این کار را با فراخوانی روالهای سطح پایین سیستم عامل انجام می دهد ‪.‬‬
‫‪27‬‬
‫جدول راهنما‬
‫•‬
‫برای مدیریت حافظه نهان استفاده می شود ‪.‬‬
‫•‬
‫سیستم قبل از انجام هرگونه عمل خواندن ‪ /‬نوشتن ‪ ،‬صفحه مورد نظر را در بافر جستجو می کند و در صورت نیافتن ‪ ،‬ان را از روی دیسک‪،‬‬
‫مکان یابی و به حافظه نامانا منتقل می کند‪.‬‬
‫‪28‬‬
‫جدول راهنما‬
‫•‬
‫•‬
‫•‬
‫‪29‬‬
‫این جدول شامل دو نوع بیت به نام های بیت صفحه تغییر یافته (‪ )Dirty bit‬و بیت چسباندن – واکندن (‪ )Pin-unpin bit‬می باشد‬
‫که برای هر بافر در نظر گرفته شده است‪.‬‬
‫بیت صفحه تغییر یافته نشان می دهد که ایا صفحه مورد نظر تغییر یافته است ‪.‬‬
‫بیت چسباندن –واکندن اگر دارای مقدار یک باشد ‪ ،‬یعنی هنوز نمی توان صفحه موجود در ان بافر را به دیسک منتقل کرد‪.‬‬
‫فایل ثبت ( ‪) Log file‬‬
‫فایل ثبت که به ان فایل رویدادنگاری و فایل اثر نیز گ فته می شود‪ ،‬فایلی است حاوی اطالعاتی در مورد چگونگی اجرای هر تراکنش و عملیاتی‬
‫که تراکنش روی یک فقره داده انجام می دهد ‪.‬این فایل روی حافظه مانا ذخیره می شود و در صورت بروز خرابی از اسیب مصون است و برای‬
‫حصول اطمینان از محفوظ ماندن محتوای این فایل دو و یا بیش از دو نسخه از این فایل تولید وبه طور جداگانه نگهداری می شود‪.‬‬
‫‪30‬‬
‫ساختار رکورد فایل ثبت‬
‫ا‬
‫معموال حداقل دو نوع رکورد در این فایل وجود دارد‪:‬‬
‫انواع رکورد و ساختار هر نوع رکورد فایل ثبت در سیستم های مختلف یکسان نیستند‪ .‬اما‬
‫‪31‬‬
‫‪ ‬رکورد تراکنش‬
‫‪Transaction Record‬‬
‫‪ ‬رکورد نقطه وارسی‬
‫‪Check Point Record‬‬
‫ا‬
‫معموال فیلدهای زیر را دارد‪:‬‬
‫رکورد تراکنش‬
‫‪ ‬شناسه تراکنش‬
‫‪‬نوع رکورد از نظر عمل تراکنش(شروع‪ ،‬درج‪ ،‬بهنگام سازی‪ ،‬حذف‪ ،‬طرد وتثبیت)‬
‫‪‬شناسه داده ای که عمل روی ان انجام می شود‪(.‬عملیات درج‪ ،‬حذف و بهنگام سازی)‬
‫‪‬پیش تصویر(مقدار داده پیش از عملیات بهنگام سازی وحذف)‬
‫‪‬پسا تصویر(مقدار داده پیش از عملیات درج وبهنگام سازی )‬
‫‪‬اشاره گر به رکورد قبلی تراکنش‬
‫‪‬اشاره گر به رکورد بعدی تراکنش‬
‫‪‬شماره سریال رکورد ثبت‬
‫‪‬زمان انجام هر عمل‬
‫ا‬
‫دارد‪،‬مثال اگر‬
‫همیشه الزم نیست که هم پیش تصویر وهم پساتصویر در فایل ثبت ذخیره شوند‪،‬بستگی به روش ترمیم‬
‫سیستم ‪ undo‬را انجام ندهد نیازی به پیش تصویر نیست‪ ،‬اگر هر دو تصویر ذخیره شوند فایل ثبت را «دوسویه» گویند‪.‬‬
‫‪32‬‬
33
‫ثبت با نوشتن پیشرس )‪(WAL‬‬
‫یعنی اطالعات قبل از رفتن در پایگاه در‪ Log file‬ثبت شده باشند و نوشتن رکورد حاوی اطالعات در فایل ثبت در اک ثر سیستم ها‬
‫به طور پیشرس انجام می شود و ازجمله سیستم های ‪ ARIES,INGRES,Sybase,Oracle,‬از این روش‬
‫استفاده می کنند‪.‬‬
‫چگونگی ثبت با نوشتن پیشرس و محتوای رکورد ثبت بستگی به طرز انتقال نتیجه عمل نوشتن به پایگاه داده های مانا دارد که در زیر بیان‬
‫می شود‪:‬‬
‫‪ ‬ثبت با نوشتن پیشرس در بهنگام سازی با تاخیر‬
‫‪ ‬ثبت با نوشتن پیشرس در بهنگام سازی بالفاصله‬
‫‪34‬‬
‫ثبت با نوشتن پیشرس در بهنگام سازی با تاخیر‬
‫در این روش رکورد ثبت حاوی پسا تصویر وسایر اطالعات الزم (و نه پیش تصویر ) قبل از انتقال پسا تصویر به پایگاه ‪ ،‬در فایل ثبت نوشته می شود ‪.‬‬
‫وقتی که تراکنش به تثبیت می رسد‪ ،‬یک رکورد تثبیت نیز در فایل ثبت نوشته می شود‪ .‬حال اگر یک خرابی یا نقص سیستمی بعد از رسیدن‬
‫تراکنش به مرحله تثبیت وقبل از انتقال نتیجه بهنگام سازی به پایگاه مانا پیش اید ‪،‬سیستم پساتصویر را از فایل ثبت میخواند وعمل‬
‫‪ REDO‬را انجام می دهد‪ .‬اگر تراکنش طرد شود نیازی به عمل ‪ UNDO‬نخواهد بود و تنها یک رکورد طرد برای تراکنش در فایل ثبت‬
‫نوشته می شود‪.‬‬
‫‪35‬‬
36
‫ثبت با نوشتن پیشرس در بهنگام سازی بالفاصله‬
‫در این روش ‪ ،‬پیش از انکه داده در حافظه نهان بهنگام در اید‪ ،‬پیش تصویر در بافر فایل ثبت نوشته می شود و وقتی تراکنش به مرحله‬
‫تثبیت برسد‪ ،‬پیش تصویر باید در فایل ثبت نوشته شود و سپس پسا تصویر به پایگاه مانا انتقال یابد‪ .‬وقتی که خرابی بروز کند سیستم‬
‫با خواندن فایل ثبت‪ ،‬پیش تصویر را یافته وعمل ‪ Undo‬را انجام می دهد و ا‬
‫طبعا رکورد طرد هم برای تراکنش در فایل ثبت نوشته‬
‫می شود‪.‬‬
‫‪37‬‬
38
‫عملیات ‪UNDO‬‬
‫‪39‬‬
‫عملیات‪REDO‬‬
‫‪40‬‬
‫انواع فایل ثبت‬
‫• فایل ثبت فیزیکی‬
‫• فایل ثبت منطقی‬
‫فایل ثبت فیزیکی فایلی است که در ان اطالعاتی در مورد مقادیر داده های نوشته شده توسط تراکنش ها ذخیره می شود‪.‬‬
‫فایل ثبت منطقی فایلی است که دران اطالعاتی در مورد خود عملیات تراکنشها وجود دارد و نه مقادیر تولید شده ‪.‬‬
‫‪41‬‬
42
‫انواع فایل ثبت‬
‫‪.1‬‬
‫‪.2‬‬
‫فایل ثبت بر خط (‪)online log file‬‬
‫فایل ثبت برون خط (‪)offline log file‬‬
‫•‬
‫‪ logfile‬فعال‪ :‬فایلی است که دران تراکنش ها در حال انجام شدن هستند اما هنوز هیچ وضعیتی (‪ )commit or abort‬را به‬
‫خود نگرفته اند‪.‬‬
‫•‬
‫‪ logfile‬غیر فعال ‪:‬زمانیکه حجم عملیات روزانه در پایگاه داده زیادباشد‪ ،‬نگهداری تمام فایل ثبت به طور فعال همیشه امکان پذیر‬
‫نیست بنابراین بخشی از فایل ثبت بطور برون خط (ارشیو ‪ ،‬بایگانی) نگهداری میشود‪ ،‬تا در صورت لزوم قسمتهای الزم بطور فعال‬
‫درایند‪.‬‬
‫•‬
‫•‬
‫فایل ثبت فعال ‪ ،‬عمدتا برای ترمیم خرابی های جزئی و کوچک (مثل طرد تراکنش در پ ی بروز بن بست) استفاده می شود‪.‬‬
‫ترمیم خرابی های کلی (مثل خرابی داده ها روی دیسک) نیاز به زمان بیشتری داشته و بخش قابل مالحظه ای از فایل ثبت در این کار‬
‫الزم است‪.‬‬
‫‪43‬‬
‫توجه‪:‬‬
‫•‬
‫فایل ثبت از عوامل بروز تنگنا (‪ )Bottleneck‬است ‪.‬‬
‫•‬
‫سرعت عملیات نوشتن در این فایل در کارای ی سیستم پایگاه داده تاثیر بسزای ی دارد‪.‬‬
‫زباله روبی فایل ثبت‪:‬‬
‫از انجای ی که فایل ثبت مرتبا در حال افزایش است و ظرفیت حافظه مانا محدود میباشد‪ ،‬برای جلوگیری از رشد بیش از حد فایل ثبت‪ ،‬سیستم باید‬
‫فضای اشغال شده توسط رکوردهای ثبت ناالزم را ازاد کند و فضا را دوباره مورد استفاده قرار دهد‪.‬‬
‫‪44‬‬
‫قواعد مربوط به زباله روبی‪:‬‬
‫این قواعد توسط مدیر ترمیم بیان می شود‪.‬‬
‫اگر <‪ >T1,W,D,v‬یک رکورد ثبت باشد درصورتی میتوان ان را حذف کرد اگر و فقط اگر‪:‬‬
‫تراکنش ‪ ،T1‬طرد شده باشد‪.‬‬
‫‪.1‬‬
‫تراکنش‪ ،T1‬تثبیت شده باشد ولی یک تراکنش تثبیت شده دیگر مثل ‪ ،T2‬بعد از نوشتن توسط ‪ ، T1‬مقدار ‪ Y‬را برای داده ‪ D‬نوشته باشد‪.‬‬
‫‪.2‬‬
‫‪ .3‬این قاعده برای زمانی است که مدیر ترمیم از ‪UNDO‬استفاده نکند‪:‬‬
‫رکورد <‪ >T1,W,D,v‬در صورتی حذف میشود که‬
‫• ‪ v‬اخرین مقدار تثبیت شده و ذخیره شده در پایگاه داده باشد‬
‫• و این رکورد ‪،‬تنها رکورد ثبت برای داده ‪ D‬باشد‪.‬‬
‫در این صورت مدیر ترمیم‪ ،‬پس از حذف این رکورد‪ ،‬یک رکورد ثبت قبلی تر را اشتباها بعنوان رکورد ثبت حاوی اخرین مقدار تثبیت شده برای ‪ D‬در نظر‬
‫نمیگیرد‪.‬‬
‫‪45‬‬
‫مثالی از فایل ثبت در محیط عملیاتی‬
‫‪46‬‬
‫ایجاد نقطه وارسی)‪:(ChekPoint‬‬
‫همانطور که گ فته شد مدیر ترمیم ‪ ،‬برای تصمیم گیری در مورد رفتار با هر تراکنش و چگونگی ترمیم پایگاه دادها از فایل ثبت استفاده میکند ‪،‬‬
‫اما مشکل زمانی است که‪:‬‬
‫سیستم نمیداند رکوردهای نگهداری شده در فایل ثبت را تا کجا بررسی کند‪(.‬حتی ممکن است رکوردهای ناالزم در فایل ثبت جستجو و بررسی شده و‬
‫تراکنشهای ی که قبال بدون مشکل تثبیت شده اند بار دیگر ‪ REDONE‬شوند‪).‬‬
‫حال برای رفع این مشکل و درنتیجه کاهش حجم عملیات پویش و جویش در فایل ثبت از تکنیک ایجاد نقطه وارسی استفاده میشود‪.‬‬
‫‪47‬‬
‫ایجاد نقطه وارسی عبارت است از‪:‬‬
‫نوشتن اطالعاتی در حافظه مانا در حین پردازش تراکنش ها‪ ،‬به منظور کاهش تعداد رکوردهای ی که مدیر ترمیم باید در فایل ثبت بررسی کند‪.‬‬
‫دو روش وجود دارد‪:‬‬
‫‪ ‬روش ایجاد نقطه وارسی با نوشتن در محتوای حافظه نهان(‪)cache‬‬
‫‪ ‬روش ایجاد نقطه وارسی با تثبیت (‪)commit‬‬
‫‪48‬‬
‫نحوه ایجاد نقطه وارسی‪:‬‬
‫سیستم یک رکورد به صورت <‪ >checkpoint‬و یا به صورت‬
‫<‪ >checkpoint , L‬در ‪ logfile‬می نویسد‪.‬‬
‫‪ :L‬لیست تراکنش های فعال در لحظه ایجاد نقطه وارسی است‪.‬‬
‫بنابراین با نوشته شدن این رکورد در فایل ثبت ‪ ،‬سیستم به هنگام ترمیم متوجه میشود تا کجا بایستی فایل را بررسی کند‪.‬‬
‫نک ته‪ :‬تمام تراکنش های ی که رکورد <‪ >commit , T‬مربوطه به انها قبل از‬
‫رکورد وارسی باشد‪ ،‬دیگر نیاز به ‪ REDON‬شدن ندارند‪.‬‬
‫زیرا‪ :‬این نقطه تضمین میکند که تمام تراکنش های تثبیت شده تا ان نقطه‪ ،‬نتیجه ذخیره شده در پایگاه داده دارند‪.‬‬
‫‪49‬‬
‫مثالی از نقطه وارسی‬
Tc
Tf
T1
T2
T3
T4
checkpoint
checkpoint
system failure
‫ نادیده گرفته می شود‬:T1
REDONE: T3 ‫ و‬T2
UNDONE:T4
•
•
•
‫مثالی دیگر از نقطه وارسی‬
Checkpoint
T1
Crash
T2
T3
Time
REDONE: T2 ‫ و‬T1
UNDONE:T3
‫به دو طریق نقطه وارسی ایجاد میشود‪:‬‬
‫‪.1‬‬
‫ایجاد نقطه وارسی بطور زمانی(مثال هر ‪ m‬دقیقه)‬
‫‪.2‬‬
‫برحسب تعداد تراکنش های ‪ commit‬شده ‪ ،‬بعد از اخرین نقطه وارسی‬
‫*مدیر ترمیم فاصله بین دو نقطه وارسی را تعیین میکند‪*.‬‬
‫مزایای نقطه وارسی‪:‬‬
‫کم هزینه است ‪(.‬میتواند در یک ساعت ‪3‬یا ‪ 4‬بار انجام شود‪).‬‬
‫‪.1‬‬
‫هرچه تعداد نقطه وارسی بیشتر باشد‪ ،‬زمان ترمیم کمتر خواهد بود‪.‬‬
‫‪.2‬‬
‫*اما با افزایش سطح چند برنامه سازی زمان ترمیم افزایش می یابد‪*.‬‬
‫‪52‬‬
‫فرایند ایجاد نقطه وارسی با نوشتن در حافظه ‪:cashe‬‬
‫‪.1‬‬
‫‪.2‬‬
‫‪.3‬‬
‫‪.4‬‬
‫اجرای تمام تراکنش ها موقتا معلق میشود‪.‬‬
‫محتوای تمام بافرهای ی که تغییر یافته باشند (صفحات تغییر یافته) ‪ ،‬تخلیه اجباری میشوند‪.‬‬
‫یک رکورد <‪ >checkpoint‬در فایل ثبت نوشته میشود ( و فایل روی دیسک برده میشود)‪.‬‬
‫اجرای تراکنش ها از سر گرفته میشود‪.‬‬
‫عیب این روش ‪:‬‬
‫‪ ‬مدت زمانی صرف انتظار تخلیه محتوای حافظه نهان میشود‪.‬‬
‫*این انتظار را نیز میتوان با روش ایجاد نقطه وارسی شوال ( ‪ )Fuzzy checkpointing‬از بین برد‪*.‬‬
‫‪53‬‬
‫فرایند ایجاد نقطه وارسی با تثبیت‬
‫در این روش ‪ ،‬روند پردازش تراکنشها بطور زمانی انجام نمیشود‪ ،‬بلکه ‪:‬‬
‫‪ ‬منتظر ماندن سیستم تا زمانیکه تراکنشهای فعال به نقطه ‪ commit‬یا ‪ Abort‬برسند‪.‬‬
‫‪ ‬منتقل شدن صفحات تغییر یافته روی دیسک‬
‫‪ ‬ایجاد شدن رکورد نقطه وارسی در ‪logfile‬‬
‫نک ته‪:‬‬
‫• در این روش ‪ ،‬در لحظه ایجاد نقطه وارسی ‪ ،‬اخرین مقدار تثبیت شده هر فقره داده ای که تراکنش روی ان عمل نوشتن انجام داده است ‪ ،‬در‬
‫پایگاه داده ذخیره شده است‬
‫• پیش ازلحظه ایجاد نقطه وارسی‪ ،‬رکورد ‪ commit‬شده تراکنش در ‪ log file‬نوشته شده است‪.‬‬
‫‪54‬‬
‫مشکل اصلی این روش‪:‬‬
‫عدم کارای ی است ‪ ،‬زیرا کاربران باید منتظر بمانند تا تراکنش های فعال کارشان تمام شود و محتوای حافظه نهان تخلیه گردد‪.‬‬
‫ایجاد نقطه وارسی‬
‫چهار روش برای ایجاد نقطه عبارتند از‪:‬‬
‫‪ ‬نقطه وارسی تراکنش ‪:‬‬
‫در این روش‪ ،‬هر بار که تراکنشی به تثبیت برسد ‪ ،‬ضمن انجام تخلیه اجباری بافر (ها) نقطه وارسی ایجاد می شود‪.‬‬
‫‪ ‬نقطه وارسی تراکنش – سازگار‪:‬‬
‫در این روش‪ ،‬سیستم امکان می دهد تا تراکنش های در جریان به مرحله پایان برسند و سپس نقطه وارسی ایجاد‬
‫می شود‪ .‬این روش همانست که در برخی از متون با اصطالح نقطه وارسی با تثبیت ‪ ،‬مطرح می شود‪.‬‬
‫‪55‬‬
‫‪ ‬نقطه وارسی عمل سازگار‪:‬‬
‫در این روش‪ ،‬شبیه روش تراکنش – سازگار است اما مبنای کار عملیات بهنگام سازی است و نه تراکنش های در‬
‫جریان‪ .‬پس از انکه تمام عمل های بهنگام سازی انجام شوند‪ ،‬سیستم نقطه وارسی را ایجاد میکند‪.‬‬
‫‪ ‬نقطه وارسی شوال‪:‬‬
‫در روش شوال در اساس برای کاهش حجم عملیات انتقال صفحات به پایگاه داده های مانا (به دیسک) ایجاد شده‬
‫است‪ .‬در این روش به جای انتقال تمام صفحات در هر بار ایجاد نقطه وارسی‪ ،‬تنها ان صفحاتی که تا زمان ایجاد اخرین نقطه وارسی‪ ،‬منتقل‬
‫نشده اند‪ ،‬به پایگاه انتقال داده می شوند‪.‬‬
‫‪56‬‬
‫لیستهای کاری‬
‫مدیر ترمیم ‪ ،‬برای ترمیم پایگاه داده ها ‪ ،‬تعدادی لیست کاری هم اماده میکند‪.‬‬
‫که عبارتند از‪:‬‬
‫‪ ‬لیست تراکنش های فعال‪:‬‬
‫این لیست در زمان ایجاد نقطه وارسی اماده می شودو گاه ادرس ان و یا خود لیست که حاوی شناسه تراکنش های‬
‫فعال در لحظه ایجاد نقطه وارسی است‪،‬در رکورد نقطه وارسی در فایل ثبت ذخیره می شود‪.‬‬
‫‪ ‬لیست ‪UNDO‬‬
‫این لیست حاوی شناسه ترکنش های ی است که باید در فرایند ترمیم ‪ UNDO ،‬شوند‪.‬‬
‫‪ ‬لیست ‪REDO‬‬
‫در این نوع لیست شناسه تراکنشهای ی قرار داد که باید در فرایند ترمیم ‪ REDO ،‬شوند‪.‬‬
‫‪57‬‬
‫نسخه پشتیبان‬
‫•‬
‫•‬
‫•‬
‫‪58‬‬
‫یکی دیگر از امکانات ترمیم است که در اساس در ترمیم خرابی رسانه ای بکار می اید‪.‬‬
‫نسخه پشتیبان نسخه ای است از محتوای پایگاه داده ها در وضع سازگار و گاه محتوای فایل ثبت‪.‬‬
‫نسخه پشتیبان بطور پریودیک تولید می شود‪.‬گاه برای اطمینان بیشتر ‪ ،‬دو نسخه پشتیبان ایجاد می شود‪.‬‬
‫روش های ایجاد نسخه پشتیبان‬
‫‪‬‬
‫روش نظیر سازی‪:‬‬
‫دراین روش ‪ ،‬نسخه ای از هر دیسک بر خط ‪،‬روی دیسک دیگری نوشته می شود‪ .‬در واقع‪ ،‬محتوای هر دیسک‪ ،‬یک‬
‫نظیر روی دیسک دیگر دارد‪ .‬در این روش هر عمل نوشتن باید روی هر دو دیسک و بطور پشت سر هم انجام‬
‫شود‪ :‬ابتدا عمل نوشتن روی یک دیسک و پس از حصول اطمینان از انجام صحیح عمل نوشتن‪ ،‬عمل نوشتن روی‬
‫دیسک دیگر انجام می شود‪ .‬عمل خواندن را می توان از هریک از دو دیسک انجام داد‪.‬‬
‫‪ ‬روش ارشیو سازی (بایگانی کردن)‪:‬‬
‫ً‬
‫معموال روی نوار مغناطیسی نوشته‬
‫محتوای پایگاه داده ها بطور پریودیک در یک پایگاه داده های ارشیو (بایگانی )‪،‬‬
‫می شود (نسخه برداری می شود)‪ .‬نسخه ای از فایل ثبت نیز در ارشیو ذخیره می شود‪ .‬بنابراین در فایل ارشیو‪،‬‬
‫اطالعات مربوط به عملیات بهنگام سازی تمام تراکنش ها نیز ذخیره می شود و میتوان گ فت که تولید نسخه ارشیو به‬
‫نوعی همان ایجاد نقطه وارسی اما در حد گسترده است‪.‬‬
‫نک ته‪:‬‬
‫در اثناء تولید نسخه پشتیبان ‪ ،‬هیچ تراکنشی نباید فعال باشد‪ .‬پریود تولید نسخه پشتیبان ممکن است هفتگی‪ ،‬روزانه و گاه حتی ساعتی باشد‬
‫‪59‬‬
‫روشهای ترمیم خرابی سیستم‬
‫•‬
‫•‬
‫الگوریتم های ترمیم اساسا بر دو عمل ‪ UNDO,REDO‬مبتنی هستند ‪.‬‬
‫دراساس چهار الگوریتم برای ترمیم داریم‪:‬‬
‫•‬
‫•‬
‫•‬
‫•‬
‫)‪1-UNDO/REDO (U-R‬‬
‫)‪2-NOUNDO/REDO (NU-R‬‬
‫)‪3-UNDO/NOREDO (U-NR‬‬
‫)‪4-NOUNDO/NOREDO (NU-NR‬‬
‫‪60‬‬
‫کارای ی این چهار الگوریتم یکسان نیست‬
‫‪ U-R , NU-R‬کارای ی یکسان دارند و بهتراز دو الگوریتم دیگر هستند ‪.‬‬
‫نتایج شبیه سازی الگوریتم ها‬
‫تکنیکهای ترمیم در حالت بهنگام سازی با تاخیر‬
‫•‬
‫در حالت بهنگام سازی با تاخیر‪ ،‬نتیجه عمل بهنگام سازی داده‪ ،‬فقط پس از تثبیت شدن تراکنش‪ ،‬به پایگاه داده ها منتقل می شود‪ .‬از‬
‫این رو در صورت بروز خرابی‪ ،‬نیازی به عمل ‪ UNDO‬نیست و سیستم فقط باید عمل ‪ REDO‬را انجام دهد‪ .‬بنابراین در این حالت‪،‬‬
‫الگوریتم ترمیم ‪ NOUNDO/REDO‬است‬
‫برای بررسی این الگوریتم دو حالت در نظر می گیریم‬
‫• حالت اول ‪ :‬محیط تک کاربری‬
‫• حالت دوم‪ :‬محیط چند کاربری‬
‫‪64‬‬
‫الگوریتم ‪ REDO‬در محیط تک کاربری‬
‫در این حالت‪ ،‬الگوریتم ترمیم ‪ ،‬ساده است‪.‬‬
‫سیستم دو لیست کاری را بررسی می کند ‪:‬‬
‫• لیست تراکنشهای ی که بعد از ایجاد نقطه وارسی‪ ،‬به تثبیت رسیده اند و‬
‫• لیست تراکنشهای فعال‪.‬‬
‫در لیست اخیر‪ ،‬حداک ثر یک تراکنش وجود دارد‪.‬‬
‫سپس عمل ‪ REDO‬را برای تمام تراکنشهای تثبیت شده‪ ،‬به ترتیبی که درفایل ثبت وارد شده اند‪ ،‬انجام می دهد‬
‫و بعد ازاین کار‪ ،‬اجرای تراکنشهای فعال را از سر می گیرد‪.‬‬
‫‪65‬‬
‫بدیهی است در ‪ REDO‬کردن از پساتصویر استفاده می شود‪.‬‬
‫چون بهنگام سازی با تاخیر انجام می شود‪ ،‬تراکنشهای فعال در لحظه بروز نقص‪ ،‬تاثیری در پایگاه داده ها ندارند و در مرحله ترمیم‪ ،‬نادیده‬
‫گرفته می شوند و همانطور که گ فته شد‪ ،‬پس از ترمیم اجرای انها از سر گرفته می شود خواه بطور خودکار توسط سیستم و خواه با دخالت‬
‫کاربر‪.‬‬
‫‪66‬‬
‫•‬
‫مثال ‪:4‬‬
‫• ‪T2‬‬
‫)‪R(B‬‬
‫)‪W(B‬‬
‫)‪R(D‬‬
‫‪T1‬‬
‫)‪R(A‬‬
‫)‪R(D‬‬
‫)‪W(D‬‬
‫)‪W(D‬‬
‫این دو تراکنش‪ ،‬بطور سریال (ابتدا ‪ T1‬و سپس ‪ ) T2‬اجرا می شوند‪ ،‬پس همروندی نداریم‪.‬‬
‫محتوای فایل ثبت چنین است ‪:‬‬
‫)‪(T1,BEGIN‬‬
‫)‪(T1,W,D,20‬‬
‫)‪(T1,COMMIT‬‬
‫)‪(T2,BEGIN‬‬
‫)‪(T2,W,B,10‬‬
‫)‪ (T2,W,D,25‬خرابی سیستم‬
‫عملیات نوشتن از ‪ ،REDO ،T1‬می شود‪ .‬عملیات تراکنش ‪ ،T2‬نادیده گرفته می شود‪.‬‬
‫‪67‬‬
‫•‬
‫مثال ‪5‬‬
‫‪T2‬‬
‫)‪R(C‬‬
‫‪C:=C-100‬‬
‫)‪W(C‬‬
‫‪.‬‬
‫‪.‬‬
‫‪T1‬‬
‫)‪R(A‬‬
‫‪A:=A-50‬‬
‫)‪W(A‬‬
‫)‪R(B‬‬
‫‪B:=B+50‬‬
‫)‪W(B‬‬
‫فرض‪ :‬در اغاز‪C=700 ,B=2000 ,A=1000:‬‬
‫تراکنشهای ‪ T1‬و ‪T2‬بطور سریال اجرا می شوند ابتدا ‪ T1‬و سپس ‪T2‬‬
‫‪68‬‬
‫محتوای بخشی از فایل ثبت‪ ،‬می تواند چنین باشد‪.‬‬
‫>‪<T1,BEGIN‬‬
‫>‪<T1,W,A,950‬‬
‫>‪<T1,W,B,2050‬‬
‫>‪<T1,COMMIT‬‬
‫>‪<T2,BEGIN‬‬
‫>‪<T2,W,C,600‬‬
‫>‪<T2,COMMIT‬‬
‫حال طرز ترمیم را با توجه به لحظه بروز خرابی بررسی می کنیم‪.‬‬
‫‪69‬‬
‫خرابی بعد از اجرای دستور است‪ W(B):‬از تراکنش ‪ T1‬بروز کند‪ .‬محتوای فایل ثبت چنین است‬
‫>‪<T1,BEGIN‬‬
‫>‪<T1,W,A,950‬‬
‫>‪<T1,W,B,2050‬‬
‫سیستم اقدامی نمی کند‪ ،‬زیرا هنوز به رکورد >‪ <T1,COMMIT‬برخورد نکرده است‪.‬‬
‫مقادیر ‪ A‬و ‪ B‬در پایگاه داده ها همان مقادیر اغازین هستند‪ A=1000 :‬و ‪B=2000‬‬
‫‪70‬‬
‫خرابی بعد از اجرای دستور )‪ W(c‬از ‪ T2‬بروز کند‪ ،‬محتوای فایل ثبت چنین است‪:‬‬
‫>‪<T1,BEGIN‬‬
‫>‪<T1,W,A,950‬‬
‫>‪<T1,W,B,2050‬‬
‫>‪<T1,COMMIT‬‬
‫>‪<T2,BEGIN‬‬
‫>‪<T2,W,C,600‬‬
‫سیستم عملیات تراکنش ‪ T1‬را ‪ REDO‬می کند‪ ،‬زیرا در بررسی فایل ثبت مشخص شده‬
‫است که ‪T1‬به تثبیت رسیده است‪ :‬در پایگاه داده ها داریم‪B=2050 , A=950 :‬‬
‫‪71‬‬
‫خرابی پس از تثبیت شدن ‪ T2‬بروز کند‪ .‬در این حالت عالوه بر رکوردهای قبل‪ ،‬رکورد‬
‫>‪ <T2,COMMIT‬در فایل ثبت وجود دارد و سیستم عملیات هر دو تراکنش ‪ T1‬و‬
‫‪ T2‬را ‪ REDO‬می کند و در پایگاه داده ها داریم‪:‬‬
‫‪C=600 , B=2050 , A=950‬‬
‫‪72‬‬
‫الگوریتم ‪ REDO‬در محیط چند کاربری‬
‫در این حالت‪ ،‬فرایند ترمیم‪ ،‬بسته به نوع پروتوکل کنترل همروندی‪ ،‬می تواند پیچیده تر باشد‪.‬‬
‫در موارد زیادی‪ ،‬کنترل همروندی و فرایند ترمیم بهم مرتبط اند‪ .‬هرچه میزان همروندی بیشتری مورد نظر باشد‪ ،‬فرایند ترمیم زمانگیرتر می شود‬
‫با فرض استفاده از پروتوکل دو مرحله ای شدید‪ ،‬روش ترمیم می تواند چنین باشد‪:‬‬
‫سیستم با استفاده از دو لیست‪ ،‬یعنی لیست تراکنشهای تثبیت شده بعد از اخرین نقطه وارسی و لیست تراکنشهای فعال‪،‬‬
‫و پس از بررسی فایل ثبت‪ ،‬تمام عملیات نوشتن تراکنشهای تثبیت شده را ‪REDO‬‬
‫میکند و تراکنشهای ی که فعال بوده ولی تثبیت نشده اند‪ ،‬را نادیده میگیرد تا بعدا اجرای انها از سر گرفته شود‪.‬‬
‫‪73‬‬
‫‪T1‬‬
‫مثال ‪6‬‬
‫‪T2‬‬
‫‪T3‬‬
‫‪T4‬‬
‫‪T5‬‬
‫‪t2‬‬
‫خرابی سیستمی‬
‫‪t1‬‬
‫نقطه وارسی‬
‫رفتار مدیر ترمیم با تراکنشها چنین است‪:‬‬
‫نیازی به ‪ REDO‬کردن ‪ T1‬نیست‬
‫عملیات تراکنشهای ‪ T2‬و ‪ T3‬باید ‪ REDONE‬شوند‪.‬‬
‫تراکنشهای ‪ T4‬و ‪ T5‬نادیده گرفته شوند‪.‬‬
‫عیب این الگوریتم این است که همروندی تضعیف می شود‪ ،‬زیرا قفل روی داده ها تا رسیدن تراکنشها به نقطه تثبیت باقی می ماند و‬
‫بعالوه نیاز به فضای زیاد برای تامین بافرها است‪.‬‬
‫مزیت این الگوریتم این است که هرگز عمل ‪UNDO‬الزم نمی شود‪.‬‬
‫‪80‬‬
‫مثال ‪7‬‬
‫‪T4‬‬
‫‪T3‬‬
‫‪T2‬‬
‫‪T1‬‬
‫)‪R(B‬‬
‫)‪R(A‬‬
‫)‪R(B‬‬
‫)‪R(A‬‬
‫)‪W(B‬‬
‫)‪W(A‬‬
‫)‪W(B‬‬
‫)‪R(D‬‬
‫)‪R(A‬‬
‫)‪R(C‬‬
‫)‪R(D‬‬
‫)‪W(D‬‬
‫)‪W(A‬‬
‫)‪W(C‬‬
‫)‪W(D‬‬
‫‪‬این چهار تراکنش بطور همروند اجرا می شوند‪.‬‬
:‫محتوای بخش فایل ثبت چنین است‬
<T1,BEGIN>
<T1,W,D,20>
<T1,COMMIT>
<CHECK POINT>
<T4,BEGIN>
.‫ نیست‬T1 ‫ کردن‬REDO ‫نیازی به‬
<T4,W,B,15>
.‫ نادیده گرفته می شوند‬T3 ‫ و‬T2
<T4,W,A,20>
.‫ شود‬REDO ‫ باید‬T4
<T4,COMMIT>
<T2,BEGIN>
<T2,W,B,12>
<T3,BEGIN>
<T3,W,A,30>
<T2,W,D,25>
‫خرابی در سیستم‬
‫تکنیک های ترمیم در حالت بهنگام سازی بالفاصله‬
‫‪ ‬در این حالت ‪ ،‬داده بهنگام در امده بالفاصله در پایگاه داده نوشته می شود بی انکه سیستم منتظر بماند تا تراکنش به تثبیت برسد‪.‬‬
‫‪ ‬قبل از نوشتن داده در پایگاه داده ‪ ،‬باید رکورد عمل بهنگام سازی در فایل ثبت نوشته شود‪.‬‬
‫‪ ‬مدیر ترمیم‪ ،‬تراکنش های به ثبت نرسیده را ‪ UNDO‬میکند‪.‬‬
‫الگوریتم های ترمیم در حالت بهنگام سازی بالفاصله‬
‫‪ UNDO/NOREDO ‬اگر تمام بهنگام سازیهای یک تراکنش قبل از تثبیت ان ‪،‬روی دیسک برده شوند ‪ ،‬نیازی به عمل ‪ REDO‬نیست‪.‬‬
‫‪ UNDO/REDO ‬اگر تراکنش مجار به تثبیت باشد‪ ،‬پیش از انکه همه تغییرات ان در پایگاه داده ها اعمال شود‪ ،‬در این صورت الگوریتم‬
‫‪ UNDO/REDO‬را داریم که پیچیده ترین تکنیک است‪.‬‬
‫برای شرح این الگوریتم ‪ 2‬حالت را در نظر می گیریم‪ -1 :‬محیط تک کاربری ‪ -2‬محیط چند کاربری‬
‫الگوریتم ‪ UNDO/REDO‬در محیط تک کاربری‬
‫‪ ‬مدیر سیستم از لیست تراکنش های ثبت شده بعد از اخرین نقطه وارسی و تراکنش های فعال استفاده می کند‪.‬‬
‫‪ ‬تمام عملیات نوشتن تراکنش فعال که در فایل ثبت‪ ،‬رکورد دارند‪ ،‬با استفاده از پیش تصویر ‪ UNDO‬می شوند‪ ،‬سپس عملیات نوشتن تراکنشهای ثبت‬
‫شده با استفاده از پسا تصویر ‪ REDO‬میشوند‪.‬‬
‫مثال ‪8‬‬
‫‪T2‬‬
‫‪T1‬‬
‫)‪R(C‬‬
‫)‪R(A‬‬
‫‪C:=C-100‬‬
‫‪A:=A-50‬‬
‫)‪W(C‬‬
‫)‪W(A‬‬
‫)‪R(B‬‬
‫‪B:=B+50‬‬
‫)‪W(B‬‬
‫‪‬تراکنش ها به طور سریال انجام می شود (ابتدا‪ T1‬و سپس ‪)T2‬‬
‫رکوردهای فایل ثبت در صورت اجرای کامل دو تراکنش در مثال ‪8‬‬
‫>‪<T1,BEGIN‬‬
‫>‪<T1,W,A,1000,950‬‬
‫>‪<T1,W,B,2000,2050‬‬
‫>‪<T1,COMMIT‬‬
‫>‪<T2,W,C,700,600‬‬
‫>‪<T2,COMMIT‬‬
‫لحظه های بروز خرابی مربوط به مثال ‪8‬‬
‫‪ ‬خرابی بعد از نوشتن رکورد مربوط به )‪ ، W(B‬درفایل ثبت بروز می کند‪.‬‬
‫در بررسی فایل ثبت‪ ،‬رکورد >‪ <T1,BEGIN‬دیده می شود اما رکورد >‪ <T1,COMMIT‬وجود ندارد بنابر این‬
‫)‪ UNDO(T1‬اجرا می شود و در پایگاه داریم‪B=2000,A=1000 :‬‬
‫‪ ‬خرابی بعد از نوشتن رکورد مربوط به )‪ ، W(C‬در فایل ثبت بروز می کند‪.‬‬
‫در این صورت عمل )‪ REDO(T1‬و عمل )‪ UNDO(T2‬اجرا می شوند‪ .‬بعد از ترمیم داریم‪C=700 , B=2050 , A=950 :‬‬
‫‪ ‬خرابی پس از نوشتن رکورد >‪ <T2,COMMIT‬درفایل ثبت بروز می کند‪.‬‬
‫در این حالت )‪ REDO(T1‬و )‪ REDO(T2‬اجرا می شوند و در پایگاه داریم‪C=600 , B=2050 , A=950 :‬‬
‫الگوریتم ‪ UNDO/REDO‬در محیط چند کاربری‬
‫‪ ‬مدیر سیستم لیستهای ‪ UNDO‬و ‪ REDO‬را که (در اغاز خالی هستند) ایجاد میکند‪.‬‬
‫‪ ‬برای این منظور فایل ثبت از اخر تا رسیدن به اولین رکورد نقطه وارسی‪ ،‬پیموده می شود‪.‬‬
‫‪ ‬در صورت برخورد با رکورد >‪ <Ti,COMMIT‬تراکنش ‪ Ti‬به لیست ‪ REDO‬اضافه می شود‪.‬‬
‫‪ ‬درصورت برخورد به رکورد >‪ ، <Ti,BEGIN‬اگر‪ Ti‬در لیست ‪REDO‬نباشد‪ ،‬به لیست ‪ UNDO‬اضافه میشود‪.‬‬
‫مراحل بعد ازاماده سازی لیست های ‪ UNDO‬و‪REDO‬‬
‫مدیر سیستم به صورت زیر عمل می کند‪:‬‬
‫‪ -1‬فایل ثبت به طور پسرو پیموده می شود و هر تراکنش ‪ Ti‬از لیست ‪ UNDO‬را که رکورد نوشتن در فایل ثبت داشته باشد‪ UNDO،‬میکند‪.‬‬
‫‪ -2‬یافتن اخرین رکورد>‪ <CHECK POINT‬در فایل ثبت‪.‬‬
‫‪ -3‬فایل ثبت‪ ،‬از نقطه وارسی به سمت جلو پیموده میشود و هر تراکنش ‪ Ti‬از لیست ‪ ، REDO‬که رکورد نوشتن در فایل ثبت داشته باشد‪،‬‬
‫‪ REDO‬میشود‪.‬‬
‫‪‬عملیات ‪ UNDO‬باید قبل از عملیات ‪ REDO‬انجام شود‪.‬‬
‫مثال ‪9‬‬
‫فرض کنیم در فایل ثبت ‪ ،‬برای تراکنشهای ‪ Ti‬و ‪ ،Tj‬رکوردهای زیر را داریم‪.‬‬
‫>‪<Ti,W,10,20‬‬
‫>‪<Tj,W,D,10,30‬‬
‫اگر قرار باشد ‪ Ti‬را ‪ UNDO‬کنیم‪ ،‬پس از این کار ‪ D=10‬میشود‪.‬‬
‫اگر قرار باشد ‪ Tj‬را ‪REDO‬کنیم و این کار قبل از ‪ UNDO‬انجام شود ‪ D=30‬و سپس ‪ D=10‬میشود‪.‬‬
‫در حالیکه مقدار درست ‪D‬برابر ‪ 30‬است‪ ،‬زیرا فرض کردیم که ‪Tj‬باید ‪ REDO‬شود و پساتصویر مربوطه ‪ 30‬است‪.‬‬
‫مثال ‪10‬‬
‫در نمودار زیر‪ ،‬اجرای همروند پنج تراکنش دیده می شود‪.‬‬
‫در ترمیم دخالت داده نمیشود‪.‬‬
‫در ترمیم دخالت داده نمیشود‪.‬‬
‫‪T1‬‬
‫‪T2‬‬
‫‪T3‬‬
‫‪RED‬‬
‫‪O‬‬
‫‪T4‬‬
‫‪RED‬‬
‫‪O‬‬
‫‪T5‬‬
‫‪UNDO‬‬
‫لحظه خرابی‬
‫نقطه وارسی‬
‫‪UNDO‬‬
‫الگوریتم ‪UNDO/NOREDO‬‬
‫‪ ‬در حالت بهنگام سازی بالفاصله‪ ،‬گاه ممکن است نیاز به عملیات ‪ REDO‬نباشد‪.‬‬
‫‪ ‬این وضع وقتی پیش می اید که در فاصله بین لحظه نقطه وارسی و لحظه بروز خرابی‪ ،‬هیچ تراکنش تثبیت شده ای وجود نداشته باشد‪ ،‬یعنی لیست‬
‫‪ REDO‬خالی باشد‪.‬‬
‫نمودار وضعیت الگوریتم ‪UNDO/NOREDO‬‬
‫در ترمیم دخالت داده نمیشود‪.‬‬
‫‪T1‬‬
‫‪T2‬‬
‫‪T3‬‬
‫لحظه خرابی‬
‫نقطه وارسی‬
‫‪UNDO‬‬
‫‪UNDO‬‬
‫الگوریتم ‪NO UNDO/NO REDO‬‬
‫به ندرت کاربرد دارد‪ .‬چرا که باید‬
‫• نتایج تمام تمام تراکنش های تثبیت شده قبل از اخرین نقطه وارسی به پایگاه منتقل شود و‬
‫• برای تراکنش های فعال بین این نقطه و لحظه بروز خرابی‪ ،‬عمل نوشتن بالفاصله انجام نشده باشد‬
‫•‬
‫برای رفع مشکل استفاده از تکنیک ایجاد صفحه سایه بدون نیاز به ‪ UNDO , REDO‬با صفحه بندی پایگاه داده‬
89
90
‫تکنیک ایجاد صفحه سایه‬
‫•‬
‫•‬
‫صفحه سایه پیش تصویری‬
‫صفحه سایه پسا تصویری ( رایجتر)‬
‫تکنیک صفحه سایه پسا تصویری‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫تقسیم پایگاه داده به ‪ n‬صفحه‬
‫ایجاد یک راهنما برای مدیریت صفحات با ‪ n‬مدخل ( مدخل ‪ i‬ام به صفحه ‪ i‬ام پایگاه روی دیسک اشاره دارد)‬
‫در زمان شروع اجرای تراکنش‪ ،‬مدخل های راهنمای جاری که به اخرین صفحات یا صفحات جاری اشاره دارد در راهنمای دیگری به نام راهنمای‬
‫سایه کپ ی می شود‪.‬‬
‫نگهداری راهنمای سایه روی دیسک‬
‫عدم تغییر راهنمای سایه در حین اجرای تراکنش‬
‫در زمان انجام عمل نوشتن‪:‬‬
‫• نسخه جدیدی از صفحه تغییر یافته ایجاد‬
‫• عدم جایگزینی با نسخه قبلی‬
‫• ثبت نسخه جدید در مکانی دیگر ( بهنگام سازی برون جا)‬
‫• اصالح مدخل راهنمای جاری و اشاره ان به صفحه جدید‬
‫• عدم تغییر مدخل راهنمای سایه‬
‫به نوعی تولید فایل ثبت منطقی‬
‫•برای هر صفحه بهنگام شده دو صفحه موجود است‬
‫•فایل ثبت جدای از پایگاه نیست‬
‫•فایل ثبت منطقی‬
‫در اثر بروز خرابی در حین اجرا‬
‫• صفحه تغییر یافته ازاد‬
‫•اصالح مدخل اشاره کننده به ان‬
‫طریقه ترمیم‪:‬‬
‫•به کمک وضعیت راهنمای سایه‬
‫در صورت تثبت تراکنش‪:‬‬
‫•ثبت راهنمای جاری‬
‫•تبدیل راهنمای جاری نوشته شده به راهنمای سایه جدید‬
‫شرط موفقیت روش‪:‬‬
‫•یافتن راهنمای سایه پس از بروز خرابی‬
‫برای تثبیت یک تراکنش‪:‬‬
‫• انتقال تمام صفحات تغییر یافته از بافر به روی دیسک‬
‫• نوشتن راهنمای جاری روی دیسک( نه در جای راهنمای سایه)‬
‫• نوشتن ادرس راهنمای جاری در مکانی که ادرس راهنمای سایه است ( تبدیل راهنمای جاری به راهنمای سایه)‬
‫مزیت روش‪:‬‬
‫• عدم نیاز به عمل ‪redo , undo‬‬
‫• در حالت تک کاربری عدم نیاز به فایل ثبت‬
‫معایب روش‪:‬‬
‫• کاهش لوکالیتی داده ها ( ثبت صفحه بهنگام شده و صفحه سایه در یک استوانه)‬
‫• ایجاد سربار به دلیل تولید راهنمای سایه جدید‬
‫• مشکل زباله روبی‬
‫• تضعیف همروندی‬
‫• مصرف حافظه زیاد‬
‫مثال‬
‫تکنیک صفحه سایه پیش تصویری‬
‫• نوشتن صفحه بهنگام شده در مکان قبلی‬
‫• نوشتن نسخه قبلی در مکانی دیگر معموال انتهای فایل ( نوشتن پیش تصویر در مکانی دیگر)‬
‫• تنظیم مدخل مربوطه در راهنمای‬
‫در صورت بروز خرابی‬
‫• نیاز به عمل ‪ undo‬است ولی به عمل ‪ redo‬نیازی نیست‬
‫ترميم خرابي رسانه اي‪:‬‬
‫روشهاي ترميم كه تاكنون ديده شده‪ ،‬براي ترميم در حالت خرابي سيستمي بكار مي روند‬
‫مدير ترميم بايد بتواند خرابي هاي گسترده تر بويژه خرابي رسانه اي را نيز ترميم كند‪.‬‬
‫گام هاي انجام شده در اين ترميم‪:‬‬
‫مدير ترميم با استفاده از اخرين نسخه پشتيبان‪ -‬كه فرض مي شود در پ ي بروزخرابي‪ ،‬اسيب نديده است‪ -‬و انجام كارهاي زير پايگاه داده را ترميم مي كند‪:‬‬
‫‪ -1‬بار كردن دوباره ي پايگاه داده ها از روي نسخه پشتيبان‬
‫‪ -2‬انجام عمليات ‪( Redo‬با استفاده از فايل ثبت ‪ log file‬و ارشيو )‬
‫‪ ‬براي تراكنش هاي ي كه بعد توليد اخرين نسخه پشتيبان و قبل از بروز خرابي به تثبيت رسيده اند نيازي به عمليات ‪ undo‬نيست‪.‬‬
‫ترميم در سيستم چند پايگاهي‪:‬‬
‫دربحث هاي گذشته فرض بر اين بود كه تراكنش فقط به داده هاي ذخيره شده در يك پايگاه داده نياز دارد‬
‫اما گاه ممكن است يك تراكنش نياز بدستيابي به داده هاي چند پايگاه داشته باشد‪.‬‬
‫بعنوان مثال در معماري پايگاه داده ي توزيع شده وضع چنين است‪.‬‬
‫در سيستم چند پايگاهي ممكن است هر پايگاه داده تحت مديريت يك سيستم جداگانه باشد و حتي اين سيستم هاي مديريت پايگاه داده ها ناهمگن‬
‫باشد‪.‬‬
‫ترميم در سيستم چند پايگاهي‬
‫‪ ‬در چنين محيطي‪ ،‬براي اينكه تراكنشي با موفقيت به پايان برسد بايد در تمام سيستم ها به ثبت برسد؛ معنا ندارد كه يك تراكنش در يك مانه‬
‫()سايت به نقطه تثبيت برسد اما در مانه ديگر طرد شود‪.‬‬
‫‪ ‬براي تامين خاصيت تجزيه ناپذيري تراكنش چند پايگاهي الزم است كه يك مكانيسم دو سطحي ترميم وجود داشته باشد‬
‫‪ ‬الزمه اين كار وجود يك مدير ترميم سراسري يا هماهنگ كننده است كه اطالعات الزم را در اختيار داشته باشد‬
‫پروتوکل تثبیت دو مرحله ای‬
‫‪‬براي ترميم در سيستم چند پايگاهي ( بويژه در معماري توزيع شده ) از پروتكل تثبيت دو مرحله استفاده مي شود‬
‫‪ ‬پروتكل ‪:2PC‬‬
‫‪‬اين پروتكل دردو مرحله به شرح زير اجرا انجام مي شود‪:‬‬
‫‪ ‬مرحله اول ‪ :‬راي دادن‬
‫‪ ‬هماهنگ كننده با دريافت درخواست ‪ commit‬به تمام مديران تراكنش ها در سيستم هاي پايگاهي زيربط دستور مي دهد تا اماده‬
‫تثبيت باشند ‪.‬‬
‫مدیران محلی‬
‫هماهنگ کننده‬
‫‪COMMIT‬‬
‫یا‬
‫‪ROLLBACK‬‬
‫مدیران محلی‬
‫هماهنگ کننده‬
‫دستور‬
‫‪COMMIT‬‬
‫‪ROLLBACK‬‬
‫رای مثبت‬
‫منفی‬
‫هماهنگ کننده‬
‫اماده‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫هر سيستم پايگاهي‪ ،‬با دريافت اين پيام تمام ركورد هاي مربوط به فايل ثبت و ساير اطالعات الزم براي ترميم را روي ديسك مي نويسد (نوشتن‬
‫اجباري)‬
‫و سپس پيام ”اماده براي تثبيت “ را به هماهنگ كننده مي فرستد (راي مثبت )‬
‫اگر عمل نوشتن اجباري با موفقيت انجام نشود و يا تراكنش محلي به هر دليلي تثبيت نشود و نتواند ”پيام تثبيت ناممكن “به هماهنگ كننده مي‬
‫دهد (راي منفي)‬
‫اگر هماهنگ كننده در يك مدت معين پاسخي از يك سيستم دريافت نكند فرض مي كند كه ”پيام تثبيت ناممكن ”است‬
‫‪ ‬مرحله دوم ‪ :‬تصميم گيري‬
‫‪ ‬هماهنگ كننده با دريافت پاسخ از مديران محلي ‪ ،‬يك ركورد درفايل ثبت خود مي نويسد حاوي تصميمي است كه در مورد تراكنش گرفته‬
‫شده است‪.‬‬
‫‪ ‬اگر پاسخ همه مديران محلي ”مثبت ‪ “ok‬باشد تصميم هماهنگ كننده ‪ commit‬است و دستور ‪ commit‬را به تمام مديران‬
‫محلي مي فرستد چون تمام اقدامات تراكنش در هر يك از مانه ها و نيز اطالعات الزم ديگر در فايل ثبت هر يك از مديران محلي‪ ،‬ذخيره‬
‫شده است در صورت بروزنقص امكان ترميم وجود دارد‪.‬‬
‫‪ ‬هر سيستم محلي با نوشتن ركورد ‪ commit‬در فايل ثبت خود در صورت لزوم پايگاه تحت مديريت خود را بهنگام در مي اورد‪.‬‬
‫‪ ‬اگر حداقل يك مدير محلي پاسخ منفي ”‪ “ not OK‬به هماهنگ كننده بدهد هماهنگ كننده پيام ‪ Rollback‬را به مديران محلي مي فرستد و‬
‫از انها مي خواهد كه عمل ‪ undo‬را در پايگاه تحت مديريت خود انجام دهند‪.‬‬
‫‪ ‬واضح است كه با اين پروتكل‪ ،‬يا تراكنش چند پايگاهي در تمام سيستم ها به نقطه تثبيت مي رسد و يا در هيچ كدام به اين نقطه نمي رسد‪.‬‬