ترميم در پايگاه داده ها ) (Recovery مدرس : دکتر فاطمه احمدی آبکناری بهار 1392 ترميم سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که.
Download ReportTranscript ترميم در پايگاه داده ها ) (Recovery مدرس : دکتر فاطمه احمدی آبکناری بهار 1392 ترميم سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که.
Slide 1
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>>>>>>>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>>>>>>>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی بالفاصله
در اين قسمت اين الگوريتم برای محيط چند کاربری بررس ی می شود.
در يک محيط چند کاربری اجرای همروند پنج تراکنش به صورت زير در نظر گرفته می شود.
مدير ترميم تراکنش ها را به صورت زير مديريت
می کند:
T1
T2
T3
-1تراکنش T1در ترميم نقش ی ندارد.
-2تراکنش های T3و T5چون در لحظه بروز
خرابی قعال بوده اند Undoمی شوند.
-3تراکنش های T2و T4چون قبل از بروز خرابی
تثبيت شده اند Redoمی شوند.
T4
T5
System Failure
17
t1 Checkpoint
ساير الگوريتم های ترميم خرابی سيستمی
الگوريتم Undo / Noredoزمانی مورد استفاده قرار می گيرد که بهنگام سازی بالفاصله بوده و در فاصله ی بين
ايجاد نقطه وارس ی و لحظه ی بروز خرابی هيچ تراکنش تثبيت شده ای وجود نداشته باشد .مانند شکل زير:
T1
T2
T3
System Failure
t1 Checkpoint
الگوريتم نادر Noundo / Noredoزمانی مورد استفاده قرار می گيرد که نتيجه ی اجرای تمام تراکنش های تثبيت
شده قبل از ايجاد آخرين نقطه ی وارس ی به پايگاه منتقل شده باشد و مدل بهنگام سازی بالفاصله نباشد.
18
برای مطالعه بيشتر
1- Database Systems An Application Oriented Approach
Chapter 22, Atomicity and Durability.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
.) سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها-2
. ترميم پايگاه داده ها،فصل چهارم
. سيد محمد تقی روحانی رانکوهی:تاليف
.1386 ،13 مجموعه دانش و فن کامپيوتر،انتشارات جلوه
19
Slide 2
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>>>>>>>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>>>>>>>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی بالفاصله
در اين قسمت اين الگوريتم برای محيط چند کاربری بررس ی می شود.
در يک محيط چند کاربری اجرای همروند پنج تراکنش به صورت زير در نظر گرفته می شود.
مدير ترميم تراکنش ها را به صورت زير مديريت
می کند:
T1
T2
T3
-1تراکنش T1در ترميم نقش ی ندارد.
-2تراکنش های T3و T5چون در لحظه بروز
خرابی قعال بوده اند Undoمی شوند.
-3تراکنش های T2و T4چون قبل از بروز خرابی
تثبيت شده اند Redoمی شوند.
T4
T5
System Failure
17
t1 Checkpoint
ساير الگوريتم های ترميم خرابی سيستمی
الگوريتم Undo / Noredoزمانی مورد استفاده قرار می گيرد که بهنگام سازی بالفاصله بوده و در فاصله ی بين
ايجاد نقطه وارس ی و لحظه ی بروز خرابی هيچ تراکنش تثبيت شده ای وجود نداشته باشد .مانند شکل زير:
T1
T2
T3
System Failure
t1 Checkpoint
الگوريتم نادر Noundo / Noredoزمانی مورد استفاده قرار می گيرد که نتيجه ی اجرای تمام تراکنش های تثبيت
شده قبل از ايجاد آخرين نقطه ی وارس ی به پايگاه منتقل شده باشد و مدل بهنگام سازی بالفاصله نباشد.
18
برای مطالعه بيشتر
1- Database Systems An Application Oriented Approach
Chapter 22, Atomicity and Durability.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
.) سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها-2
. ترميم پايگاه داده ها،فصل چهارم
. سيد محمد تقی روحانی رانکوهی:تاليف
.1386 ،13 مجموعه دانش و فن کامپيوتر،انتشارات جلوه
19
Slide 3
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>>>>>>>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>>>>>>>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی بالفاصله
در اين قسمت اين الگوريتم برای محيط چند کاربری بررس ی می شود.
در يک محيط چند کاربری اجرای همروند پنج تراکنش به صورت زير در نظر گرفته می شود.
مدير ترميم تراکنش ها را به صورت زير مديريت
می کند:
T1
T2
T3
-1تراکنش T1در ترميم نقش ی ندارد.
-2تراکنش های T3و T5چون در لحظه بروز
خرابی قعال بوده اند Undoمی شوند.
-3تراکنش های T2و T4چون قبل از بروز خرابی
تثبيت شده اند Redoمی شوند.
T4
T5
System Failure
17
t1 Checkpoint
ساير الگوريتم های ترميم خرابی سيستمی
الگوريتم Undo / Noredoزمانی مورد استفاده قرار می گيرد که بهنگام سازی بالفاصله بوده و در فاصله ی بين
ايجاد نقطه وارس ی و لحظه ی بروز خرابی هيچ تراکنش تثبيت شده ای وجود نداشته باشد .مانند شکل زير:
T1
T2
T3
System Failure
t1 Checkpoint
الگوريتم نادر Noundo / Noredoزمانی مورد استفاده قرار می گيرد که نتيجه ی اجرای تمام تراکنش های تثبيت
شده قبل از ايجاد آخرين نقطه ی وارس ی به پايگاه منتقل شده باشد و مدل بهنگام سازی بالفاصله نباشد.
18
برای مطالعه بيشتر
1- Database Systems An Application Oriented Approach
Chapter 22, Atomicity and Durability.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
.) سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها-2
. ترميم پايگاه داده ها،فصل چهارم
. سيد محمد تقی روحانی رانکوهی:تاليف
.1386 ،13 مجموعه دانش و فن کامپيوتر،انتشارات جلوه
19
Slide 4
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>>>>>>>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>>>>>>>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی بالفاصله
در اين قسمت اين الگوريتم برای محيط چند کاربری بررس ی می شود.
در يک محيط چند کاربری اجرای همروند پنج تراکنش به صورت زير در نظر گرفته می شود.
مدير ترميم تراکنش ها را به صورت زير مديريت
می کند:
T1
T2
T3
-1تراکنش T1در ترميم نقش ی ندارد.
-2تراکنش های T3و T5چون در لحظه بروز
خرابی قعال بوده اند Undoمی شوند.
-3تراکنش های T2و T4چون قبل از بروز خرابی
تثبيت شده اند Redoمی شوند.
T4
T5
System Failure
17
t1 Checkpoint
ساير الگوريتم های ترميم خرابی سيستمی
الگوريتم Undo / Noredoزمانی مورد استفاده قرار می گيرد که بهنگام سازی بالفاصله بوده و در فاصله ی بين
ايجاد نقطه وارس ی و لحظه ی بروز خرابی هيچ تراکنش تثبيت شده ای وجود نداشته باشد .مانند شکل زير:
T1
T2
T3
System Failure
t1 Checkpoint
الگوريتم نادر Noundo / Noredoزمانی مورد استفاده قرار می گيرد که نتيجه ی اجرای تمام تراکنش های تثبيت
شده قبل از ايجاد آخرين نقطه ی وارس ی به پايگاه منتقل شده باشد و مدل بهنگام سازی بالفاصله نباشد.
18
برای مطالعه بيشتر
1- Database Systems An Application Oriented Approach
Chapter 22, Atomicity and Durability.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
.) سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها-2
. ترميم پايگاه داده ها،فصل چهارم
. سيد محمد تقی روحانی رانکوهی:تاليف
.1386 ،13 مجموعه دانش و فن کامپيوتر،انتشارات جلوه
19
Slide 5
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>>>>>>>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>>>>>>>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی بالفاصله
در اين قسمت اين الگوريتم برای محيط چند کاربری بررس ی می شود.
در يک محيط چند کاربری اجرای همروند پنج تراکنش به صورت زير در نظر گرفته می شود.
مدير ترميم تراکنش ها را به صورت زير مديريت
می کند:
T1
T2
T3
-1تراکنش T1در ترميم نقش ی ندارد.
-2تراکنش های T3و T5چون در لحظه بروز
خرابی قعال بوده اند Undoمی شوند.
-3تراکنش های T2و T4چون قبل از بروز خرابی
تثبيت شده اند Redoمی شوند.
T4
T5
System Failure
17
t1 Checkpoint
ساير الگوريتم های ترميم خرابی سيستمی
الگوريتم Undo / Noredoزمانی مورد استفاده قرار می گيرد که بهنگام سازی بالفاصله بوده و در فاصله ی بين
ايجاد نقطه وارس ی و لحظه ی بروز خرابی هيچ تراکنش تثبيت شده ای وجود نداشته باشد .مانند شکل زير:
T1
T2
T3
System Failure
t1 Checkpoint
الگوريتم نادر Noundo / Noredoزمانی مورد استفاده قرار می گيرد که نتيجه ی اجرای تمام تراکنش های تثبيت
شده قبل از ايجاد آخرين نقطه ی وارس ی به پايگاه منتقل شده باشد و مدل بهنگام سازی بالفاصله نباشد.
18
برای مطالعه بيشتر
1- Database Systems An Application Oriented Approach
Chapter 22, Atomicity and Durability.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
.) سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها-2
. ترميم پايگاه داده ها،فصل چهارم
. سيد محمد تقی روحانی رانکوهی:تاليف
.1386 ،13 مجموعه دانش و فن کامپيوتر،انتشارات جلوه
19
Slide 6
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>>>>>>>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>>>>>>>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی بالفاصله
در اين قسمت اين الگوريتم برای محيط چند کاربری بررس ی می شود.
در يک محيط چند کاربری اجرای همروند پنج تراکنش به صورت زير در نظر گرفته می شود.
مدير ترميم تراکنش ها را به صورت زير مديريت
می کند:
T1
T2
T3
-1تراکنش T1در ترميم نقش ی ندارد.
-2تراکنش های T3و T5چون در لحظه بروز
خرابی قعال بوده اند Undoمی شوند.
-3تراکنش های T2و T4چون قبل از بروز خرابی
تثبيت شده اند Redoمی شوند.
T4
T5
System Failure
17
t1 Checkpoint
ساير الگوريتم های ترميم خرابی سيستمی
الگوريتم Undo / Noredoزمانی مورد استفاده قرار می گيرد که بهنگام سازی بالفاصله بوده و در فاصله ی بين
ايجاد نقطه وارس ی و لحظه ی بروز خرابی هيچ تراکنش تثبيت شده ای وجود نداشته باشد .مانند شکل زير:
T1
T2
T3
System Failure
t1 Checkpoint
الگوريتم نادر Noundo / Noredoزمانی مورد استفاده قرار می گيرد که نتيجه ی اجرای تمام تراکنش های تثبيت
شده قبل از ايجاد آخرين نقطه ی وارس ی به پايگاه منتقل شده باشد و مدل بهنگام سازی بالفاصله نباشد.
18
برای مطالعه بيشتر
1- Database Systems An Application Oriented Approach
Chapter 22, Atomicity and Durability.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
.) سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها-2
. ترميم پايگاه داده ها،فصل چهارم
. سيد محمد تقی روحانی رانکوهی:تاليف
.1386 ،13 مجموعه دانش و فن کامپيوتر،انتشارات جلوه
19
Slide 7
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>>>>>>>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>>>>>>>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی بالفاصله
در اين قسمت اين الگوريتم برای محيط چند کاربری بررس ی می شود.
در يک محيط چند کاربری اجرای همروند پنج تراکنش به صورت زير در نظر گرفته می شود.
مدير ترميم تراکنش ها را به صورت زير مديريت
می کند:
T1
T2
T3
-1تراکنش T1در ترميم نقش ی ندارد.
-2تراکنش های T3و T5چون در لحظه بروز
خرابی قعال بوده اند Undoمی شوند.
-3تراکنش های T2و T4چون قبل از بروز خرابی
تثبيت شده اند Redoمی شوند.
T4
T5
System Failure
17
t1 Checkpoint
ساير الگوريتم های ترميم خرابی سيستمی
الگوريتم Undo / Noredoزمانی مورد استفاده قرار می گيرد که بهنگام سازی بالفاصله بوده و در فاصله ی بين
ايجاد نقطه وارس ی و لحظه ی بروز خرابی هيچ تراکنش تثبيت شده ای وجود نداشته باشد .مانند شکل زير:
T1
T2
T3
System Failure
t1 Checkpoint
الگوريتم نادر Noundo / Noredoزمانی مورد استفاده قرار می گيرد که نتيجه ی اجرای تمام تراکنش های تثبيت
شده قبل از ايجاد آخرين نقطه ی وارس ی به پايگاه منتقل شده باشد و مدل بهنگام سازی بالفاصله نباشد.
18
برای مطالعه بيشتر
1- Database Systems An Application Oriented Approach
Chapter 22, Atomicity and Durability.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
.) سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها-2
. ترميم پايگاه داده ها،فصل چهارم
. سيد محمد تقی روحانی رانکوهی:تاليف
.1386 ،13 مجموعه دانش و فن کامپيوتر،انتشارات جلوه
19
Slide 8
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>>>>>>>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>>>>>>>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی بالفاصله
در اين قسمت اين الگوريتم برای محيط چند کاربری بررس ی می شود.
در يک محيط چند کاربری اجرای همروند پنج تراکنش به صورت زير در نظر گرفته می شود.
مدير ترميم تراکنش ها را به صورت زير مديريت
می کند:
T1
T2
T3
-1تراکنش T1در ترميم نقش ی ندارد.
-2تراکنش های T3و T5چون در لحظه بروز
خرابی قعال بوده اند Undoمی شوند.
-3تراکنش های T2و T4چون قبل از بروز خرابی
تثبيت شده اند Redoمی شوند.
T4
T5
System Failure
17
t1 Checkpoint
ساير الگوريتم های ترميم خرابی سيستمی
الگوريتم Undo / Noredoزمانی مورد استفاده قرار می گيرد که بهنگام سازی بالفاصله بوده و در فاصله ی بين
ايجاد نقطه وارس ی و لحظه ی بروز خرابی هيچ تراکنش تثبيت شده ای وجود نداشته باشد .مانند شکل زير:
T1
T2
T3
System Failure
t1 Checkpoint
الگوريتم نادر Noundo / Noredoزمانی مورد استفاده قرار می گيرد که نتيجه ی اجرای تمام تراکنش های تثبيت
شده قبل از ايجاد آخرين نقطه ی وارس ی به پايگاه منتقل شده باشد و مدل بهنگام سازی بالفاصله نباشد.
18
برای مطالعه بيشتر
1- Database Systems An Application Oriented Approach
Chapter 22, Atomicity and Durability.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
.) سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها-2
. ترميم پايگاه داده ها،فصل چهارم
. سيد محمد تقی روحانی رانکوهی:تاليف
.1386 ،13 مجموعه دانش و فن کامپيوتر،انتشارات جلوه
19
Slide 9
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>>>>>>>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>>>>>>>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی بالفاصله
در اين قسمت اين الگوريتم برای محيط چند کاربری بررس ی می شود.
در يک محيط چند کاربری اجرای همروند پنج تراکنش به صورت زير در نظر گرفته می شود.
مدير ترميم تراکنش ها را به صورت زير مديريت
می کند:
T1
T2
T3
-1تراکنش T1در ترميم نقش ی ندارد.
-2تراکنش های T3و T5چون در لحظه بروز
خرابی قعال بوده اند Undoمی شوند.
-3تراکنش های T2و T4چون قبل از بروز خرابی
تثبيت شده اند Redoمی شوند.
T4
T5
System Failure
17
t1 Checkpoint
ساير الگوريتم های ترميم خرابی سيستمی
الگوريتم Undo / Noredoزمانی مورد استفاده قرار می گيرد که بهنگام سازی بالفاصله بوده و در فاصله ی بين
ايجاد نقطه وارس ی و لحظه ی بروز خرابی هيچ تراکنش تثبيت شده ای وجود نداشته باشد .مانند شکل زير:
T1
T2
T3
System Failure
t1 Checkpoint
الگوريتم نادر Noundo / Noredoزمانی مورد استفاده قرار می گيرد که نتيجه ی اجرای تمام تراکنش های تثبيت
شده قبل از ايجاد آخرين نقطه ی وارس ی به پايگاه منتقل شده باشد و مدل بهنگام سازی بالفاصله نباشد.
18
برای مطالعه بيشتر
1- Database Systems An Application Oriented Approach
Chapter 22, Atomicity and Durability.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
.) سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها-2
. ترميم پايگاه داده ها،فصل چهارم
. سيد محمد تقی روحانی رانکوهی:تاليف
.1386 ،13 مجموعه دانش و فن کامپيوتر،انتشارات جلوه
19
Slide 10
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>>>>>>>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>>>>>>>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی بالفاصله
در اين قسمت اين الگوريتم برای محيط چند کاربری بررس ی می شود.
در يک محيط چند کاربری اجرای همروند پنج تراکنش به صورت زير در نظر گرفته می شود.
مدير ترميم تراکنش ها را به صورت زير مديريت
می کند:
T1
T2
T3
-1تراکنش T1در ترميم نقش ی ندارد.
-2تراکنش های T3و T5چون در لحظه بروز
خرابی قعال بوده اند Undoمی شوند.
-3تراکنش های T2و T4چون قبل از بروز خرابی
تثبيت شده اند Redoمی شوند.
T4
T5
System Failure
17
t1 Checkpoint
ساير الگوريتم های ترميم خرابی سيستمی
الگوريتم Undo / Noredoزمانی مورد استفاده قرار می گيرد که بهنگام سازی بالفاصله بوده و در فاصله ی بين
ايجاد نقطه وارس ی و لحظه ی بروز خرابی هيچ تراکنش تثبيت شده ای وجود نداشته باشد .مانند شکل زير:
T1
T2
T3
System Failure
t1 Checkpoint
الگوريتم نادر Noundo / Noredoزمانی مورد استفاده قرار می گيرد که نتيجه ی اجرای تمام تراکنش های تثبيت
شده قبل از ايجاد آخرين نقطه ی وارس ی به پايگاه منتقل شده باشد و مدل بهنگام سازی بالفاصله نباشد.
18
برای مطالعه بيشتر
1- Database Systems An Application Oriented Approach
Chapter 22, Atomicity and Durability.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
.) سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها-2
. ترميم پايگاه داده ها،فصل چهارم
. سيد محمد تقی روحانی رانکوهی:تاليف
.1386 ،13 مجموعه دانش و فن کامپيوتر،انتشارات جلوه
19
Slide 11
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>>>>>>>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>>>>>>>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی بالفاصله
در اين قسمت اين الگوريتم برای محيط چند کاربری بررس ی می شود.
در يک محيط چند کاربری اجرای همروند پنج تراکنش به صورت زير در نظر گرفته می شود.
مدير ترميم تراکنش ها را به صورت زير مديريت
می کند:
T1
T2
T3
-1تراکنش T1در ترميم نقش ی ندارد.
-2تراکنش های T3و T5چون در لحظه بروز
خرابی قعال بوده اند Undoمی شوند.
-3تراکنش های T2و T4چون قبل از بروز خرابی
تثبيت شده اند Redoمی شوند.
T4
T5
System Failure
17
t1 Checkpoint
ساير الگوريتم های ترميم خرابی سيستمی
الگوريتم Undo / Noredoزمانی مورد استفاده قرار می گيرد که بهنگام سازی بالفاصله بوده و در فاصله ی بين
ايجاد نقطه وارس ی و لحظه ی بروز خرابی هيچ تراکنش تثبيت شده ای وجود نداشته باشد .مانند شکل زير:
T1
T2
T3
System Failure
t1 Checkpoint
الگوريتم نادر Noundo / Noredoزمانی مورد استفاده قرار می گيرد که نتيجه ی اجرای تمام تراکنش های تثبيت
شده قبل از ايجاد آخرين نقطه ی وارس ی به پايگاه منتقل شده باشد و مدل بهنگام سازی بالفاصله نباشد.
18
برای مطالعه بيشتر
1- Database Systems An Application Oriented Approach
Chapter 22, Atomicity and Durability.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
.) سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها-2
. ترميم پايگاه داده ها،فصل چهارم
. سيد محمد تقی روحانی رانکوهی:تاليف
.1386 ،13 مجموعه دانش و فن کامپيوتر،انتشارات جلوه
19
Slide 12
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>>>>>>>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>>>>>>>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی بالفاصله
در اين قسمت اين الگوريتم برای محيط چند کاربری بررس ی می شود.
در يک محيط چند کاربری اجرای همروند پنج تراکنش به صورت زير در نظر گرفته می شود.
مدير ترميم تراکنش ها را به صورت زير مديريت
می کند:
T1
T2
T3
-1تراکنش T1در ترميم نقش ی ندارد.
-2تراکنش های T3و T5چون در لحظه بروز
خرابی قعال بوده اند Undoمی شوند.
-3تراکنش های T2و T4چون قبل از بروز خرابی
تثبيت شده اند Redoمی شوند.
T4
T5
System Failure
17
t1 Checkpoint
ساير الگوريتم های ترميم خرابی سيستمی
الگوريتم Undo / Noredoزمانی مورد استفاده قرار می گيرد که بهنگام سازی بالفاصله بوده و در فاصله ی بين
ايجاد نقطه وارس ی و لحظه ی بروز خرابی هيچ تراکنش تثبيت شده ای وجود نداشته باشد .مانند شکل زير:
T1
T2
T3
System Failure
t1 Checkpoint
الگوريتم نادر Noundo / Noredoزمانی مورد استفاده قرار می گيرد که نتيجه ی اجرای تمام تراکنش های تثبيت
شده قبل از ايجاد آخرين نقطه ی وارس ی به پايگاه منتقل شده باشد و مدل بهنگام سازی بالفاصله نباشد.
18
برای مطالعه بيشتر
1- Database Systems An Application Oriented Approach
Chapter 22, Atomicity and Durability.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
.) سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها-2
. ترميم پايگاه داده ها،فصل چهارم
. سيد محمد تقی روحانی رانکوهی:تاليف
.1386 ،13 مجموعه دانش و فن کامپيوتر،انتشارات جلوه
19
Slide 13
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>>>>>>>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>>>>>>>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی بالفاصله
در اين قسمت اين الگوريتم برای محيط چند کاربری بررس ی می شود.
در يک محيط چند کاربری اجرای همروند پنج تراکنش به صورت زير در نظر گرفته می شود.
مدير ترميم تراکنش ها را به صورت زير مديريت
می کند:
T1
T2
T3
-1تراکنش T1در ترميم نقش ی ندارد.
-2تراکنش های T3و T5چون در لحظه بروز
خرابی قعال بوده اند Undoمی شوند.
-3تراکنش های T2و T4چون قبل از بروز خرابی
تثبيت شده اند Redoمی شوند.
T4
T5
System Failure
17
t1 Checkpoint
ساير الگوريتم های ترميم خرابی سيستمی
الگوريتم Undo / Noredoزمانی مورد استفاده قرار می گيرد که بهنگام سازی بالفاصله بوده و در فاصله ی بين
ايجاد نقطه وارس ی و لحظه ی بروز خرابی هيچ تراکنش تثبيت شده ای وجود نداشته باشد .مانند شکل زير:
T1
T2
T3
System Failure
t1 Checkpoint
الگوريتم نادر Noundo / Noredoزمانی مورد استفاده قرار می گيرد که نتيجه ی اجرای تمام تراکنش های تثبيت
شده قبل از ايجاد آخرين نقطه ی وارس ی به پايگاه منتقل شده باشد و مدل بهنگام سازی بالفاصله نباشد.
18
برای مطالعه بيشتر
1- Database Systems An Application Oriented Approach
Chapter 22, Atomicity and Durability.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
.) سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها-2
. ترميم پايگاه داده ها،فصل چهارم
. سيد محمد تقی روحانی رانکوهی:تاليف
.1386 ،13 مجموعه دانش و فن کامپيوتر،انتشارات جلوه
19
Slide 14
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>>>>>>>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>>>>>>>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی بالفاصله
در اين قسمت اين الگوريتم برای محيط چند کاربری بررس ی می شود.
در يک محيط چند کاربری اجرای همروند پنج تراکنش به صورت زير در نظر گرفته می شود.
مدير ترميم تراکنش ها را به صورت زير مديريت
می کند:
T1
T2
T3
-1تراکنش T1در ترميم نقش ی ندارد.
-2تراکنش های T3و T5چون در لحظه بروز
خرابی قعال بوده اند Undoمی شوند.
-3تراکنش های T2و T4چون قبل از بروز خرابی
تثبيت شده اند Redoمی شوند.
T4
T5
System Failure
17
t1 Checkpoint
ساير الگوريتم های ترميم خرابی سيستمی
الگوريتم Undo / Noredoزمانی مورد استفاده قرار می گيرد که بهنگام سازی بالفاصله بوده و در فاصله ی بين
ايجاد نقطه وارس ی و لحظه ی بروز خرابی هيچ تراکنش تثبيت شده ای وجود نداشته باشد .مانند شکل زير:
T1
T2
T3
System Failure
t1 Checkpoint
الگوريتم نادر Noundo / Noredoزمانی مورد استفاده قرار می گيرد که نتيجه ی اجرای تمام تراکنش های تثبيت
شده قبل از ايجاد آخرين نقطه ی وارس ی به پايگاه منتقل شده باشد و مدل بهنگام سازی بالفاصله نباشد.
18
برای مطالعه بيشتر
1- Database Systems An Application Oriented Approach
Chapter 22, Atomicity and Durability.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
.) سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها-2
. ترميم پايگاه داده ها،فصل چهارم
. سيد محمد تقی روحانی رانکوهی:تاليف
.1386 ،13 مجموعه دانش و فن کامپيوتر،انتشارات جلوه
19
Slide 15
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>>>>>>>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>>>>>>>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی بالفاصله
در اين قسمت اين الگوريتم برای محيط چند کاربری بررس ی می شود.
در يک محيط چند کاربری اجرای همروند پنج تراکنش به صورت زير در نظر گرفته می شود.
مدير ترميم تراکنش ها را به صورت زير مديريت
می کند:
T1
T2
T3
-1تراکنش T1در ترميم نقش ی ندارد.
-2تراکنش های T3و T5چون در لحظه بروز
خرابی قعال بوده اند Undoمی شوند.
-3تراکنش های T2و T4چون قبل از بروز خرابی
تثبيت شده اند Redoمی شوند.
T4
T5
System Failure
17
t1 Checkpoint
ساير الگوريتم های ترميم خرابی سيستمی
الگوريتم Undo / Noredoزمانی مورد استفاده قرار می گيرد که بهنگام سازی بالفاصله بوده و در فاصله ی بين
ايجاد نقطه وارس ی و لحظه ی بروز خرابی هيچ تراکنش تثبيت شده ای وجود نداشته باشد .مانند شکل زير:
T1
T2
T3
System Failure
t1 Checkpoint
الگوريتم نادر Noundo / Noredoزمانی مورد استفاده قرار می گيرد که نتيجه ی اجرای تمام تراکنش های تثبيت
شده قبل از ايجاد آخرين نقطه ی وارس ی به پايگاه منتقل شده باشد و مدل بهنگام سازی بالفاصله نباشد.
18
برای مطالعه بيشتر
1- Database Systems An Application Oriented Approach
Chapter 22, Atomicity and Durability.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
.) سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها-2
. ترميم پايگاه داده ها،فصل چهارم
. سيد محمد تقی روحانی رانکوهی:تاليف
.1386 ،13 مجموعه دانش و فن کامپيوتر،انتشارات جلوه
19
Slide 16
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>>>>>>>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>>>>>>>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی بالفاصله
در اين قسمت اين الگوريتم برای محيط چند کاربری بررس ی می شود.
در يک محيط چند کاربری اجرای همروند پنج تراکنش به صورت زير در نظر گرفته می شود.
مدير ترميم تراکنش ها را به صورت زير مديريت
می کند:
T1
T2
T3
-1تراکنش T1در ترميم نقش ی ندارد.
-2تراکنش های T3و T5چون در لحظه بروز
خرابی قعال بوده اند Undoمی شوند.
-3تراکنش های T2و T4چون قبل از بروز خرابی
تثبيت شده اند Redoمی شوند.
T4
T5
System Failure
17
t1 Checkpoint
ساير الگوريتم های ترميم خرابی سيستمی
الگوريتم Undo / Noredoزمانی مورد استفاده قرار می گيرد که بهنگام سازی بالفاصله بوده و در فاصله ی بين
ايجاد نقطه وارس ی و لحظه ی بروز خرابی هيچ تراکنش تثبيت شده ای وجود نداشته باشد .مانند شکل زير:
T1
T2
T3
System Failure
t1 Checkpoint
الگوريتم نادر Noundo / Noredoزمانی مورد استفاده قرار می گيرد که نتيجه ی اجرای تمام تراکنش های تثبيت
شده قبل از ايجاد آخرين نقطه ی وارس ی به پايگاه منتقل شده باشد و مدل بهنگام سازی بالفاصله نباشد.
18
برای مطالعه بيشتر
1- Database Systems An Application Oriented Approach
Chapter 22, Atomicity and Durability.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
.) سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها-2
. ترميم پايگاه داده ها،فصل چهارم
. سيد محمد تقی روحانی رانکوهی:تاليف
.1386 ،13 مجموعه دانش و فن کامپيوتر،انتشارات جلوه
19
Slide 17
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>>>>>>>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>>>>>>>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی بالفاصله
در اين قسمت اين الگوريتم برای محيط چند کاربری بررس ی می شود.
در يک محيط چند کاربری اجرای همروند پنج تراکنش به صورت زير در نظر گرفته می شود.
مدير ترميم تراکنش ها را به صورت زير مديريت
می کند:
T1
T2
T3
-1تراکنش T1در ترميم نقش ی ندارد.
-2تراکنش های T3و T5چون در لحظه بروز
خرابی قعال بوده اند Undoمی شوند.
-3تراکنش های T2و T4چون قبل از بروز خرابی
تثبيت شده اند Redoمی شوند.
T4
T5
System Failure
17
t1 Checkpoint
ساير الگوريتم های ترميم خرابی سيستمی
الگوريتم Undo / Noredoزمانی مورد استفاده قرار می گيرد که بهنگام سازی بالفاصله بوده و در فاصله ی بين
ايجاد نقطه وارس ی و لحظه ی بروز خرابی هيچ تراکنش تثبيت شده ای وجود نداشته باشد .مانند شکل زير:
T1
T2
T3
System Failure
t1 Checkpoint
الگوريتم نادر Noundo / Noredoزمانی مورد استفاده قرار می گيرد که نتيجه ی اجرای تمام تراکنش های تثبيت
شده قبل از ايجاد آخرين نقطه ی وارس ی به پايگاه منتقل شده باشد و مدل بهنگام سازی بالفاصله نباشد.
18
برای مطالعه بيشتر
1- Database Systems An Application Oriented Approach
Chapter 22, Atomicity and Durability.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
.) سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها-2
. ترميم پايگاه داده ها،فصل چهارم
. سيد محمد تقی روحانی رانکوهی:تاليف
.1386 ،13 مجموعه دانش و فن کامپيوتر،انتشارات جلوه
19
Slide 18
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>>>>>>>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>>>>>
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی بالفاصله
در اين قسمت اين الگوريتم برای محيط چند کاربری بررس ی می شود.
در يک محيط چند کاربری اجرای همروند پنج تراکنش به صورت زير در نظر گرفته می شود.
مدير ترميم تراکنش ها را به صورت زير مديريت
می کند:
T1
T2
T3
-1تراکنش T1در ترميم نقش ی ندارد.
-2تراکنش های T3و T5چون در لحظه بروز
خرابی قعال بوده اند Undoمی شوند.
-3تراکنش های T2و T4چون قبل از بروز خرابی
تثبيت شده اند Redoمی شوند.
T4
T5
System Failure
17
t1 Checkpoint
ساير الگوريتم های ترميم خرابی سيستمی
الگوريتم Undo / Noredoزمانی مورد استفاده قرار می گيرد که بهنگام سازی بالفاصله بوده و در فاصله ی بين
ايجاد نقطه وارس ی و لحظه ی بروز خرابی هيچ تراکنش تثبيت شده ای وجود نداشته باشد .مانند شکل زير:
T1
T2
T3
System Failure
t1 Checkpoint
الگوريتم نادر Noundo / Noredoزمانی مورد استفاده قرار می گيرد که نتيجه ی اجرای تمام تراکنش های تثبيت
شده قبل از ايجاد آخرين نقطه ی وارس ی به پايگاه منتقل شده باشد و مدل بهنگام سازی بالفاصله نباشد.
18
برای مطالعه بيشتر
1- Database Systems An Application Oriented Approach
Chapter 22, Atomicity and Durability.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
.) سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها-2
. ترميم پايگاه داده ها،فصل چهارم
. سيد محمد تقی روحانی رانکوهی:تاليف
.1386 ،13 مجموعه دانش و فن کامپيوتر،انتشارات جلوه
19
Slide 2
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی بالفاصله
در اين قسمت اين الگوريتم برای محيط چند کاربری بررس ی می شود.
در يک محيط چند کاربری اجرای همروند پنج تراکنش به صورت زير در نظر گرفته می شود.
مدير ترميم تراکنش ها را به صورت زير مديريت
می کند:
T1
T2
T3
-1تراکنش T1در ترميم نقش ی ندارد.
-2تراکنش های T3و T5چون در لحظه بروز
خرابی قعال بوده اند Undoمی شوند.
-3تراکنش های T2و T4چون قبل از بروز خرابی
تثبيت شده اند Redoمی شوند.
T4
T5
System Failure
17
t1 Checkpoint
ساير الگوريتم های ترميم خرابی سيستمی
الگوريتم Undo / Noredoزمانی مورد استفاده قرار می گيرد که بهنگام سازی بالفاصله بوده و در فاصله ی بين
ايجاد نقطه وارس ی و لحظه ی بروز خرابی هيچ تراکنش تثبيت شده ای وجود نداشته باشد .مانند شکل زير:
T1
T2
T3
System Failure
t1 Checkpoint
الگوريتم نادر Noundo / Noredoزمانی مورد استفاده قرار می گيرد که نتيجه ی اجرای تمام تراکنش های تثبيت
شده قبل از ايجاد آخرين نقطه ی وارس ی به پايگاه منتقل شده باشد و مدل بهنگام سازی بالفاصله نباشد.
18
برای مطالعه بيشتر
1- Database Systems An Application Oriented Approach
Chapter 22, Atomicity and Durability.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
.) سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها-2
. ترميم پايگاه داده ها،فصل چهارم
. سيد محمد تقی روحانی رانکوهی:تاليف
.1386 ،13 مجموعه دانش و فن کامپيوتر،انتشارات جلوه
19
Slide 3
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی بالفاصله
در اين قسمت اين الگوريتم برای محيط چند کاربری بررس ی می شود.
در يک محيط چند کاربری اجرای همروند پنج تراکنش به صورت زير در نظر گرفته می شود.
مدير ترميم تراکنش ها را به صورت زير مديريت
می کند:
T1
T2
T3
-1تراکنش T1در ترميم نقش ی ندارد.
-2تراکنش های T3و T5چون در لحظه بروز
خرابی قعال بوده اند Undoمی شوند.
-3تراکنش های T2و T4چون قبل از بروز خرابی
تثبيت شده اند Redoمی شوند.
T4
T5
System Failure
17
t1 Checkpoint
ساير الگوريتم های ترميم خرابی سيستمی
الگوريتم Undo / Noredoزمانی مورد استفاده قرار می گيرد که بهنگام سازی بالفاصله بوده و در فاصله ی بين
ايجاد نقطه وارس ی و لحظه ی بروز خرابی هيچ تراکنش تثبيت شده ای وجود نداشته باشد .مانند شکل زير:
T1
T2
T3
System Failure
t1 Checkpoint
الگوريتم نادر Noundo / Noredoزمانی مورد استفاده قرار می گيرد که نتيجه ی اجرای تمام تراکنش های تثبيت
شده قبل از ايجاد آخرين نقطه ی وارس ی به پايگاه منتقل شده باشد و مدل بهنگام سازی بالفاصله نباشد.
18
برای مطالعه بيشتر
1- Database Systems An Application Oriented Approach
Chapter 22, Atomicity and Durability.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
.) سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها-2
. ترميم پايگاه داده ها،فصل چهارم
. سيد محمد تقی روحانی رانکوهی:تاليف
.1386 ،13 مجموعه دانش و فن کامپيوتر،انتشارات جلوه
19
Slide 4
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی بالفاصله
در اين قسمت اين الگوريتم برای محيط چند کاربری بررس ی می شود.
در يک محيط چند کاربری اجرای همروند پنج تراکنش به صورت زير در نظر گرفته می شود.
مدير ترميم تراکنش ها را به صورت زير مديريت
می کند:
T1
T2
T3
-1تراکنش T1در ترميم نقش ی ندارد.
-2تراکنش های T3و T5چون در لحظه بروز
خرابی قعال بوده اند Undoمی شوند.
-3تراکنش های T2و T4چون قبل از بروز خرابی
تثبيت شده اند Redoمی شوند.
T4
T5
System Failure
17
t1 Checkpoint
ساير الگوريتم های ترميم خرابی سيستمی
الگوريتم Undo / Noredoزمانی مورد استفاده قرار می گيرد که بهنگام سازی بالفاصله بوده و در فاصله ی بين
ايجاد نقطه وارس ی و لحظه ی بروز خرابی هيچ تراکنش تثبيت شده ای وجود نداشته باشد .مانند شکل زير:
T1
T2
T3
System Failure
t1 Checkpoint
الگوريتم نادر Noundo / Noredoزمانی مورد استفاده قرار می گيرد که نتيجه ی اجرای تمام تراکنش های تثبيت
شده قبل از ايجاد آخرين نقطه ی وارس ی به پايگاه منتقل شده باشد و مدل بهنگام سازی بالفاصله نباشد.
18
برای مطالعه بيشتر
1- Database Systems An Application Oriented Approach
Chapter 22, Atomicity and Durability.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
.) سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها-2
. ترميم پايگاه داده ها،فصل چهارم
. سيد محمد تقی روحانی رانکوهی:تاليف
.1386 ،13 مجموعه دانش و فن کامپيوتر،انتشارات جلوه
19
Slide 5
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی بالفاصله
در اين قسمت اين الگوريتم برای محيط چند کاربری بررس ی می شود.
در يک محيط چند کاربری اجرای همروند پنج تراکنش به صورت زير در نظر گرفته می شود.
مدير ترميم تراکنش ها را به صورت زير مديريت
می کند:
T1
T2
T3
-1تراکنش T1در ترميم نقش ی ندارد.
-2تراکنش های T3و T5چون در لحظه بروز
خرابی قعال بوده اند Undoمی شوند.
-3تراکنش های T2و T4چون قبل از بروز خرابی
تثبيت شده اند Redoمی شوند.
T4
T5
System Failure
17
t1 Checkpoint
ساير الگوريتم های ترميم خرابی سيستمی
الگوريتم Undo / Noredoزمانی مورد استفاده قرار می گيرد که بهنگام سازی بالفاصله بوده و در فاصله ی بين
ايجاد نقطه وارس ی و لحظه ی بروز خرابی هيچ تراکنش تثبيت شده ای وجود نداشته باشد .مانند شکل زير:
T1
T2
T3
System Failure
t1 Checkpoint
الگوريتم نادر Noundo / Noredoزمانی مورد استفاده قرار می گيرد که نتيجه ی اجرای تمام تراکنش های تثبيت
شده قبل از ايجاد آخرين نقطه ی وارس ی به پايگاه منتقل شده باشد و مدل بهنگام سازی بالفاصله نباشد.
18
برای مطالعه بيشتر
1- Database Systems An Application Oriented Approach
Chapter 22, Atomicity and Durability.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
.) سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها-2
. ترميم پايگاه داده ها،فصل چهارم
. سيد محمد تقی روحانی رانکوهی:تاليف
.1386 ،13 مجموعه دانش و فن کامپيوتر،انتشارات جلوه
19
Slide 6
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی بالفاصله
در اين قسمت اين الگوريتم برای محيط چند کاربری بررس ی می شود.
در يک محيط چند کاربری اجرای همروند پنج تراکنش به صورت زير در نظر گرفته می شود.
مدير ترميم تراکنش ها را به صورت زير مديريت
می کند:
T1
T2
T3
-1تراکنش T1در ترميم نقش ی ندارد.
-2تراکنش های T3و T5چون در لحظه بروز
خرابی قعال بوده اند Undoمی شوند.
-3تراکنش های T2و T4چون قبل از بروز خرابی
تثبيت شده اند Redoمی شوند.
T4
T5
System Failure
17
t1 Checkpoint
ساير الگوريتم های ترميم خرابی سيستمی
الگوريتم Undo / Noredoزمانی مورد استفاده قرار می گيرد که بهنگام سازی بالفاصله بوده و در فاصله ی بين
ايجاد نقطه وارس ی و لحظه ی بروز خرابی هيچ تراکنش تثبيت شده ای وجود نداشته باشد .مانند شکل زير:
T1
T2
T3
System Failure
t1 Checkpoint
الگوريتم نادر Noundo / Noredoزمانی مورد استفاده قرار می گيرد که نتيجه ی اجرای تمام تراکنش های تثبيت
شده قبل از ايجاد آخرين نقطه ی وارس ی به پايگاه منتقل شده باشد و مدل بهنگام سازی بالفاصله نباشد.
18
برای مطالعه بيشتر
1- Database Systems An Application Oriented Approach
Chapter 22, Atomicity and Durability.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
.) سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها-2
. ترميم پايگاه داده ها،فصل چهارم
. سيد محمد تقی روحانی رانکوهی:تاليف
.1386 ،13 مجموعه دانش و فن کامپيوتر،انتشارات جلوه
19
Slide 7
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی بالفاصله
در اين قسمت اين الگوريتم برای محيط چند کاربری بررس ی می شود.
در يک محيط چند کاربری اجرای همروند پنج تراکنش به صورت زير در نظر گرفته می شود.
مدير ترميم تراکنش ها را به صورت زير مديريت
می کند:
T1
T2
T3
-1تراکنش T1در ترميم نقش ی ندارد.
-2تراکنش های T3و T5چون در لحظه بروز
خرابی قعال بوده اند Undoمی شوند.
-3تراکنش های T2و T4چون قبل از بروز خرابی
تثبيت شده اند Redoمی شوند.
T4
T5
System Failure
17
t1 Checkpoint
ساير الگوريتم های ترميم خرابی سيستمی
الگوريتم Undo / Noredoزمانی مورد استفاده قرار می گيرد که بهنگام سازی بالفاصله بوده و در فاصله ی بين
ايجاد نقطه وارس ی و لحظه ی بروز خرابی هيچ تراکنش تثبيت شده ای وجود نداشته باشد .مانند شکل زير:
T1
T2
T3
System Failure
t1 Checkpoint
الگوريتم نادر Noundo / Noredoزمانی مورد استفاده قرار می گيرد که نتيجه ی اجرای تمام تراکنش های تثبيت
شده قبل از ايجاد آخرين نقطه ی وارس ی به پايگاه منتقل شده باشد و مدل بهنگام سازی بالفاصله نباشد.
18
برای مطالعه بيشتر
1- Database Systems An Application Oriented Approach
Chapter 22, Atomicity and Durability.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
.) سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها-2
. ترميم پايگاه داده ها،فصل چهارم
. سيد محمد تقی روحانی رانکوهی:تاليف
.1386 ،13 مجموعه دانش و فن کامپيوتر،انتشارات جلوه
19
Slide 8
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی بالفاصله
در اين قسمت اين الگوريتم برای محيط چند کاربری بررس ی می شود.
در يک محيط چند کاربری اجرای همروند پنج تراکنش به صورت زير در نظر گرفته می شود.
مدير ترميم تراکنش ها را به صورت زير مديريت
می کند:
T1
T2
T3
-1تراکنش T1در ترميم نقش ی ندارد.
-2تراکنش های T3و T5چون در لحظه بروز
خرابی قعال بوده اند Undoمی شوند.
-3تراکنش های T2و T4چون قبل از بروز خرابی
تثبيت شده اند Redoمی شوند.
T4
T5
System Failure
17
t1 Checkpoint
ساير الگوريتم های ترميم خرابی سيستمی
الگوريتم Undo / Noredoزمانی مورد استفاده قرار می گيرد که بهنگام سازی بالفاصله بوده و در فاصله ی بين
ايجاد نقطه وارس ی و لحظه ی بروز خرابی هيچ تراکنش تثبيت شده ای وجود نداشته باشد .مانند شکل زير:
T1
T2
T3
System Failure
t1 Checkpoint
الگوريتم نادر Noundo / Noredoزمانی مورد استفاده قرار می گيرد که نتيجه ی اجرای تمام تراکنش های تثبيت
شده قبل از ايجاد آخرين نقطه ی وارس ی به پايگاه منتقل شده باشد و مدل بهنگام سازی بالفاصله نباشد.
18
برای مطالعه بيشتر
1- Database Systems An Application Oriented Approach
Chapter 22, Atomicity and Durability.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
.) سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها-2
. ترميم پايگاه داده ها،فصل چهارم
. سيد محمد تقی روحانی رانکوهی:تاليف
.1386 ،13 مجموعه دانش و فن کامپيوتر،انتشارات جلوه
19
Slide 9
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی بالفاصله
در اين قسمت اين الگوريتم برای محيط چند کاربری بررس ی می شود.
در يک محيط چند کاربری اجرای همروند پنج تراکنش به صورت زير در نظر گرفته می شود.
مدير ترميم تراکنش ها را به صورت زير مديريت
می کند:
T1
T2
T3
-1تراکنش T1در ترميم نقش ی ندارد.
-2تراکنش های T3و T5چون در لحظه بروز
خرابی قعال بوده اند Undoمی شوند.
-3تراکنش های T2و T4چون قبل از بروز خرابی
تثبيت شده اند Redoمی شوند.
T4
T5
System Failure
17
t1 Checkpoint
ساير الگوريتم های ترميم خرابی سيستمی
الگوريتم Undo / Noredoزمانی مورد استفاده قرار می گيرد که بهنگام سازی بالفاصله بوده و در فاصله ی بين
ايجاد نقطه وارس ی و لحظه ی بروز خرابی هيچ تراکنش تثبيت شده ای وجود نداشته باشد .مانند شکل زير:
T1
T2
T3
System Failure
t1 Checkpoint
الگوريتم نادر Noundo / Noredoزمانی مورد استفاده قرار می گيرد که نتيجه ی اجرای تمام تراکنش های تثبيت
شده قبل از ايجاد آخرين نقطه ی وارس ی به پايگاه منتقل شده باشد و مدل بهنگام سازی بالفاصله نباشد.
18
برای مطالعه بيشتر
1- Database Systems An Application Oriented Approach
Chapter 22, Atomicity and Durability.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
.) سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها-2
. ترميم پايگاه داده ها،فصل چهارم
. سيد محمد تقی روحانی رانکوهی:تاليف
.1386 ،13 مجموعه دانش و فن کامپيوتر،انتشارات جلوه
19
Slide 10
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی بالفاصله
در اين قسمت اين الگوريتم برای محيط چند کاربری بررس ی می شود.
در يک محيط چند کاربری اجرای همروند پنج تراکنش به صورت زير در نظر گرفته می شود.
مدير ترميم تراکنش ها را به صورت زير مديريت
می کند:
T1
T2
T3
-1تراکنش T1در ترميم نقش ی ندارد.
-2تراکنش های T3و T5چون در لحظه بروز
خرابی قعال بوده اند Undoمی شوند.
-3تراکنش های T2و T4چون قبل از بروز خرابی
تثبيت شده اند Redoمی شوند.
T4
T5
System Failure
17
t1 Checkpoint
ساير الگوريتم های ترميم خرابی سيستمی
الگوريتم Undo / Noredoزمانی مورد استفاده قرار می گيرد که بهنگام سازی بالفاصله بوده و در فاصله ی بين
ايجاد نقطه وارس ی و لحظه ی بروز خرابی هيچ تراکنش تثبيت شده ای وجود نداشته باشد .مانند شکل زير:
T1
T2
T3
System Failure
t1 Checkpoint
الگوريتم نادر Noundo / Noredoزمانی مورد استفاده قرار می گيرد که نتيجه ی اجرای تمام تراکنش های تثبيت
شده قبل از ايجاد آخرين نقطه ی وارس ی به پايگاه منتقل شده باشد و مدل بهنگام سازی بالفاصله نباشد.
18
برای مطالعه بيشتر
1- Database Systems An Application Oriented Approach
Chapter 22, Atomicity and Durability.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
.) سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها-2
. ترميم پايگاه داده ها،فصل چهارم
. سيد محمد تقی روحانی رانکوهی:تاليف
.1386 ،13 مجموعه دانش و فن کامپيوتر،انتشارات جلوه
19
Slide 11
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی بالفاصله
در اين قسمت اين الگوريتم برای محيط چند کاربری بررس ی می شود.
در يک محيط چند کاربری اجرای همروند پنج تراکنش به صورت زير در نظر گرفته می شود.
مدير ترميم تراکنش ها را به صورت زير مديريت
می کند:
T1
T2
T3
-1تراکنش T1در ترميم نقش ی ندارد.
-2تراکنش های T3و T5چون در لحظه بروز
خرابی قعال بوده اند Undoمی شوند.
-3تراکنش های T2و T4چون قبل از بروز خرابی
تثبيت شده اند Redoمی شوند.
T4
T5
System Failure
17
t1 Checkpoint
ساير الگوريتم های ترميم خرابی سيستمی
الگوريتم Undo / Noredoزمانی مورد استفاده قرار می گيرد که بهنگام سازی بالفاصله بوده و در فاصله ی بين
ايجاد نقطه وارس ی و لحظه ی بروز خرابی هيچ تراکنش تثبيت شده ای وجود نداشته باشد .مانند شکل زير:
T1
T2
T3
System Failure
t1 Checkpoint
الگوريتم نادر Noundo / Noredoزمانی مورد استفاده قرار می گيرد که نتيجه ی اجرای تمام تراکنش های تثبيت
شده قبل از ايجاد آخرين نقطه ی وارس ی به پايگاه منتقل شده باشد و مدل بهنگام سازی بالفاصله نباشد.
18
برای مطالعه بيشتر
1- Database Systems An Application Oriented Approach
Chapter 22, Atomicity and Durability.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
.) سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها-2
. ترميم پايگاه داده ها،فصل چهارم
. سيد محمد تقی روحانی رانکوهی:تاليف
.1386 ،13 مجموعه دانش و فن کامپيوتر،انتشارات جلوه
19
Slide 12
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی بالفاصله
در اين قسمت اين الگوريتم برای محيط چند کاربری بررس ی می شود.
در يک محيط چند کاربری اجرای همروند پنج تراکنش به صورت زير در نظر گرفته می شود.
مدير ترميم تراکنش ها را به صورت زير مديريت
می کند:
T1
T2
T3
-1تراکنش T1در ترميم نقش ی ندارد.
-2تراکنش های T3و T5چون در لحظه بروز
خرابی قعال بوده اند Undoمی شوند.
-3تراکنش های T2و T4چون قبل از بروز خرابی
تثبيت شده اند Redoمی شوند.
T4
T5
System Failure
17
t1 Checkpoint
ساير الگوريتم های ترميم خرابی سيستمی
الگوريتم Undo / Noredoزمانی مورد استفاده قرار می گيرد که بهنگام سازی بالفاصله بوده و در فاصله ی بين
ايجاد نقطه وارس ی و لحظه ی بروز خرابی هيچ تراکنش تثبيت شده ای وجود نداشته باشد .مانند شکل زير:
T1
T2
T3
System Failure
t1 Checkpoint
الگوريتم نادر Noundo / Noredoزمانی مورد استفاده قرار می گيرد که نتيجه ی اجرای تمام تراکنش های تثبيت
شده قبل از ايجاد آخرين نقطه ی وارس ی به پايگاه منتقل شده باشد و مدل بهنگام سازی بالفاصله نباشد.
18
برای مطالعه بيشتر
1- Database Systems An Application Oriented Approach
Chapter 22, Atomicity and Durability.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
.) سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها-2
. ترميم پايگاه داده ها،فصل چهارم
. سيد محمد تقی روحانی رانکوهی:تاليف
.1386 ،13 مجموعه دانش و فن کامپيوتر،انتشارات جلوه
19
Slide 13
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی بالفاصله
در اين قسمت اين الگوريتم برای محيط چند کاربری بررس ی می شود.
در يک محيط چند کاربری اجرای همروند پنج تراکنش به صورت زير در نظر گرفته می شود.
مدير ترميم تراکنش ها را به صورت زير مديريت
می کند:
T1
T2
T3
-1تراکنش T1در ترميم نقش ی ندارد.
-2تراکنش های T3و T5چون در لحظه بروز
خرابی قعال بوده اند Undoمی شوند.
-3تراکنش های T2و T4چون قبل از بروز خرابی
تثبيت شده اند Redoمی شوند.
T4
T5
System Failure
17
t1 Checkpoint
ساير الگوريتم های ترميم خرابی سيستمی
الگوريتم Undo / Noredoزمانی مورد استفاده قرار می گيرد که بهنگام سازی بالفاصله بوده و در فاصله ی بين
ايجاد نقطه وارس ی و لحظه ی بروز خرابی هيچ تراکنش تثبيت شده ای وجود نداشته باشد .مانند شکل زير:
T1
T2
T3
System Failure
t1 Checkpoint
الگوريتم نادر Noundo / Noredoزمانی مورد استفاده قرار می گيرد که نتيجه ی اجرای تمام تراکنش های تثبيت
شده قبل از ايجاد آخرين نقطه ی وارس ی به پايگاه منتقل شده باشد و مدل بهنگام سازی بالفاصله نباشد.
18
برای مطالعه بيشتر
1- Database Systems An Application Oriented Approach
Chapter 22, Atomicity and Durability.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
.) سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها-2
. ترميم پايگاه داده ها،فصل چهارم
. سيد محمد تقی روحانی رانکوهی:تاليف
.1386 ،13 مجموعه دانش و فن کامپيوتر،انتشارات جلوه
19
Slide 14
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی بالفاصله
در اين قسمت اين الگوريتم برای محيط چند کاربری بررس ی می شود.
در يک محيط چند کاربری اجرای همروند پنج تراکنش به صورت زير در نظر گرفته می شود.
مدير ترميم تراکنش ها را به صورت زير مديريت
می کند:
T1
T2
T3
-1تراکنش T1در ترميم نقش ی ندارد.
-2تراکنش های T3و T5چون در لحظه بروز
خرابی قعال بوده اند Undoمی شوند.
-3تراکنش های T2و T4چون قبل از بروز خرابی
تثبيت شده اند Redoمی شوند.
T4
T5
System Failure
17
t1 Checkpoint
ساير الگوريتم های ترميم خرابی سيستمی
الگوريتم Undo / Noredoزمانی مورد استفاده قرار می گيرد که بهنگام سازی بالفاصله بوده و در فاصله ی بين
ايجاد نقطه وارس ی و لحظه ی بروز خرابی هيچ تراکنش تثبيت شده ای وجود نداشته باشد .مانند شکل زير:
T1
T2
T3
System Failure
t1 Checkpoint
الگوريتم نادر Noundo / Noredoزمانی مورد استفاده قرار می گيرد که نتيجه ی اجرای تمام تراکنش های تثبيت
شده قبل از ايجاد آخرين نقطه ی وارس ی به پايگاه منتقل شده باشد و مدل بهنگام سازی بالفاصله نباشد.
18
برای مطالعه بيشتر
1- Database Systems An Application Oriented Approach
Chapter 22, Atomicity and Durability.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
.) سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها-2
. ترميم پايگاه داده ها،فصل چهارم
. سيد محمد تقی روحانی رانکوهی:تاليف
.1386 ،13 مجموعه دانش و فن کامپيوتر،انتشارات جلوه
19
Slide 15
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی بالفاصله
در اين قسمت اين الگوريتم برای محيط چند کاربری بررس ی می شود.
در يک محيط چند کاربری اجرای همروند پنج تراکنش به صورت زير در نظر گرفته می شود.
مدير ترميم تراکنش ها را به صورت زير مديريت
می کند:
T1
T2
T3
-1تراکنش T1در ترميم نقش ی ندارد.
-2تراکنش های T3و T5چون در لحظه بروز
خرابی قعال بوده اند Undoمی شوند.
-3تراکنش های T2و T4چون قبل از بروز خرابی
تثبيت شده اند Redoمی شوند.
T4
T5
System Failure
17
t1 Checkpoint
ساير الگوريتم های ترميم خرابی سيستمی
الگوريتم Undo / Noredoزمانی مورد استفاده قرار می گيرد که بهنگام سازی بالفاصله بوده و در فاصله ی بين
ايجاد نقطه وارس ی و لحظه ی بروز خرابی هيچ تراکنش تثبيت شده ای وجود نداشته باشد .مانند شکل زير:
T1
T2
T3
System Failure
t1 Checkpoint
الگوريتم نادر Noundo / Noredoزمانی مورد استفاده قرار می گيرد که نتيجه ی اجرای تمام تراکنش های تثبيت
شده قبل از ايجاد آخرين نقطه ی وارس ی به پايگاه منتقل شده باشد و مدل بهنگام سازی بالفاصله نباشد.
18
برای مطالعه بيشتر
1- Database Systems An Application Oriented Approach
Chapter 22, Atomicity and Durability.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
.) سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها-2
. ترميم پايگاه داده ها،فصل چهارم
. سيد محمد تقی روحانی رانکوهی:تاليف
.1386 ،13 مجموعه دانش و فن کامپيوتر،انتشارات جلوه
19
Slide 16
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی بالفاصله
در اين قسمت اين الگوريتم برای محيط چند کاربری بررس ی می شود.
در يک محيط چند کاربری اجرای همروند پنج تراکنش به صورت زير در نظر گرفته می شود.
مدير ترميم تراکنش ها را به صورت زير مديريت
می کند:
T1
T2
T3
-1تراکنش T1در ترميم نقش ی ندارد.
-2تراکنش های T3و T5چون در لحظه بروز
خرابی قعال بوده اند Undoمی شوند.
-3تراکنش های T2و T4چون قبل از بروز خرابی
تثبيت شده اند Redoمی شوند.
T4
T5
System Failure
17
t1 Checkpoint
ساير الگوريتم های ترميم خرابی سيستمی
الگوريتم Undo / Noredoزمانی مورد استفاده قرار می گيرد که بهنگام سازی بالفاصله بوده و در فاصله ی بين
ايجاد نقطه وارس ی و لحظه ی بروز خرابی هيچ تراکنش تثبيت شده ای وجود نداشته باشد .مانند شکل زير:
T1
T2
T3
System Failure
t1 Checkpoint
الگوريتم نادر Noundo / Noredoزمانی مورد استفاده قرار می گيرد که نتيجه ی اجرای تمام تراکنش های تثبيت
شده قبل از ايجاد آخرين نقطه ی وارس ی به پايگاه منتقل شده باشد و مدل بهنگام سازی بالفاصله نباشد.
18
برای مطالعه بيشتر
1- Database Systems An Application Oriented Approach
Chapter 22, Atomicity and Durability.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
.) سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها-2
. ترميم پايگاه داده ها،فصل چهارم
. سيد محمد تقی روحانی رانکوهی:تاليف
.1386 ،13 مجموعه دانش و فن کامپيوتر،انتشارات جلوه
19
Slide 17
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی بالفاصله
در اين قسمت اين الگوريتم برای محيط چند کاربری بررس ی می شود.
در يک محيط چند کاربری اجرای همروند پنج تراکنش به صورت زير در نظر گرفته می شود.
مدير ترميم تراکنش ها را به صورت زير مديريت
می کند:
T1
T2
T3
-1تراکنش T1در ترميم نقش ی ندارد.
-2تراکنش های T3و T5چون در لحظه بروز
خرابی قعال بوده اند Undoمی شوند.
-3تراکنش های T2و T4چون قبل از بروز خرابی
تثبيت شده اند Redoمی شوند.
T4
T5
System Failure
17
t1 Checkpoint
ساير الگوريتم های ترميم خرابی سيستمی
الگوريتم Undo / Noredoزمانی مورد استفاده قرار می گيرد که بهنگام سازی بالفاصله بوده و در فاصله ی بين
ايجاد نقطه وارس ی و لحظه ی بروز خرابی هيچ تراکنش تثبيت شده ای وجود نداشته باشد .مانند شکل زير:
T1
T2
T3
System Failure
t1 Checkpoint
الگوريتم نادر Noundo / Noredoزمانی مورد استفاده قرار می گيرد که نتيجه ی اجرای تمام تراکنش های تثبيت
شده قبل از ايجاد آخرين نقطه ی وارس ی به پايگاه منتقل شده باشد و مدل بهنگام سازی بالفاصله نباشد.
18
برای مطالعه بيشتر
1- Database Systems An Application Oriented Approach
Chapter 22, Atomicity and Durability.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
.) سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها-2
. ترميم پايگاه داده ها،فصل چهارم
. سيد محمد تقی روحانی رانکوهی:تاليف
.1386 ،13 مجموعه دانش و فن کامپيوتر،انتشارات جلوه
19
Slide 18
ترميم در پايگاه داده ها
)(Recovery
مدرس :دکتر فاطمه احمدی آبکناری
بهار 1392
ترميم
سيستم مديريت پايگاه داده ها بايد دارای اين توانايی باشد که پس از بروز هر خرابی ( )Failureپايگاه را احياء
کرده و در شرايط سازگار ( )Consistentقرار دهد .نکته ای که طراحی روال های ترميم را دچار چالش می نمايد
اين واقعيت است که در لحظه ی بروز خرابی ،يک و يا چند تراکنش فعال بوده اند .از اين رو نحوه ی برخورد روال
های ترميم ( )Recovery Procedureبا تراکنش (های) فعال در لحظه بروز خرابی در صحت روال های ترميم و
احياء پايگاه داده از اهميت بااليی برخوردار است.
زمانی که سيستم پس از بروز خرابی دوباره آغاز بکار می نمايد سرويس های جاری شروع بکار نمی نمايند تا زمانی که
روال ترميم اجرا شده و پايگاه را در شرايط پايدار و سازگار قرار دهد .روال ترميم توسط واحد مديريت ترميم که از
زير سيستم های سيستم مديريت پايگاه داده ( )DBMSاست اجرا می گردد.
روال ترميم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار ( )Resume Executionوادارد
که به آن استراتژی پيشرو ) (Rollforwardگفته می شود اما در حالت ديگر ممکن است روال ترميم تاثيرات
تراکنش فعال در لحظه وقوع خرابی را بی اثر ( )Undoneکرده و سيستم پايگاه داده را به شرايط قبل از شروع
تراکنش مزبور ببرد که به آن ،استراتژی پسرو ( )Rollbackاطالق می شود.
2
خرابی ()Failure
خرابی ها به دو دسته ی کلی زير تقسيم می گردند:
Media Failure
(خرابی رسانه ای)
System Failure
(خرابی سيستمی)
اگرچه خاصيت ماندگاری ( )Durabilityتراکنش ها به محفوظ ماندن تاثير اجرای موفقيت آميز تراکنش در پايگاه
داللت دارد اما پايگاه داده بر روی ديسک ذخيره می شود و ديسک ها هم با انواعی از خرابی رو در رو هستند .خرابی
رسانه ای به معنای خرابی در تمام و يا قسمتی از داده های ذخيره شده بر روی حافظه ماندگار ( Nonvolatile
)memoryمانند ديسک سخت است و بر روی تراکنش هايی که در زمان وقوع خرابی در سيستم فعال بوده اند
تاثير می گذارد .به اين نوع خرابی گاه خدشه ی سخت ( )Hard Crashاطالق می شود .راه حل عمومی ترميم
خرابی رسانه ای استفاده از نسخه (های) پشتيبان است.
در خرابی سيستمی ،داده های ذخيره شده در معرض خرابی نيستند اما تمام و يا تعدادی از تراکنش های فعال در
سيستم دستخوش آسيب می گردند .به اين نوع خرابی گاه خدشه نرم ( )Soft Crashگفته می شود.
3
خرابی ()Failure
در يک رده بندی ديگر ،می توان خرابی ها به دو دسته ی خرابی های موضعی ( )Local Failureو خرابی های
سراسری ( )Global Failureتقسيم کرد .در خرابی موضعی که به خرابی تراکنش ()Transaction Failure
نيز موسوم است اجرای يک تراکنش دچار اختالل می گردد مانند حالتی که تراکنش دچار خطای محاسباتی می شود
مانند تقسيم بر صفر .خرابی های موضعی عموما منجر به پايان نيمه کامل تراکنش مزبور ( )Abortمی شوند.
خرابی سراسری زمانی پيش می آيد که در اجرای کل تراکنش ها اختالل پيش بيايد و اجرای کل برنامه متوقف شود
مانند خرابی در بافرهای نگهدارنده نتايج تراکنش ها .اين نوع خرابی ممکن است سيستمی و يا رسانه ای باشد.
در دسته بندی ديگر ،خرابی ها از نظر مدت زمان به سه دسته ی دائمی ( ،)Permanentدوره ای
( )Intermittentو زودگذر ( )Transientتقسيم می شوند .مثالی از خرابی دائمی ،خرابی سخت افزار و باالخص
خرابی ديسک است در حاليکه سنگينی بار سيستم در زمانهای خاص پاسخگويی نمونه ای از خرابی دوره ای است.
خرابی زودگذر مانند کند بودن سرويس اينترنت برای مدت کوتاه (حداکثر چندساعت) برای برنامه های کاربردی
پايگاه داده تحت وب.
4
واحد مديريت ترميم
زير سيستم مديريت ترميم شامل واحد نرم افزاری مدير ترميم ( )Recovery Managerاست که به اختصار به
RMشهرت دارد .طراحی واحد مديريت ترميم ،بسيار دشوار و پرچالش است چراکه واحدی است که در زمان بروز
خرابی در سيستم فراخوانده شده و بايد با بکارگيری الگوريتم های کارآمد فرايند ترميم را به انجام برساند.
برای اجرای روال های ترميم ،واحد مديريت ترميم با واحد های ديگری از سيستم مديريت پايگاه مانند مدير حافظه
نهان ( )Cache Managerکه به اختصار به CMموسوم است و واحد زمان بندی اجرا که اجرای تراکنش های
فعال در لحظه خرابی را به صورت از سرگيری و يا اجرای دوباره به عهده دارد مرتبط است.
ارتباط مدير ترميم با مدير حافظه نهان در قالب دو درخواست واکش ی ( )Fetchيک صفحه از حافظه نهان و يا تخليه
يک صفحه از حافظه نهان ( )Flushکه همان جايگزينی يک صفحه با صفحه ديگری است معنا می يابد .بنابراين
مدير ترميم به منظور شروع به انجام عمليات ترميم ابتدا در يک فرايند تحليلی بايد تراکنش های فعال در لحظه بروز
خرابی را شناسايی کرده و سپس صفحات تغيير يافته ( )Dirty Pagesدر حافظه نهان را که شامل نتايج ميانی
تراکنش (های) فعال بوده اند و هنوز به ديسک منتقل نشده اند را شناسايی کند.
5
واحد مديريت ترميم
پس از انجام تحليل ،الگوريتم ترميم بنا به تصميم واحد مديريت ترميم يکی از دوحالت زير را اجرا خواهد کرد:
عمل UNDO
عمل REDO
در صورت تصميم به اجرای عمل ،Redoعمليات انجام شده توسط تراکنش (های) تثبيت شده تکرار می گردد و در
صورت تصميم به انجام عمل Undoاثر اجرای ناقص تراکنش (های) نيمه کامل و يا طرد شده خنثی می گردد.
عموما روال ترميم بدون دخالت کاربر و تنها توسط مدير ترميم انجام می گيرد .به منظور انجام هريک از دو عمل ذکر
شده ،مدير ترميم از فايل ثبت ( )Log Fileاستفاده می کند.
Log File
Database
Non
Volatile
Memory
Page: Unit of Transfer
Cache
Volatile
Memory
Include recently accessed pages
6
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نحوه تخليه ( )Flushبافر نهان دارد .وقتی تراکنش ی داده
ای را بهنگام می کند نتيجه ی ثبت شده در بافر نهان به دو حالت زير به پايگاه منتقل می شود:
Deferred Update
(بهنگام سازی با تاخير)
Immediate Update
(بهنگام سازی بالفاصله)
در روش بهنگام سازی با تاخير ،صفحات تغيير يافته در حافظه نهان که نتايج اجرای تراکنش فعال را ذخيره کرده اند
فقط زمانی به پايگاه منتقل می شوند که تراکنش تثبيت شده باشد .در روش بهنگام سازی بالفاصله ،صفحات تغيير
يافته پيش از تثبيت تراکنش به پايگاه منتقل می شوند اما قبل از اين انتقال ،داده های تغيير يافته در فايل ثبت
( )Log Fileنوشته می شوند تا در صورت بروز خرابی ،امکان تشخيص سهل تر تراکنش های فعال و داده های تغيير
يافته توسط آنها برای روال ترميم وجود داشته باشد.
مزيت روش بهنگام سازی بالفاصله ،عدم نياز به حافظه زياد برای بافرهاست .در راهکار تخليه اجباری ( Forcing
،)Approachصفحات تغيير يافته توسط يک تراکنش بايد پس از تثبيت تراکنش بالفاصله به ديسک منتقل شوند
بنابراين ،اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنگام شود بايد چندين بار بر روی ديسک نوشته شود .در
روش بهنگام سازی با تاخير عمدتا از روش تخليه غير اجباری استفاده می شود.
7
فايل ثبت
فايل ثبت ( )Log Fileکه به آن فايل رويدادنگاری ( )Event Journalingنيز گفته می شود بر روی حافظه
ماندگار قرار داده می شود تا از آسيب مصون باشد .گاه به منظور اطمينان از مصون ماندن اين فايل ،چند نسخه از
آن نگهداری می شود.
ساختار هر رکورد در فايل ثبت ممکن است در سيستم های مختلف متفاوت باشد ولی فيلدهای مشترک آن شامل
موارد زير خواهد بود:
شناسه تراکنش ( ،)TIDزمان انجام هر يک از عمليات( ،)Timeنوع عمل هر تراکنش در زمان ذکر شده (،)OP
شناسه ی داده ای که تراکنش بر روی آن انجام می شود ( ،)Dataپيش تصوير که مقدار داده قبل از بهنگام سازی
است ( ،)Before Image: BIپس تصوير که مقدار داده بعد از بهنگام سازی است (،)After Image: AI
شماره سريال رکورد ثبت ( ،)Log Sequence Number: LSNاشاره گر به رکورد قبلی تراکنش ( Previous
،)Pointer: PPTRاشاره گر به رکورد بعدی تراکنش (... ،)Next Pointer: NPTR
8
OP
TIME
NPTR
PPTR
TID
LSN
AI
BI
DATA
BEG
12:04
2
0
T1
1
12:08
4
1
T1
2
new v.
old v.
200
UP
8
0
T2
3
100
BEG
12:14
5
2
T1
4
new v.
old v.
COM
12:24
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)Write-Ahead Loggingکه روش متداول در استفاده از فايل ثبت در انجام فرايند ترميم است
در سيستم هايی مانند Oracleو يا Sybaseبکار می رود و به دو صورت نوشتن پيش رس در بهنگام سازی بالفاصله و نوشتن
پيش رس در بهنگام سازی با تاخير بکار می رود.
نوشتن پيش رس در بهنگام سازی بالفاصله با اين صورت است که پيش تصوير ( )Before Imageقبل از نوشته شدن نتيجه
نهايی بهنگام سازی (پس تصوير ( ))After Imageدر پايگاه داده و در بافر ،در فايل ثبت نوشته می شود .اين نوشته شدن ،برای
انجام عمليات Undoالزم است .همچنين رکورد تثبيت و يا طرد تراکنش نيز در صورت پايان موفقيت آميز و يا نيمه کامل تراکنش،
در فايل ثبت نوشته می شود.
نوشتن پيش رس در بهنگام سازی با تاخير به اين صورت است که فقط پس تصوير ( )After Imageو ساير اطالعات الزم قبل از
انتقال به پايگاه در فايل ثبت نوشته می شود .اين نوشته شدن ،برای انجام عمليات Redoالزم است .همچنين رکورد تثبيت در
صورت پايان موفقيت آميز تراکنش ،در فايل ثبت نوشته می شود.
فايل ثبت ممکن است فيزيکی يا ثبت مقدار ( )Value Loggingبوده و يا منطقی يا ثبت عمليات ()Operation Logging
باشد .مثال های مطرح شده در اساليد های قبل ،نمونه ای از فايل ثبت فيزيکی است .در فايل ثبت منطقی ،نتايج توليد شده
توسط تراکنش ها ذخيره نمی شود بنابراين کوچکتر از فايل ثبت فيزيکی است .اگرچه پيمايش آن سريع تر است ولی تفسير
رکوردهای آن برای مدير ترميم دشوارتر است و از اين رو کارايی سيستم کند می شود.
9
زباله روبی فايل ثبت
برای جلوگيری از رشد بيش از حد فايل ثبت بايد فضايی که در اختيار رکورد های ناالزم است بازپس گرفته شده و
مجددا مورد استفاده قرار گيرد که به اين کار زباله روبی فايل ثبت ( )Log Garbage Collectionاطالق می
شود.
اگر < >Ti, D, vيک رکورد در فايل ثبت باشد مدير ترميم به منظور زباله روبی در صورتی اين رکورد را حذف می
کند اگر:
-1تراکنش Tiيک تراکنش طرد شده باشد.
-2تراکنش Tiتثبيت شده باشد ولی تراکنش ديگری پس از تراکنش Tiيک مقدار جديد (’ )vبرای داده ی Dنوشته
باشد.
-3نگهداری آخرين پس تصوير ( )AIو اولين پيش تصوير ( )BIبرای هر صفحه تغيير يافته
-4حذف رکوردهايي که فقط عمل خواندن انجام داده اند.
10
ايجاد نقطه وارس ی
مدير ترميم همانطور که قبال ذکر شد از فايل ثبت به منظور ترميم پايگاه استفاده می کند اما با توجه به حجم فايل
ثبت ،سوال اين است که به منظور انجام عمليات ترميم ،فايل ثبت در يک عمليات پويش وارون تا کجا بايد بررس ی
شود .بنابراين به منظور تسريع در پويش و جستجو در فايل ثبت و احتراز از خطا در تشخيص تراکنش ها ،نقاط وارس ی
( )Checkpointدر فايل ثبت ايجاد می شود.
عموما برای ايجاد نقاط وارس ی در اکثر سيستم ها ،روند اجرای تراکنش ها متوقف می شود اما در بعض ی از سيستم
ها مانند Oracleايجاد نقاط وارس ی و اجرای تراکنش ها به صورت همروند انجام می گيرد .ايجاد نقطه وارس ی هر
چند وقت يکبار به تشخيص مدير ترميم انجام می گيرد .ايجاد يک نقطه وارس ی به اين صورت است که سيستم يک
رکورد به اسم Checkpointبه همراه ليستی از تراکنش های فعال در همان لحظه (<)>CHECKPOINT, L
در فايل ثبت می نويسد.
چندين روش برای ايجاد نقاط وارس ی وجود دارد .در يک روش ( )Cache Consistent Checkpointاجرای
تمام تراکنش ها متوقف شده ،محتوای بافر شامل صفحات تغيير يافته ،تخليه اجباری شده ،رکورد نقطه وارس ی در
فايل ثبت ايجاد و اجرای تراکنش ها از سر گرفته می شود .در يک روش ديگر ( Commit Consistent
)Checkpointسيستم منتظر می ماند که تراکنش های فعال تثبيت و يا طرد شوند و به تراکنش جديد اجازه
شروع نمی دهد و صفحات تغيير يافته را بر روی ديسک می نويسد.
11
رکوردهای فعال در لحظه ی بروز خرابی
: فايل ثبت را می توان به شکل زير بررس ی کرد،OP با در نظر گرفتن فقط فيلد
U3
U5
A5
CK
T4
T1
T3
U1
U4
Key:
Ui: Update record for transaction Ti
Bi: Begin record for transaction Ti
Ci: Commit record for transaction Ti
Ai: Abort record for transaction Ti
CK: Checkpoint record
B6
C4
U6
U1
Time
Crash
T1 and T3 , T6 were active at the time of the crash.
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی با تاخير و ترميم در بهنگام
سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررس ی می شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل Redoو Undoعمل می کنند چهار الگوريتم ترميم بر پايه
آنها به شرح زير وجود دارد:
-1الگوريتم )Undo/Redo (U-R
-2الگوريتم )Noundo /Redo (NU-R
-3الگوريتم )Undo / Noredo (U-NR
-4الگوريتم )Noundo /Noredo (NU-NR
در ادامه به بررس ی الگوريتم های ذکر شده می پردازيم:
13
تکنيک های ترميم در بهنگام سازی با تاخير
از آنجا که در بهنگام سازی با تاخير تنها در صورتی داده ها به پايگاه منتقل می شود که تراکنش تثبيت شده باشد پس نيازی به
انجام عمل Undoنيست و تنها عمل Redoالزم است .بنابراين الگوريتم ترميم در اين حالت Noundo/Redoاست .بنابراين
تراکنش های فعال را ناديده گرفته و تراکنش های تثبيت شده پس از نقطه وارس ی را Redoمی نمايد .در ادامه اين الگوريتم را
برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليه، B=2000 ، A=1000 :
)C=700
اگر خرابی پس از دستور ) W(Cاز تراکنش T2
بروز کند چون هنوز تراکنش T2به Commit
نرسيده است روال ترميم اين تراکنش را ناديده می
گيرد و مقدار C=700باقی می ماند .اما تراکنش
T1را که تثبيت شده بود Redoمی کند پس
مقادير Aو Bبه ترتيب 950و 2050خواهند
بود.
14
>
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش با هم ممکن است در حال اجرا
باشند .بنابراين برای بررس ی اين روش در محيط چند کاربری مانند حالت تک کاربری ،ليست تراکنش های تثبيت شده پس از آخرين
نقطه وارس ی و ليست تراکنش های فعال در لحظه بروز خرابی بررس ی می شود .پس از بررس ی فايل ثبت ،عمليات نوشتن تراکنش
های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان ديرتری پس از اتمام روال ترميم ،اجرای آنها
توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه بروز
خرابی فعال بوده اند ناديده گرفته می شوند.
-2تراکنش های T2و T3چون قبل از بروز خرابی
تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارس ی
تثبيت شده نياز به Redoندارد .
T2
T3
T4
T5
System Failure
15
T1
t1 Checkpoint
تکنيک های ترميم در بهنگام سازی بالفاصله
از آنجا که در بهنگام سازی بالفاصله ،داده بهنگام شده بالفاصله و قبل از تثبيت در پايگاه نوشته می شود بنابراين مدير ترميم بايد
تراکنش های به تثبيت نرسيده را با استفاده از پيش تصوير که در فايل ثبت وجود دارد Undoکند و عمليات نوشتن تراکنش های
تثبيت شده را با استفاده از پس تصوير Redoکند .پس در اين حالت از الگوريتم Undo / Redoاستفاده می شود .در ادامه
اين الگوريتم را برای محيط تک کاربری بررس ی می کنيم.
تراکنش های T1و T2در يک محيط تک کاربری به صورت سريال در اينجا ) (T1, T2اجرا می شوند .اين دو تراکنش به صورت
زير هستند و محتويات بخش ی از فايل ثبت در باکس سوم از سمت چپ ديده می شود:
اگر خرابی پس از دستور ) W(Bاز تراکنش T1بروز کند
چون هنوز تراکنش T1به Commitنرسيده است روال
ترميم اين تراکنش را با استفاده از پيش تصوير Undoمی
کند و مقادير A=1000و B=2000خواهند بود .اگر
خرابی پس از دستور ) W(Cاز تراکنش T2بروز کند
تراکنش T2چون تثبيت نشده بود Undoمی شود و
مقدار c=700می شود در حاليکه تراکنش Redo ، T1
شده و با استفاده از پس تصوير مقادير A=950و
B=2050می شود.
16
>