تراکنش تو در تو
Download
Report
Transcript تراکنش تو در تو
درس پایگاه داده پیشرفته
تراکنش
استاد :دکتر باقری فرد
اعضای گروه:
رضا بسطام ،محمدامین احمدی ،سحرعزیزی ،شهال موسوی
کارشناسی ارشد نرم افزار -نیمسال اول 93
فصل اول :تراکنش
-1تعریف تراکنش) T ( :
• واحد منطقی پردارزش داده ها که شامل چند عمل دستیابی به داده به منظور درج –حذف-تغییر
–بازیابی است.
•واحد اجرای برنامه ای که به داده ها دسترس ی دارد و میتواند موجب تغییر داده ها در پایگاه شود.
•میتواند یک پرس و جو باشد یا عمل خواندن و نوشتن باشد و شامل یک یا چند دستور باشد
•یا در بیان غیر رسمی دستیابی یک برنامه به داده های مشترک در پایگاه داده
•واحد سازگار و قابل اطمینان پردازش مشخص در پایگاه داده به گونه ای که نسخه جدیدی از
پایگاه داده بوجود اید
•نتیجه :با توجه به تعاریف باال میتوان گفت تراکنش یک پروسه است که توسط یک برنامه اجرا
شده باعث ایجاد تغییر یا انجام پرس و جو در پایگاه داده میشود با انجام درست واحد منطقی کار،
پایگاه از وضعیت سازگار قبلی به وضعیت سازگار بعدی می رسد و نسخه جدیدی از پایگاه داده
ساخته میشود.
3
-2دارای خواص ACIDاست:
•تجزیه ناپذیری :atomicityیا کل تراکنش اجرا می شود یا اصال اجرا نمی شود .اصال اجرا نمی
شود به معنای عدم اقدام سیستم در اجرای تراکنش نیست بلکه در صورت بروز مشکل باعث
توقف یا abortسیستم می شود و اگر بخش ی از تراکنش اجرا شده بود مثل این است که اجرا
نشده است.
•سازگاری : consistency:یعنی رعایت تمام قواعد و محدودیت های جامعیتی که شامل:
آغاز تراکنش = حرکت از وضعیت سازگار فعلی
پایان تراکنش= رسیدن به وضعیت سازگار بعدی یا commit
اجرای دستور = commitتضمین سازگار بودن نتیجه اجرای تراکنش
اجرای دستور =abortاجرای یک تراکنش compensatorیا جبرانگر برای خنثی شدن عمل
تراکنش abortشده
در کل سازگاری در حین اجرای تراکنش بی معنی و بعد از اجرا تضمینی است.
•انزوا :Isolationیعنی اجرای هر تراکنش در اسلوب تک کاربری
اجرای همروند چند تراکنش در محیط ایزوله انجام می شود و تا رسیدن نتیجه یک تراکنش به مرحله commit
نتیجه اجرای آن مخفی باقی می ماند.
خاصیت ایزوله سازی برابر است با خاصیت سازگاری
عدم وجود خاصیت ایزوله سازی = خواندن داده های ناصحیح و ناسازگاری نتایج
•پایایی Durability:
پایایی یعنی ماندگاری اثر اجرای یک تراکنش commitشده حتی اگر پس از اجرا سیستم دچار نقص شود .برای
ایجاد خاصیت پایایی از ترمیم یا recoveryاستفاده می شود.
نتیجه :تضمین جامعیت در گرو رعایت خواص ACIDاست.
-4تشخیص یک تراکنش:
برای تشخیص یک تراکنش از دستورات DMLخاص ی استفاده می شود(.کران تراکنش)
Begin transaction
-----------Commit
Or rollback
• حاالت یک تراکنش:
Commit
تثبیت شده
ثبت ناقص
پایان
دچار نقص
طرد شده
فعال
شروع
انواع حاالت یک تراکنش
-1فعال یا :Actionحالتی که در آن تراکنش در حال اجراست.
abort -2یا طرد شده :حالتی که در آن تراکنش دیگر نمی تواند فعال باشد و از محیط اجرا خارج می شود.
-3حالت finishedیا تمام شده :حالتی که تراکنش تمام عملیاتش را انجام داده و سابقه اجرایش در فایل ثبت
درج شده ولی هنوز بهنگام سازی هایش در پایگاه وارد نشده است.
-4حالت Commitedیا تثبیت شده :حالتی که تمام تغییرات مورد نظر تراکنش انجام شده و در پایگاه داده هم
وارد شده است.
نکته :اگر تراکنش ی Commitشود اثر آن تراکنش مانا باقی می ماند.
بیان رسمی یا Formalتراکنش
برای اثبات صحت الگوریتمهای مدیریت تراکنش ها تراکنش را با نمادهای زیر بیان میکنند
:Dداده و : Rخواندن و :Wنوشتن و abort: Aو commit : C
می توان یک تراکنش را به کمک عمل های آن نشان داد .مثال به جای
Begin Transaction
)R(D1
)R(D2
D1=D1+D2
)W(D1
Commit
می توان بصورت زیر نشان داد
}T={R(D1) , R(D2) , W(D1) , C
تنها عمل های نوشتن ،خواندن Abort ، Commit ،در نظر گرفته می شوند.
مدل های تراکنش
بر اساس چندین ضابطه می توان یک تراکنش را رده بندی نمود:
ضابطه اول :مدت زمان اجرای یک تراکنش .با این ضابطه دو دسته تراکنش داریم:
•
تراکنش کوتاه یا Online
•
تراکنش طوالنی یا Batch
تراکنش عمومی :تراکنش ی که در آن دستورات خواندن /نوشتن از ترتیب خاص ی پیروی نمی کند
مدل عمومی:
} 1- T={ R(D1) , R(D2), W(D2) , R(D3) , W(D1) , W(D2) , W(D4) , C
تراکنش دو مرحله ای :کلیه عملیات خواندن قبل از نوشتن اجرا می شود.
پمدل دو مرحله ای:
}2- T={ R(D1) , R(D2) , R(D3) , W(D1) , W(D3) , W(D2) , W(D4) , C
تراکنش محدود شده :هر داده قبل از بهنگام سازی ابتدا خوانده می شود .به این نوع نوشتن ،نوشتن مقید یا Constrained
گفته می شود .
مدل محدود شده:
}3- T={ R(D1) , R(D2) , W(D2) , R(D3) , W(D1) , W(D3) , R(D4) , W(D4) , C
مدل دو مرحله ای محدود شده:
}4- T={ R(D1) , R(D2) , R(D3) , R(D4) , W(D1) , W(D3) , W(D2) , W(D4) , C
نتیجه :یک تراکنش می تواند هم دو مرحله ای و هم محدود شده باشد.
تراکنش عمل :همان تراکنش محدود شده است با یک شرط اضافی ،هر عمل خواندن و نوشتن داده باید بی
فاصله و بدنبال هم بیایند.
مدل عمل:
}5- T={ R(D1) , W(D1) , R(D2) , W(D2) , R(D3) , W(D3) , R(D4) , W(D4) , C
ضابطه سوم :تعداد سطوح
•
تراکنش مسطح
•
تراکنش تو در تو Nested Transaction
تراکنش مسطح :یک نقطه شروع و یک نقطه پایان دارد و تمام عمل ها بین این دو نقطه است .مدیریت با مدیر
تراکنش و مناسب برای تراکنش های پیچیده و بهنگام سازی انبوه است.
:شکل کلی تراکنش مسطح
Begin Transaction نقطه شروع
Action 1
Action 2
.
Action n
End Transaction
نقطه پایان
تراکنش تو در تو :نوعی تراکنش تشکیل شده از چندین زیرتراکنش و مناسب برای سیستم های توزیع شده .اجرای
زیرتراکنش ها به صورت همروند
تراکنش اصلی= درخت یا سلسله مراتبی از تراکنش ها با چندین نقطه آغاز و پایان
BEGIN Transactin T1
.
BEGIN Transaction T2
.
BEGIN transaction T3
.
t1
t3
t2
END Transaction T3
BEGIN Transaction T4
.
t4
END Transaction T4
.
END Transaction T2
.
;END Transaction T1
دو نوع تراکنش تو در تو:
تراکنش بسته:
•
•
اجرای زیر تراکنش بعد از تراکنش بیرونی
Commitشدن زیر تراکنش وابسته به Commitشدن تراکنش بیرونی
•
رعایت خاصیت تجزیه ناپذیری در بیرونی ترین تراکنش (قانون همه یا هیچ)
•
خاصیت جدایی برای زیر تراکنش
تراکنش باز:
•
در صورت Commitنشدن تراکنش بیرونی ،نتیجه زیر تراکنش در اختیار سایر تراکنش ها و
حتی تراکنش پدر قرار می گیرد.
•
عدم وجود تجزیه ناپذیری تراکنش بیرونی تر
دو مشکل تراکنش باز:
طرد تسلسلی :در صورت Abortشدن یک زیر تراکنش ،ممکن است زیر تراکنش های پایان یافته هم
•
Abortشوند.
•
عدم توالی پذیری طرح اجرا ( بعدا توضیح داده می شود)
قواعد اجرای تراکنش تو در تو
-1از پایین به باال اجرا می شوند و Commitمی گردند .در مثال قبل T3و T4قبل از پدرشان T2و T2قبل
از پدرش T1تثبیت می شوند.
تراکنش سطح باالتر بی تاثیر
1
نحوه ترمیم تراکنش پدر:
اگر تراکنش Abort
2
کلیه تراکنش های زیر درخت Abort
3
• زیر تراکنش Abortشده را دوباره فعال کند
• نقص پیش آمده در زیر تراکنش را نادیده بگیرد.
• اجرای یک زیر تراکنش احتیاطی .Contigencyیعنی اگر ثبت نام در یک درس ممکن نبود درس دیگری ثبت
نماید.
• خود تراکنش پدر Abortشود.
-2نتیجه Commitشده یک زیر تراکنش تنها توسط پدر بالفصلش قابل دید است .در مثال قبل اگر ، T3
Commitشودتنها T2از نتیجه مطلع می شود.
Commit -3شدن یک تراکنش مشروط به Commitشدن پدرانش می باشد.
تراکنش چند سطحی:
• تراکنش تو در توی تعمیم یافته است.
• تراکنش تو در توی بازی که زیر تراکنش های آن به صورت درخت متعادل باشند.
تراکنش توزیع شده:
نوعی از تراکنش مسطح که در محیط توزیع شده اجرا شود .بسته به اینکه داده مورد استفاده در چه سایتی قرار
داشته باشد در همان سایت اجرا می شود.
تفاوت تراکنش توزیع شده و تراکنش تو در تو:
در تراکنش تو در تو وظایف بین زیر تراکنش ها توزیع شده است و در تراکنش توزیع شده به نحوه توزیع داده بستگی
دارد.
تراکنش بسیار بلند:
•
نوعی خاص از تراکنش تو در تو و باز است
•
دارای دو سطح تو در تویی است
• مجموعه ای از اقدامات که با یکدیگر یک تراکنش طوالنی مدت را می سازند
• مبتنی بر مفهوم تراکنش جبرانگر Compensator
• یک واحد کنترلی است و به کمک تراکنش جبرانگر ،به صورت یک کل تجزیه نشدنی در آمده
نقش تراکنش جبرانگر:
هر زیر تراکنش یک تراکنش جبرانگر دارد که:
•
اثر تراکنش Abortشده را خنثی می کند
•
تغییری در وضعیت پایگاه نسبت به لحظه قبل از شروع ایجاد نمی کند.
• تضمینی برای اجرای کامل هر تراکنش است چراکه اگر تراکنش ی ناقص اجرا شود بالفاصله تراکنش جبرانگر
اجرا می شود.
تراکنش بسیار بلند شکل کاملتری از تراکنش زنجیره ای است.
کارروند ((Workflow
از ترکیب مفهوم تراکنش تودرتو و خاصیت باز بودن آن ،مدل پیچیده تری از تراکنش به دست می آید که به آن
کاروند می گویند.
مجموعه ای از وظایف ( )Taskکه برای انجام یک فعالیت در محیط های کاری باید اجرا شود تا به درخواست
کاربر (که خود می تواند شامل چندین درخواست باشد) پاسخ داده شود.
کاروند فعالیتی است که شامل چندین وظیفه با اجرای هماهنگ شده که توسط چند موجودیت (ش ی) پردازشگر
انجام می شود.
انواع کارروند :
-1کارروند انسانی :انسان نقش اصلی را در انجام وظایف دارد و البته از امکانات سیستمی هم استفاده میشود ولی
مسئولیت سازگاری و هماهنگی عملیات انسان است.
-2کارروند سیستمی :معموال حجم باالیی از محاسبات و نیز وظایف ویژه دارد که توسط کامپیوتر انجام میشود و
نقش سیستم در کنترل همروندی ،ترمیم و اجرای وظایف اساس ی است.
-3کارروند تراکنش ی :نوعی کاروند است که بین دو کارروند دیگر است و خصوصیاتی از هر دو نوع را دارد و شامل
اجرای هماهنگ شده چندین وظیفه است که :
-1با دخالت انسان صورت میگیرد
-2دستیابی به سیستم های معموال همگون ،خود مختار و توزیع شده را الزم دارد
-3خواص تراکنش را برای هر یک از وظایف یا تمامی کارروند تامین میکند
شکل کلی یک ترانش بسیار بلند:
}){(T1,C1),(T2,C2),…,(Tn,Cn
که به دو صورت زیر اجرا می شوند:
{T1,T2,…,Tn} -1اگر همه تراکنش ها اجرا شوند.
{T1, T2 , …., Ti,Ci-1,…,C1)} -2اگر Ti-1,…,T1اجرا و Tiطرد شود.
تکنیک نقطه نگهداشت Save Point
Atomicityکارایی سیستم را کاهش می دهد و زمان اجرای یک تراکنش را طوالنی می کند برای رفع مشکل:
-1استفاده از تراکنش تو در تو
-2ایجاد نقطه نگهداشت
برای ایجاد نقطه نگهداشت:
اجرای تابع Save Work Function
ثبت وضعیت جاری
ارسال یک عدد به برنامه
در صورت درخواست Rollback Workو دادن
عدد دریافتی
برگشت به نقطه نگهداشت مورد نظر ( آخرین و یا هر
نقطه نگهداشت پیشین)
عمل تجزیه نشدنی:
آنچه بین دو نقطه نگهداشت اجرا می شود.
تفاوت بین Rollback Transactionو : Rollback Work
در حالت Rollback Transactionتراکنش اساسا از محیط اجرا خارج می شود ولی برای Rollback
Workتراکنش در حالت فعال است و تنها به یک نقطه نگهداشت پیشین خود برمی گردد.
تثبیت
نقطه نگهداشت ()2
نقطه نگهداشت ()3
نقطه نگداشت ()1
شروع تراکنش
واگرد ()2
عملیات واگرد می تواند جزیی یا سراسری باشد.
طرد
ایجاد نقطه نگهداشت امکانی برای شبیه سازی تراکنش تو در تو است .یعنی هر زیر تراکنش از هر سطحی آغاز شود
نقطه نگهداشت هم ایجاد می شود.
در بحث ترمیم ،نقطه نگهدا شت از تراکنش تو در تو منعطف تر است.
تراکنش زنجیره ای
•مجموعه ای از تراکنش های T1,T2, …,Tnکه پشت سر هم اجرا شوند.
• Commitشدن Tiو شروع Ti+1یک عمل تجزیه نشدنی است.
•هیچ تراکنش دیگر نمی تواند داده ای که Tiبه Ti+1منتقل می کند را ببیند.
•اگر Tiتثبیت شد و نقص ی در سیستم پیش آمد Tiدیگر Rollbackنمی شود و در صورت لزوم یا از سرگیری از
آخری نقطه تثبیت انجام میشود.
تثبیت
T4
T3
تثبیت
واگرد
طرد
•کل تراکنش به یک تراکنش واحد تلقی می شود.
تثبیت
T2
تثبیت
T1
شروع
تراکنش
شباهت تراکنش زنجیره ای با نقطه نگهداشت:
عمل Rollbackبه آخرین نقطه Commitبر می گردد ( نقطه نگهداشت)
تفاوت تراکنش زنجیره ای با نقطه نگهداشت:
نقطه نگهداشت قفل از تراکنش بر نمی دارد ولی در تراکنش زنجیره ای به محض رسیدن به نقطه Commitقفل
های آن تراکنش برداشته می شود.
زیر سیستم مدیریت تراکنش:
یکی از واحدهای مهم در DBMSاست که دارای زیر واحدهای زیر است:
• مدیر تراکنش :هماهنگ کننده تراکنش های برنامه کاربردی است.
•زمانبند :ایجاد بیشترین همروندی در تراکنش .اگر همروندی با ایجاد قفل انجام شود به آن مدیر قفل گویند.
•مدیر ترمیم :مسئول ترمیم پایگاه داده است.
•مدیر بافر :مسئول انتقال داده به دیسک و حافظه
خسته نباشید
منابع
سیستم مدیریت پایگاه داده نوشته محمد تقی رانکوهی فصل اول تراکنش