صفحه 1:
ترمیم در پایگاه داده ها
(Recovery)
صفحه 2:
سیستم مدیریت پایگاه داده ها باید دارای اين توانایی باشد که پس از بروز هر خرابی (۳۵110176) پایگاه را
احياء کرده و در شرایط سازگار (0۳515/6/)) قرار دهد. نکته ای که طراحی روال های ترمیم را دچار
چالش می نماید این واقعیت است که در لحظه ی بروز خرابی. یک و يا چند تراکنش فعال بوده اند. از این
رو نحوه ی برخورد روال های ترمیم (۳۲00601276 36006۲7) با تراکنش (های) فعال در لحظه
بروز خرابی در صحت روال های ترمیم و احیاء پایگاه داده از اهمیت بالایی برخوردار است.
زمانی که سیستم پس از بروز خرابی دوباره آغاز بکار می نماید سرویس های جاری شروع بکار نمی نمایند تا
زمانی که روال ترمیم اجرا شده و پایگاه را در شرایط پایدار و سازگار قرار دهد. روال تسرمیم توسط واحد
مدیریت ترمیم که از زیر سیستم های سیستم مدیریت پایگاه داده (121۷15) است اجرا می گردد.
روال ترمیم ممکن است تراکنش فعال در لحظه ی وقوع خرابی را به ادامه کار Resume)
Execution وادارد که به آن استراتژی پیشرو ([1101180۳178۳6) گفته می شود اما در حالت دیگر
ممکن است روال ترمیم تاثیرات تراکنش فعال در لحظه وقوع خرابی را بی اثر (1180016) کرده و
بيستم يايكاه داده را به شرايط قبل از شروع تراكنش مزبور برد آنء استراتؤى يسرو
كا ةط1011]) اطلاق مى شود.
—
صفحه 3:
(Failure) خرابی
خرابی ها به دو دسته ی کلی زیر تقسیم می گردند:
System Failure Media Failure
۲ a ails) (خرابي رسانه اي)
اكرجه خاصيت ماندكارى (1011131111137) تراكنش ها به محفوظ ماندن تاثير اجراى موفقيت آميز
تراکنش در پایگاه دلالت دارد اما پایگاه داده بر روی دیسک ذخیره مى شود و ديسك ها هم با انواعى از
خرابی رو در رو هستند. خرابی رسانه ای به معنای خرابی در تمام و یا قسمتی از داده های ذخیره شده بسر
روی حافظه ماندگار (106100177 011۷0116 ["() مانند دیسک سخت است و بر روی تراکنش هایی
که در زمان وقوع خرابی در سیستم فعال بوده اند تاثیر می گذارد. به این نوع خرابی گاه خدشه ی سخت
Crash) ۳1870) اطلاق می شود. راه حل عمومی ترمیم خرابی رسانه ای استفاده از نسخه (هاى)
در خرایی سیستمی, داده های ذخیره شده در معرض خرابی فیستند اما تمام و پا تعدادی از تراکنش های
فعال در سیستم دستخوش آسیب می گردند. به اين نوع خرابی گاه خدشه نرم (۲8510) aus (Soft
هی شود
صفحه 4:
(Failure) خرابی
در یک رده بندی دیگر, می توان خرابی ها به دو دسته ی Local Failure) 250 (she cal S 9
خرابی های سراسری (11176 2101081)) تقسیم کرد. در خرابی موضعی که به خرابی تراکنش
(Transaction Failure) 5,5 موسوم است اجراى يك تراكنش دجار اختلال مى كردد مانند
حالتى كه تراكنش دجار خطاى محاسباتى مى شود مانند تقسيم بر صفر. خرابى هاى موضعى عموما منجر
به يايان نيمه كامل تراكنش مزبور (44101:6) مى شوند.
خرابى سراسرى زمانى ييش مى آيد كه در اجراى كل تراكنش ها اختلال ييش بيايد و اجرای کل برنامه
متوقف شود مانند خرابى در بافرهاى نكهدارنده نتايج تراكنش ها. اين نوع خرابى ممكن است سيستمى ويا
رسانه ای باشد.
در دسته بندی دیگر» خرابی ها از نظر مدت زمان به سه دسته Gleyge (Permanent) catls i
«احعااتحصعاصآ) و رودگذر (1۳60861601) تقسیم می شوند. مثالی از خرابی دائمی» خرابی سخت
افزار و بالاخص خرابی دیسک است در حالیکه سنگینی بار سیستم در زمانهای خاص پاسخگویی نمونه ای از
خرایی دوره ای است. خرابی زودگذر مانند کند بودن سرویس اینترنت پرای مدت کوتاه (حداکثر چندساعت)
برای برنامه های کاربردی پایگاه داده تحت وب.
صفحه 5:
واحد مدیربت ترمیم
زیر سیستم مدیریت ترمیم شامل واحد نرم cul (Recovery Manager) peas pro 5 jljil 4445
اختصار به 18111 شهرت دارد. طراحی واحد مدیریت ترمیم. بسیار دشوار و پرچالش است چراکه واحدی است
که در زمان jan خرابی در سیستم فراخوانده شده و پاید با بکارگیری الگوریتم های کارآمد فرایند ترمیم را بسه
انجام برساند.
برای اجرای روال های ترمیم, واحد مدیریت ترمیم با واحد های دیگری از سيستم مديريت يايكاه مانند مدير
حافظه نهان (1۷]8۳8067 ۵06,)) که به اختصار به ]۷[/) موسوم است و واحد زمان بندی اجرا که
اجرای تراکنش های فعال در لحظه خرابی را به صورت از سرگیری و با اجرای دوباره به عهده دارد مرتبط
ارتباط مدير ترمیم با مدیر حافظه نهان در قالب دو درخواست واکشی (۳6:01) یک صفحه از حافظه نهان و
یا تخلیه یک صفحه از حافظه نهان (۳[11510) که همان جایگزینی یک صفحه با صفحه دیگری است معنا می
یابد. بنابراین مدیر ترمیم به منظور شروع به انجام عملیات ترمیم ابتدا در یک فرایند تحلیلی باید تراکنش های
فعال در لحظه بروز خرابی را شناسایی کرده و سپس صفحات تغییر یافته (۳۵65 1(17/7) در حافظه نهان
را که شامل نتایج میانی تراکنش (های) فعال بوده اند و هنوز به دیسک منتقل نشده اند را شناسایی کند.
صفحه 6:
واحد مدیربت ترمیم
بس از انجام تحليل الكوريتم ترميم ین به تصمیم واحد مدیریت ترمیم یکی از دوحالت زیر را اجرا خواهد کرد:
UNDO Joc 30
در صورت تصمیم به اجرای عمل ۰11600 عملیات انجام شده توسط تراکنش (های) تشبیت شده تکسرار می
گردد و در صورت تصمیم به انجام عمل 12010] اثر اجرای ناقص تراکنش (های) نیمه کامل و یا طرد شده
خنثی می گردد. عموما روال ترمیم بدون دخالت کاربر و تنها توسط مدیر ترمیم انجام می گیرد. به منظور
انجام هریک از دو عمل ذکر شده. مدیر ترمیم از فایل ثبت (۳116 [1.06) استفاده می کند.
Non
Volatile
Memory,
Volatile
Memor
4
Include recently
accessed pages 6
صفحه 7:
5 8 یار زر
روش هاى تخليه حافظه نهان
تصميمات مدير ترميم در اجراى روال هاى ترميم بستكى به نحوه تخليه (1*111512) بافر نهان دارد. وقتى
تراكنشى داده اى را بهنكام مى كند نتيجه ى ثبت شده در بافر نهان به دو حالت زیر به پایگاه منتقل می شود:
1۳۳ Deferred Update
(Cesc) (بهنكام سازى با تاخير)
در روش بهنكام سازى با تاخير. صفحات تغيير يافته در حافظه نهان كه نتايج اجراى تراكنش فعال را ذخيره
كرده اند فقط زمانى به بايكاه منتقل مى شوند كه تراكنش تقبيت شده باشد. در روش بهنگام سازى بلافاصله.
صفحات تغيير يافته بيش از تثبيت تراكنش به يايكاه منتقل مى شونذ اما قبل از اين انتقالء ذاده هاى تفيير
يافته در فايل ثبت (©1'11 1.00) نوشته مى شوند تا در صورت بروز خرابىء امكان تشخيص سهل تر تراكنش
هاى فعال و داده هاى تغيير يافته توسط أنها براى روال ترميم وجود داشته باشد.
مزيت روش بهنكام سازى بلافاصله. عدم نياز به حافظه زياد براى بافرهاست. در راهكار تخليه اجبارى
GB bog al 8 Obes (Forcing Approach) تراكنش بايد يس از تثبيت تراكنش بلافاصله
به ديسك منتقل شوند بنابراین, اگر صفحه ای توسط تعدادی تراکنش پی در پی بهنكام شود بايد جندين بار
بر روی دیسک نوشته شود. در روش بهنگام سازی با تاخیر عمدتا از روش تخلیه غیر اجباری استفاده می شود.
صفحه 8:
فايل ثبت
فايل ثبت (1"11©6 06.آ) كه به آن فايل رويدادنكارى (101113231120 :18886121) نيز كفته مى شود بر
روى حافظه ماندكار قرار داده مى شود تا از آسيب مصون باشد. كاه به منظور اطمينان از مصون ماندن اين
فایل. چند نسخه از آن نگهداری می شود.
ساختار هر رکورد در فایل ثبت ممکن است در سیستم های مختلف متفاوت باشد ولی فیلدهای مشترک آن
شامل موارد زیر خواهد بود:
شناسه تراکنش (1110). زمان انجام هر یک از عملیات(111116), نوع عمل هر تراکنش در زمان ذکر شده
(6(۳). شناسه ی داده ای که تراکنش بر روی آن انجام می شود (1221:0)» پیش تصویر که مقدار داده قبل
از بهنگام سازی است (Before Image: BI) يس تصوير که مقدار داده بعد از بهنگام سازی است
«Log Sequence Number: LSN) cs 0,5, Ju, ols “After Image: Al)
اشاره گر به رکورد قبلی تراکنش ۴۳1 :۴0106۲ ۴۳6۷10۱15). اشاره گر به رکورد بعدی تسراکنش
«Next Pointer: NPTR)
0101 DAT ۹
R E
2
4
BEG
1
2 1 1 4 12:0 UP 200 old new
8 3 0
3 Ty 6 8 12:1 BEG 100
4
4 3 2 5 12:2 COM old new
4
صفحه 9:
ثبت با نوشتن پیش رس
ثبت با نوشتن پیش رس (1000100 «Write-Ahead 5« روش متداول در استفاده از فایل ثبت در انجام فرایند
ترمیم است در سیستم هایی مانند 0۳۵616) و یا 5100856 بکار می رود و به دو صورت نوشتن پیش رس در بهنگام
سازی بلافاصله و نوشتن پیش رس در بهنگام سازی با تخیر یکار می رود.
نوشتن پیش رس در بهنگام سازی بلافاصله با این صورت است که پیش تصویر (1۳0806 36]016) قبل از نوشته
نهایی بهنگام سازی (پس تصویر (110206 ۵۵۲6۲)) در پایگاه داده و در بافره در فایل ثبت نوشته می شود.
این نوشته شدن. برای انجام عملیات 11100 لازم است. همچنین رکورد تثبیت و یا طرد تسراکنش نیز در صورت پایان
موفقیت آمیز و یا نیمه کامل تراکنش, در فایل ثبت نوشته می شود.
oot!
رس در بهنگام سازی با تاخیر به این صورت است که فقط پس تصویر (110806 ۵:6۲ و سایر اطلاعسات
لازم قبل از انتقال به پایگاه در فایبل ثبت نوشته می شود. این نوشته شدن. برای انجام عملیات 1600 لازم است.
همچنین رکورد تثبیت در صورت پایان موفقیت آمیز تراکنش, در فایل ثبت نوشته می شود.
فایل ثبت ممکن است فیزیکی یا ثبت مقدار (1.0901۳60 ۷۵1116) بوده و یا منطقی Operation) ctlee a3
1.0010) باشد. مثال های مطرح شده در اسلاید های قبل. نمونه ای از فایل ثبت فیزیکی است. در فایل ثبت منطقی,
اس و ها ذهيره تمى شود بتابراين كوجكتر ار قايل تبت فيزيكى ابت اكرعه يبمايش آن سريع
تر است ولی تفسیر رکوردهای آن برای مدیر ترمیم دشوارتر است و از اين رو کارایی سیستم كند مى شود.
صفحه 10:
زباله روبی فایل ثبت
برای جلوگیری از رشد بیش از حد فایل ثبت باید فضایی که در اختیار رکورد های نالازم است بازپس گرفت
شده و مجددا مورد استفاده قرار گیرد که به این کار زباله روبی فایل ثبت 06۳806 وم
2 ا طلاق مى شود.
اكر <77 ,(1 ,15> يك ركورد در فايل ثبت باشد مدير ترميم به منظور زباله روبى در صورتى اين ركورد را
حذف می کند اگر:
1- تراکنش 1 یک تراکنش طرد شده باشد.
2 براکنش ,11 شده باشد ولی تراکنش دیگری پس از تراکنش ]یک مقدار جدید (۷) برای داده ی
D نوشته باشد.
آخرين يس تصوير (461) و اولين بيش تصوير (11) براى هر صفحه تغيير يافته
4- حذف ركوردهايي كه فقط عمل خواندن انجام داده اند.
صفحه 11:
ایجاد نقطه وارسی
مدير ترميم همانطور که قبلا ذکر شد از فایل ثبت به منظور ترمیم پایگاه استفاده می کند اما با توجه به حجم
فایل ثبت. سوال این است که به منظور انجام عملیات ترمیم: فایل ثبت در یک عملیات پویش وارون تا کجا
بابق بروسي شود يابواين به ستظور کسید رای مسر سل دس وراه سا بر یی
تراکنش هاء نقاط وارسی 016۳00110 2116)) در فایل ثبت ایجاد می شود.
عموما برای ایجاد نقاط وارسی در اکثر سیستم هاء روند اجرای تراکنش ها متوقف می شود اما در بعضی از
سیستم ها LU ole! Oracle sibs وارسی و اجرای تراکنش ها به صورت همروند انجام می گیرد. ایجاد
نقطه وارسی هر چند وقت يكبار به تشخيص مدير ترميم انجام مى كيرد. ايجاد يك نقطه وارسى به اين صورت
است كه سيستم يك ركورد به اسم i] cee! alpen Checkpoint تراكنش هاى فعال در همان لحظه
bls 5 (( CHECKPOINT, L>) ثبت می نویسد.
چندین روش برای ایجاد نقاط وارسی وجود دارد. در یک روش Cache Consistent)
تأطذ22601600)) اجرای تمام تراکتش ها متوقف شده. محتوای بافر شامل صفحات تغيير يافته. تخليه
اجباری شده. رکورد نقطه وارسی در فایل ثبت ایجاد و اجرای تراکنش ها از سر گرفته می شود. در یک روش
دیگر (ا801000ظ0 اصعاعنعطه 201212186)) سيستم منتظر مى ماند كه تراكنش هاى فعال
تثبیت و یا طرد شوند و به تراكنش جديد اجازه شروع نمى دهد و صفحات تغییر یافته را بر روی دیسک می
نویسد.
n
صفحه 12:
رکوردهای فعال در لحظه ی بروز خرابی
با در نظر گرفتن فقط فیلد ۰007 فایل ثبت را می توان به شکل زیسر بررسی
كرد
Crm ort 4 | 1ن | 24 | كه | 5 | 13
13
Time
‘im
Key:
U;: Update record for
transaction Ti Cras
B, Begin record for h
transaction Ti
C,;; Commit record for
transaction Ti
T, and T, , T, were active at the time of the
crash.
CK: Checkpoint record
2 سس
صفحه 13:
روش های ترمیم خرابی سیستمی
روش های ترمیم در خرابی های سیستمی به صورت کلی در دو حالت ترمیم در بهنگام سازی با تساخیر و
ترمیم در بهنگام سازی بلافاصله و برای محیط های تک کاربری و محیط های چند کاربری بررسی می
رت
از آنجا که اساسا الگوریتم های ترمیم بر مبناى دو عمل 600 و 1200 عمل می کنند چهار الگوریتم
ترمیم بر پایه آنها به شرح زیر وجود دارد:
Undo/Redo 7-8 الگوریتم 1
Noundo /Redo (NU-R) الگوریتم 2
Undo / Noredo (U-NR) الگوریتم 3
Noundo /Noredo 017-۳10 الگوریتم 4
در ادامه به بررسی الگوریتم های ذکر شده می پردازیم:
صفحه 14:
تکنیک های ترمیم در بهنگام سازی با تاخیر
از آنجا که در بهنگام سازی با تاخیر تنها در صورتی داده ها به پایگاه منتقل می شود که تسراکنش تشبیت شده باشد پس
ازی به انجام عمل 1200[] نیست و تنها عسل 11600 لازم است. بنابراين الگوریتم ترمیم در این حالت
600 است. بنابراين تراکتش های فعال را نادیده گرفته و تراکنش های تثبیت شده پس از نقطه وارسی را
Redo می نماید. در ادامه این الگوریتم را برای محیط تک کاربری بررسی می کنیم.
تراکنش های و1 و و1 در یک محیط تک کاربری به صورت سریال در اینجا (1 ,:) اجرا می شوند؛ این دو تراکنش بد
صورت زیر هستند و محتویات بخشی از فایل ثبت در باکس سوم از سمت چپ دیده می شود: (مقادیر اولیه: ۸1000
0-0 2000
اگر خرابی پس از دستور (/1۷)6 از تراکنش و
eT, 2372| اسيل a xy
Igy wl oss Commit ۲ 2050
تراکنش را نادیده می گیرد و مقدار 00 Ng 19
<I, BEGIN>
باقی می ماند. اما تراکنش a1 Ty تشبیت
شده بود 116010 می کند پس مقادیر و ظ
به ترتیب 950 و 2050 خواهند بود.
14
صفحه 15:
تکنیک های ترمیم در بهنگام سازی با تاخیر
در بهنگام سازی با تاخیر در محیط چند کاربری بدیهی است که در لحظه بروز خرایی چند تراکنش با هم ممکن است در
حال اجرا باشند. بنابراين براى بررسى اين روش در محیط چند کاربری مانند حالت تک کاربری: ليست تراكنش ها
تثبيت شده يس از آخرين نقطه وارسي و ليست تراكنش هاى فعال در لحظه بروز خرابى بررسى مى تسود. يس از بررسى
قايل ثبت عمليات نوشتن تراكنش هاى تثبيت شده 11800 شده و تراكنش هاى فعال نادیده گرفته می شوند تا در زمان
ديرترى يس از اتمام روال ترمیم. اجرای آنها توسط کاربر و يا سیستم از سرگرفته شود
تراکنش های و1 و و1 چون در لحظه بسروز
خرابى فعال بوده اند ندیه گرفته می
39 تراكنش جون قبل از ايجاد نقطه وارسى
نثييت شدهنيازيه 16060 نداردد
System!
3
صفحه 16:
تکنیک های ترمیم در بهنگام سازی بلافاصله
از آنجا که در بهنگام سازی بلافاصله, داده بهنگام شده بلافاصله و قبل از تثبیت در پایگاه نوشته می شود بنابراین مدير
ترمیم باید تراکنش های به نرسیده را با استفاده از پیش تصویر که در فایل ثبت وجود دارد 111200 کند و عملیات
نوشتن تراکنش های تثبیت شده را با استفاده از پس تصویر 1800 کند. پس در این حالت از الگوریتم / 1800
0 استفاده می شود. در ادامه این الگوریتم را برای محیط تک کاربری بررسی می کنیم.
تراکنش های و1 و 12 در یک محیط تک کاربری به صورت سریال در اینجا (و1 ,ر1) اجرا مى شوند. اين دو تراكنش به
رز بخشی از فایل ثبت در باکس سوم از سبت چم دیده می شوده
1111 ye Mees
<950
T,, W, B, 2000,>
<2050 خواهند بود. ار خرایی پس از دستور B=2000
<T,, COMMIT> | و1 روز کند. تراکنش 3 چون ests SWIC)
<T,, BEGIN> 100 نشده بود 110080 می شود و مقدار
بر ۷۷ C, 700,>
ma)
استقاده إزيس تصوير مقادير 42950و
16
صفحه 17:
تکنیک های ترمیم در بهنگام سازی بلافاصله
در این قسمت این الگوریتم برای محیط چند کاربری بررسی می شود.
در يك محيط چند کاربری اجرای همروند ينج تراکنش به صورت زیر در نظر گرفته می شود.
مدیر ترمیم تراکنش ها را یه صورت زیر
عذیرت بی کندر
1- تراکنش 1 در ترمیم نقشی ندارد.
2- تسراكنش هاى 1 و و1 چون در لحظه
پروز خرابی قعال بوده اند 11100 می
اه 0
AE CWS ۳
As 1
صفحه 18:
سایر الگوریتم های ترمیم خرابی سیستمی
الگوریتم 307600 / 11-00] زمانی مورد استفاده قرار می گیرد که بهنگام سازی بلافاصله بوده و در
فاصله ی بین ایجاد نقطه وارسی و لحظه ی بروز خرابی هیچ تراکنش تثبیت شده ای وجود نداشته باشد. مانند
oS
0
Checkpoint
Sao
تاد
الگوریتم نادر 1٩0۳600 / 011200 لا[ زمانی مورد استفاده قرار می گیرد که نتیجه ی اجرای تمام
تراکنش های تثبیت شده قبل از ایجاد آخرین نقطه ی وارسی به پایگاه منتقل شده باشد و مدل بهنگام سازی
بلافاصله نباشد.
1
صفحه 19:
براى مطالعه بيد
1- Database Systems An Application
Oriented Approach
9 22, سه «جاتعتسمعم Trac TST EA IA
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
سیستم مدیریت پایگاه داده ها (مفاهیم و تکنیک ها).
فصل جهارم. ترميم يايكاه داده ها.
اليف: سيد محمد تقى روحانى رانكوهى.
رات جلوه. مجموعه دانش و فن كا
ترميم در پايگاه داده ها
)(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
Non
Volatile
Memory
Database
Page: Unit of
Transfer
Cache
Volatile
Memor
y
recently
6
Include
accessed pages
روش های تخليه حافظه نهان
تصميمات مدير ترميم در اجرای روال های ترميم بستگی به نح((وه تخلي((ه ( )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
TIM
E
NPT
R
PPT
R
TID
LSN
AI
BI
DAT
A
BEG
12:0
4
2
0
T1
1
12:0
8
4
1
T1
2
new
v.
old
v.
200
UP
8
0
T2
3
100
BEG
12:1
4
5
2
T1
4
new
v.
old
v.
COM
12:2
4
ثبت با نوشتن پيش رس
ثبت با نوشتن پيش رس ( ،)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
B6
C4
U6
U1
Time
Key:
Ui: Update record for
transaction Ti
Bi: Begin record for
transaction Ti
Ci: Commit record for
transaction Ti
Abort
record
for at the time of the
T1 A
and
T
active
i:
3 , T6 were
transaction Ti crash.
CK: Checkpoint record
Cras
h
12
روش های ترميم خرابی سيستمی
روش های ترميم در خرابی های سيستمی به صورت کلی در دو حالت ترميم در بهنگام سازی بEEا تEEاخير و
ترميم در بهنگام سازی بالفاصله و برای محيط های تک کاربری و محيط های چند کاربری بررسی می
شوند.
از آنجا که اساسا الگوريتم های ترميم بر مبنای دو عمل 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اجرا می شوند .اين دو تراکنش به
صورت زير هستند و محتويات بخشی از فايل ثبت در باکس سوم از سمت چپ ديده می شود( :مقادير اوليهA=1000 :
)، B=2000 ، C=700
<>T1, BEGIN
T2
اگر خرابی پس از دس((تور ) W(Cاز ت((راکنش
T1
<>T1, W, A, 950
T2ب((روز کن((د چ((ون هن((وز ت((راکنش T2ب((ه
<T1, W, B,
)R(C
)R(A
Commitنرس((يده اس((ت روال ت((رميم اين
>2050
C:=C-100
A:=A-50
تراکنش را ناديده می گيرد و مقدار C=700
<>T1, COMMIT
)W(C
)W(A
باقی می ماند .ام((ا ت((راکنش T1را ک((ه تث((بيت
<>T2, BEGIN
)R(B
شده بود Redoمی کند پس مقادير Aو B
B:=B+50
<>T2, W, C, 600
به ترتيب 950و 2050خواهند بود.
)W(B
<>T , COMMIT
2
14
تکنيک های ترميم در بهنگام سازی با تاخير
در بهنگام سازی با تاخير در محيط چند کاربری بديهی است که در لحظه بروز خرابی چند تراکنش ب((ا هم ممکن اس((ت در
حال اجرا باشند .بنابراين برای بررسی اين روش در محيط چند کاربری مانند ح((الت ت((ک ک((اربری ،ليس((ت ت((راکنش ه((ای
تثبيت شده پس از آخرين نقطه وارسی و ليست تراکنش های فعال در لحظه بروز خرابی بررس((ی می ش((ود .پس از بررس((ی
فايل ثبت ،عمليات نوشتن تراکنش های تثبيت شده Redoشده و تراکنش های فعال ناديده گرفته می شوند تا در زمان
ديرتری پس از اتمام روال ترميم ،اجرای آنها توسط کاربر و يا سيستم از سرگرفته شود
-1تراکنش های T4و T5چون در لحظه ب((روز
خ((رابی فع((ال ب((وده ان((د نادي((ده گرفت((ه می
شوند.
-2تراکنش های T2و T3چون قب((ل از ب((روز
خرابی تثبيت شده اند بايد Redoشوند.
-3تراکنش T1چون قبل از ايجاد نقطه وارسی
تثبيت شده نياز به Redoندارد .
15
T1
T2
T3
T4
T5
System
Failure
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
می شود در حاليکه ت((راکنش T1 ، Redoش((ده و ب((ا
اس(((((تفاده از پس تص(((((وير مق(((((ادير A=950و
B=2050می شود.
16
<>T1, BEGIN
<T1, W, A, 1000,
>950
<T1, W, B, 2000,
>2050
<>T1, COMMIT
<>T2, BEGIN
<T2, W, C, 700,
>600
<>T2, COMMIT
T2
)R(C
C:=C-100
)W(C
T1
)R(A
A:=A-50
)W(A
)R(B
B:=B+50
)W(B
تکنيک های ترميم در بهنگام سازی بالفاصله
در اين قسمت اين الگوريتم برای محيط چند کاربری بررسی می شود.
در يک محيط چند کاربری اجرای همروند پنج تراکنش به صورت زير در نظر گرفته می شود.
م((دير ت((رميم ت((راکنش ه((ا را ب((ه ص((ورت زي((ر
مديريت می کند:
-1تراکنش T1در ترميم نقشی ندارد.
-2ت((راکنش ه((ای T3و T5چ((ون در لحظ((ه
بروز خرابی قع((ال ب((وده ان((د Undoمی
شوند.
-3تراکنش های T2و T4چون قب((ل از ب((روز
خرابی تثبيت شده اند Redoمی شوند.
17
T1
T2
T3
T4
T5
System
Failure
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