SlideShare a Scribd company logo
1 of 76
Download to read offline
‫آموخت‬ ‫فکرت‬ ‫را‬ ‫جان‬ ‫آنکه‬ ‫بنام‬
1
‫پيشرفته‬‫داده‬‫پايگاه‬
‫همروندی‬ ‫و‬ ‫تراکنش‬
transaction & Concurrency
‫مدرس‬:‫عنایتی‬ ‫دکتررسول‬‫فر‬
‫دانشجو‬:‫اسمعیل‬ ‫یوسف‬‫پور‬
October 2017
Advanced Database
‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
2
‫تراکنش‬‫ها‬
(Transactions)
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
3
‫سیستم‬‫مدیریت‬‫بانک‬‫اطالعات‬DBMS‫داده‬‫ها‬‫را‬‫درون‬‫حصاری‬‫محکم‬‫قرارمی‬،‫دهد‬
‫برای‬‫اینکه‬‫عملیاتی‬‫روی‬‫آن‬‫صورت‬‫گیردباید‬‫چهار‬‫کنترل‬‫معروف‬‫به‬ACID (
Atomicity , Consistency , Isolation , Durability)‫روی‬‫آن‬‫کنترل‬
‫شود‬‫و‬‫در‬‫صورت‬‫تامین‬‫نشدن‬‫این‬‫شروط‬‫عملیات‬‫با‬‫شکست‬‫روبرو‬‫خواهد‬‫شد‬.
‫تراکنش‬:‫م‬‫جموعه‬‫ای‬‫ازعملگرهای‬‫بانک‬‫اطالعات‬‫می‬‫باشد‬‫که‬‫ازدید‬‫کاربر‬‫یک‬‫واحد‬‫منطقی‬‫کار‬‫ر‬‫ا‬
‫تشکیل‬‫می‬‫دهند‬،‫به‬‫عبارت‬‫دیگر‬‫بر‬‫نامه‬‫ای‬‫که‬‫به‬‫داده‬‫های‬‫ذخیره‬‫شده‬‫دستیابی‬‫دارد‬‫وا‬‫مک‬‫ا‬‫ن‬‫تغی‬‫یر‬‫آنها‬‫را‬
‫دارد‬.‫تراکنش‬‫عبارت‬‫است‬‫از‬‫عمل‬‫های‬‫مرتبط‬‫به‬‫یکدیگر‬‫که‬‫اجرای‬‫آنها‬‫تغییری‬‫در‬‫پایگاه‬‫داده‬‫ها‬‫ای‬‫جاد‬‫می‬
‫کند‬‫و‬‫دارای‬‫خواص‬ACID‫می‬‫باشد‬.
‫تراکنش‬‫بانک‬‫اطالعات‬‫را‬‫از‬‫یک‬‫حالت‬‫درست‬‫به‬‫حالت‬‫درست‬‫دیگر‬‫انتقال‬‫می‬‫دهد‬.
‫تراکنش‬‫عبارت‬‫است‬‫از‬‫واحد‬‫منطقی‬‫کار‬‫در‬‫پایگاه‬‫داده‬‫ها‬‫این‬‫واحد‬‫لزوما‬‫یک‬‫عمل‬‫ساده‬(single action)
‫نیست‬‫بلکه‬‫می‬‫تواند‬‫دنباله‬‫ای‬‫از‬‫عمل‬‫های‬‫ساده‬‫باشد؛اما‬‫انجام‬‫درست‬‫این‬‫واحد‬‫منطقی‬‫کار‬‫سبب‬‫م‬‫ی‬‫شود‬
‫تا‬‫پایگاه‬‫داده‬‫ها‬‫از‬‫یک‬‫حالت‬‫سازگار‬‫به‬‫حالت‬‫سازگار‬‫دیگر‬‫درآید‬.
‫تعاريف‬
‫تراکنش‬(Transaction)
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
1
2
3
3
4
‫پيشرفته‬‫داده‬‫پايگاه‬
‫خواص‬ACID‫تراکنش‬
‫خواص‬ACID‫اکنش‬‫ر‬‫ت‬‫عبارت‬‫انداز‬:
Atomicity
(‫ناپذيری‬ ‫تجزيه‬)
Consistency
(‫سازگاری‬)
Isolation
(‫جدايي‬)
Durability
(‫ماندگاری‬)
‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
‫يک‬‫تراکنش‬‫تجزيه‬‫ناپذير‬‫است‬‫خصوصيت‬‫تجزيه‬‫ناپذيری‬‫به‬‫اين‬‫اصل‬‫دالل‬‫ت‬‫داردکه‬
‫وضعيت‬‫ميانه‬‫درسيستم‬‫بي‬‫معني‬‫است‬‫يعني‬‫يا‬‫کل‬‫دستورات‬‫تراکنش‬‫انجام‬‫م‬‫ي‬‫شود‬
‫و‬‫يا‬‫هيچ‬‫کدام‬‫انجام‬‫نمي‬‫شود‬(‫اصل‬‫يا‬‫همه‬‫يا‬‫هيچ‬)
‫پايگاه‬‫داده‬‫پس‬‫از‬‫اجرای‬‫تراکنش‬‫بايد‬‫درحالت‬‫سازگار‬(Consistent)‫باشدوتمام‬
‫قواعد‬‫و‬‫محدوديت‬‫های‬‫جامعيتي‬(Integrity Constrains)‫در‬‫آن‬‫رعايت‬‫شده‬‫باشد‬.
‫تراکنش‬‫نبايد‬‫قوانين‬‫جامعيت‬‫داده‬)Data Integrity(‫را‬‫از‬‫بين‬‫ببرد‬.(‫دقت‬،،‫صحت‬
‫اعتبار‬)
‫اين‬‫خصوصيت‬‫داللت‬‫بر‬‫استقالل‬‫کامل‬‫تراکنش‬‫ها‬‫از‬‫يکديگر‬‫دارد‬‫حتي‬‫اگر‬‫چ‬‫ند‬
‫تراکنش‬‫بطور‬‫همروند‬(Concurrent)‫اجرا‬‫شوند‬.‫بنابراين‬‫تا‬‫زماني‬‫که‬‫يک‬‫تراکنش‬‫ب‬‫ه‬
‫سرانجام‬‫نرسيده‬‫است‬‫وضعيت‬‫داخلي‬‫و‬‫مياني‬‫آن‬(Intermediate State)‫برای‬
‫تراکنش‬‫های‬‫ديگر‬‫مخفي‬‫باقي‬‫خواهد‬‫ماند‬.
‫سيستم‬‫بايد‬‫اطمينان‬‫حاصل‬‫کند‬‫که‬‫زماني‬‫که‬‫يک‬‫تراکنش‬‫با‬‫موفقيت‬‫به‬‫ا‬‫نتها‬‫رسيده‬
‫و‬‫تثبيت‬‫شده‬‫است‬‫تاثير‬‫عمل‬‫های‬‫آن‬‫در‬‫سيستم‬‫پايگاه‬‫داده‬‫باقي‬‫مي‬‫ماند‬(‫حتي‬‫اگر‬
‫به‬‫هر‬‫دليلي‬‫پس‬‫از‬commit‫ويا‬rollback‫سيستم‬fail‫شود‬‫بايستي‬‫از‬‫طريق‬
recovery management‫داده‬‫بازيابي‬‫و‬‫به‬‫حالت‬‫سازگار‬‫برسد‬.
5
 begin T1
 read(A);
 A:=A-50;
 write (A);
 read(B);
 B:=B+50;
 write(B);
 end T1
‫به‬‫عنوان‬‫مثال‬T1‫یک‬‫تراکنش‬‫می‬‫باشد‬‫که‬‫در‬‫آن‬
‫پایگاه‬‫داده‬‫مقدار‬A,B‫را‬‫به‬‫روز‬‫رسانی‬‫می‬‫کند‬
‫پيشرفته‬‫داده‬‫پايگاه‬
‫اگر‬‫تراکنش‬‫به‬‫طور‬‫موفقیت‬‫آمیز‬‫خاتمه‬‫یافت‬‫ط‬‫بق‬
‫خاصیت‬‫پایایی‬‫اثر‬‫کارهای‬‫آن‬‫تراکنش‬‫روی‬‫بانک‬
‫اطالعاتی‬‫دایمی‬‫و‬‫پایدار‬‫می‬‫گردد‬‫و‬‫اگر‬‫به‬‫هر‬‫دلیل‬‫ی‬
‫برخی‬‫از‬‫دستورات‬‫اجرا‬‫نشود‬‫اثر‬‫سایر‬‫دستورات‬‫اجر‬‫ا‬
‫شده‬‫خنثی‬‫می‬‫شود‬
‫تراکنش‬(Transaction)
‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
6
‫تراکنش‬ ‫رسمي‬ ‫بيان‬
Oij ε {R, W}
‫در‬‫تراکنش‬‫مفروض‬Ti،‫عمل‬Oij(D)‫نشان‬‫دهنده‬‫ی‬‫عمل‬Oj‫از‬‫تراکنش‬Ti‫روی‬‫داده‬‫ذخیره‬‫شده‬‫ی‬D
‫در‬‫پایگاه‬‫داده‬‫است‬.‫با‬‫فرض‬‫در‬‫نظر‬‫گرفتن‬‫عمل‬‫های‬‫تراکنش‬Ti‫به‬‫خواندن‬‫و‬‫نوشتن‬‫و‬‫صرف‬‫نظر‬‫از‬
‫عملیات‬‫پردازشی‬‫خواهیم‬‫داشت‬:
OSi = {Oij : j>=0}
‫حال‬‫اگر‬OSi‫مجموعه‬‫ی‬‫همه‬‫ی‬‫عمل‬‫های‬‫تراکنش‬Ti‫باشد‬
‫خواهیم‬‫داشت‬:
Ni ε {A, C}
(A: Abort, C: Commit)
‫اگر‬Ni‫نشان‬‫دهنده‬‫ی‬‫وضع‬‫پایان‬‫تراکنش‬Ti
‫باشد‬‫خواهیم‬‫داشت‬:
‫برای‬‫سادگی‬‫نمایش‬‫رسمی‬،‫تراکنش‬‫گاه‬‫تراکنش‬‫را‬‫فقط‬‫با‬‫مجموعه‬‫ی‬‫عمل‬‫هایش‬‫نمایش‬‫می‬‫دهند‬:
Ti = {R(D1), R(D2), W(D1), C}
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
7
‫زمانی‬‫که‬‫یک‬‫تراکنش‬‫با‬‫خاتمه‬‫ی‬‫غیر‬‫عادی‬(Abort)‫مواجه‬‫می‬‫شود‬‫سیستم‬‫پایگاه‬‫داده‬
‫باید‬‫اطمینان‬‫حاصل‬‫کند‬‫که‬‫هر‬‫تغییری‬‫که‬‫تراکنش‬‫مزبور‬‫در‬‫پایگاه‬‫ایجاد‬‫کرده‬‫بو‬‫د‬(‫عملیاتی‬
‫مانند‬‫نوشتن‬‫و‬‫بهنگام‬‫سازی‬)‫خنثی‬‫شده‬(Undo)‫و‬‫یا‬‫واگردانده‬‫شود‬(ROLLBACK)
‫سیستم‬‫پردازش‬‫تراکنش‬‫با‬‫مکانیزم‬‫های‬‫پیچیده‬‫ای‬‫برای‬‫این‬‫منظور‬‫سروکار‬‫دارد‬.‫ی‬‫ک‬
‫تراکنش‬‫یا‬‫تثبیت‬(COMMIT)‫می‬‫شود‬‫و‬‫کامل‬‫می‬‫گردد‬‫و‬‫یا‬‫طرد‬‫و‬‫دچار‬‫خاتمه‬‫غیر‬‫عادی‬
(Abort)‫می‬‫گردد‬.
‫خصوصیت‬‫تجزیه‬‫ناپذیری‬(‫يا‬‫همه‬‫يا‬‫هيچ‬)‫به‬‫این‬‫اصل‬‫داللت‬‫دارد‬‫که‬‫وضعیت‬‫میان‬‫ه‬‫در‬
‫سیستم‬‫بی‬‫معنی‬‫است‬‫به‬‫این‬‫مفهوم‬‫که‬‫در‬‫یک‬‫سیستم‬‫ثبت‬‫نام‬،‫دانشجویان‬‫یک‬‫دانشجو‬‫برای‬
‫یک‬‫درس‬‫یا‬‫ثبت‬‫نام‬‫کرده‬‫است‬‫و‬‫یا‬‫ثبت‬‫نام‬‫نکرده‬‫است‬.‫در‬‫این‬،‫حالت‬‫ثبت‬‫نام‬‫نیم‬‫ه‬‫کامل‬
(Partial Registration)‫بی‬‫معنی‬‫است‬‫و‬‫پایگاه‬‫را‬‫در‬‫وضعیت‬‫ناسازگار‬(State
Inconsistent)‫قرار‬‫می‬‫دهد‬.
‫ناپذيری‬ ‫تجزيه‬(Atomicity)
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
8
‫سازگاری‬(Consistency)
‫پایگاه‬‫داده‬‫زمانی‬‫در‬‫حالت‬‫سازگار‬(Consistent)‫به‬‫سر‬‫می‬‫برد‬‫که‬‫تمام‬
‫قواعد‬‫و‬‫محدودیت‬‫های‬‫جامعیتی‬(Integrity Constrains)‫در‬‫آن‬‫رعایت‬
‫شده‬‫باشد‬.‫از‬‫این‬‫رو‬‫اجرای‬‫کامل‬‫یک‬‫تراکنش‬‫و‬‫تثبیت‬‫آن‬‫باید‬‫منجر‬‫ب‬‫ه‬
‫نتیجه‬‫ای‬‫درست‬‫و‬‫سازگار‬‫شود‬‫و‬‫پایگاه‬‫را‬‫از‬‫یک‬‫وضعیت‬‫سازگار‬‫به‬‫ی‬‫ک‬
‫وضعیت‬‫سازگار‬‫دیگر‬‫ببرد‬.‫قوانین‬‫جامعیت‬‫داده‬Data Integrity‫را‬‫حفظ‬
‫کرده‬‫باشد‬.(‫دقت‬،،‫صحت‬‫اعتبار‬)
‫بنابراين‬‫پايگاه‬‫داده‬‫درست‬‫پس‬‫از‬‫اجراشدن‬‫يک‬‫تراکنش‬(‫قطعي‬‫شدن‬‫و‬‫ت‬‫ثبيت‬
‫تراکنش‬‫و‬‫اجرای‬‫دستور‬Commit)‫بايد‬‫در‬‫حالت‬‫سازگار‬‫قرار‬‫داشته‬‫باشد‬.‫از‬‫اين‬
‫رو‬‫اجرای‬‫دستور‬Commit‫توسط‬‫تراکنش‬‫به‬‫معنای‬‫سازگار‬‫بودن‬‫نتيجه‬‫حاص‬‫ل‬‫از‬
‫اجرای‬‫آن‬‫است‬.
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
9
‫جدايي‬(Isolation)
‫اين‬‫خصوصيت‬‫داللت‬‫بر‬‫استقالل‬‫کامل‬‫تراکنش‬‫ها‬‫از‬‫يکديگر‬‫دارد‬‫حتي‬‫اگر‬‫چند‬‫تراکنش‬‫بطور‬
‫همروند‬(Concurrent)‫اجرا‬‫شوند‬.‫بنابراين‬‫تا‬‫زماني‬‫که‬‫يک‬‫تراکنش‬‫به‬‫مرحله‬‫ی‬‫تثبيت‬
(Commit)‫نرسيده‬‫باشد‬‫وضعيت‬‫داخلي‬‫و‬‫مياني‬‫آن‬(Intermediate State)‫برای‬‫تراکنش‬‫های‬
‫ديگر‬‫مخفي‬‫باقي‬‫خواهد‬‫ماند‬.
‫بنا‬‫براين‬‫اصل‬‫حتي‬‫اگر‬‫تراکنش‬‫ها‬‫به‬‫صورت‬‫همروند‬‫اجرا‬‫شوند‬‫تاثير‬‫آنها‬‫بر‬‫روی‬‫سيست‬‫م‬‫مانند‬
‫اين‬‫خواهد‬‫بود‬‫که‬‫تراکنش‬‫ها‬‫به‬‫صورت‬‫سريال‬‫اجرا‬‫شده‬‫باشند‬.
‫معموال‬‫اين‬‫خصوصيت‬‫با‬‫وادار‬‫کردن‬‫تراکنش‬‫ها‬‫به‬‫اخذ‬‫قفل‬(Lock Obtaining)‫بر‬‫روی‬‫آيتم‬‫های‬
‫پايگاه‬‫داده‬‫محقق‬‫مي‬‫شود‬.‫بنابراين‬‫تا‬‫زمان‬‫رها‬‫کردن‬‫قفل‬‫توسط‬‫تراکنش‬‫دارنده‬،‫قفل‬‫ت‬‫راکنش‬
‫های‬‫ديگر‬‫نمي‬‫توانند‬‫به‬‫آيتم‬‫قفل‬‫شده‬‫دسترسي‬‫داشته‬‫باشند‬.‫بديهي‬‫است‬‫کارايي‬‫س‬‫يستم‬‫در‬
‫صورتي‬‫که‬‫يک‬‫آيتم‬‫به‬‫مدت‬‫طوالني‬‫توسط‬‫يک‬‫تراکنش‬‫قفل‬‫شود‬‫کاهش‬‫مي‬‫يابد‬.
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
10
‫ماندگاری‬(Durability)
‫سيستم‬‫بايد‬‫اطمينان‬‫حاصل‬‫کند‬‫که‬‫زماني‬‫که‬‫يک‬‫تراکنش‬‫با‬‫موفقيت‬‫به‬‫انتها‬‫رسيد‬‫ه‬‫و‬‫تثبيت‬
‫شده‬‫است‬‫تاثير‬‫عمل‬‫های‬‫آن‬‫در‬‫سيستم‬‫پايگاه‬‫داده‬‫باقي‬‫مي‬‫ماند‬‫حتي‬‫اگر‬‫دستگاهي‬‫که‬‫داده‬‫ها‬
‫بر‬‫روی‬‫آن‬‫ذخيره‬‫شده‬‫دچار‬‫مشکل‬(Fail)‫شود‬.
‫ماندگاری‬‫تراکنش‬‫ها‬‫مي‬‫تواند‬‫از‬‫طريق‬‫ذخيره‬‫ی‬‫همراه‬‫با‬‫افزونگي‬‫داده‬‫ها‬(Data Redundancy)
‫بر‬‫روی‬‫دستگاه‬‫های‬‫پشتيبان‬‫بدست‬‫آيد‬.
‫به‬‫عنوان‬‫مثال‬‫اگر‬‫يک‬‫دانشجو‬‫برای‬‫يک‬‫درس‬‫ثبت‬‫نام‬‫کرد‬‫و‬‫تراکنش‬‫تثبيت‬‫شد‬‫انتظ‬‫ار‬‫مي‬‫رود‬
‫که‬‫سيستم‬‫پايگاه‬‫داده‬‫اين‬‫اصل‬‫را‬‫حتي‬‫علي‬‫رغم‬‫مشکالت‬‫و‬‫شکست‬‫های‬‫سخت‬‫افزاری‬‫و‬‫ي‬‫ا‬‫نرم‬
‫افزاری‬‫به‬‫خاطر‬‫داشته‬‫باشد‬.
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
11
‫پيشرفته‬‫داده‬‫پايگاه‬
‫آغاز‬
‫ا‬‫نتظار‬
‫انجام‬
‫انجام‬ ‫آماده‬
‫اجرا‬
‫سقوط‬
‫پایان‬
‫تراکنش‬ ‫اجرای‬ ‫مراحل‬
‫تراکنش‬‫دنباله‬‫ای‬‫از‬‫دستورات‬‫است‬‫که‬‫به‬‫ترتيب‬‫توسط‬‫سيستم‬‫اجرا‬‫مي‬‫شو‬‫ند‬:
‫آغاز‬Begin‫و‬‫پايان‬End:‫وجود‬‫نقطه‬‫شروع‬‫و‬‫پايان‬‫باعث‬‫مي‬‫شود‬‫چند‬
‫دستور‬‫به‬‫عنوان‬‫يک‬‫واحد‬‫منطقي‬‫تلقي‬‫شود‬‫و‬‫بتوان‬‫خاصيت‬A(atomicity)‫را‬‫روی‬
‫آن‬‫کنترل‬‫کرد‬.(Begin Transaction & End Transaction)
‫امتياز‬‫استفاده‬‫از‬BEGIN T‫و‬END T‫آن‬‫است‬‫که‬‫کار‬‫ها‬‫را‬‫مي‬‫توان‬‫به‬‫واحد‬
‫های‬‫کوچک‬‫تر‬‫تقسيم‬‫بندی‬‫کرد‬‫و‬‫در‬‫صورت‬‫شکست‬‫عمليات‬‫ميزان‬‫عقبگ‬‫رد‬
(Rollback)‫کمتری‬‫خواهيم‬‫داشت‬.
‫انتظار‬(wait)‫و‬‫اجرا‬:‫تراکنش‬‫به‬‫منابعي‬‫مي‬‫خواهد‬
‫دسترسي‬‫پيدا‬‫کند‬‫که‬‫توسط‬‫ديگر‬‫تراکنشها‬‫بکار‬‫گرفته‬‫ش‬‫ده‬،‫باشد‬
‫انتظار‬‫و‬‫اجرا‬‫چندين‬‫بار‬‫تکرار‬‫مي‬‫شود‬‫تا‬‫تراکنش‬‫بصورت‬‫موفق‬‫يت‬
‫آميز‬‫پايان‬‫پذيرد‬‫و‬‫يا‬‫از‬‫ادامه‬‫آن‬‫منصرف‬‫گردد‬.
‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
12
‫آغاز‬
‫ا‬‫نتظار‬
‫انجام‬
‫انجام‬ ‫آماده‬
‫اجرا‬
‫سقوط‬
‫پایان‬
‫تراکنش‬ ‫اجرای‬ ‫مراحل‬
‫پيشرفته‬‫داده‬‫پايگاه‬
‫انجام‬(commit):‫مرحله‬‫ای‬‫است‬‫که‬‫همه‬‫بخشها‬
‫برای‬‫نهايي‬‫کردن‬‫کار‬‫توافق‬‫کرده‬‫اند‬‫در‬SQL‫از‬‫دستور‬
COMMIT‫ميتوان‬‫استفاده‬‫کرد‬.
‫مرحله‬‫آماده‬‫انجام‬ready to commit:‫در‬
‫اين‬‫مرحله‬‫تراکنش‬‫همه‬‫کارهای‬‫مربوطه‬‫را‬‫انجام‬‫داده‬‫و‬
‫کافيست‬‫بخشهای‬‫مختلفي‬‫که‬‫با‬‫آن‬‫سر‬‫کار‬‫داشته‬‫اند‬‫جهت‬
‫پايان‬‫هماهنگ‬‫کند‬‫اين‬‫مرحله‬‫در‬‫تراکنشهای‬‫طوالني‬‫و‬
‫بانکهای‬‫اطالعاتي‬‫نامتمرکز‬‫اهميت‬‫زياد‬‫دارد‬
‫در‬SQL‫بازگرداندن‬‫کارهای‬‫انجام‬‫شده‬‫توسط‬‫يک‬‫تراکنش‬‫که‬‫ب‬‫ه‬
‫هر‬‫دليلي‬‫موفقيت‬‫آميز‬‫نبوده‬‫به‬‫حالت‬‫اول‬‫با‬‫دستور‬
ROLLBACK‫انجام‬‫مي‬‫شود‬.
‫دقت‬:‫هر‬‫تراکنش‬‫به‬‫مثابه‬‫يک‬‫برنامه‬‫است‬‫و‬‫نمي‬‫توان‬‫تر‬‫تيب‬
‫دستورات‬‫را‬‫جابجا‬‫کرد‬‫زيرا‬‫منطق‬‫آن‬‫بهم‬‫خواهد‬‫ريخت‬‫اما‬‫ترتيب‬
‫اجرای‬‫تراکنشها‬‫مختلف‬‫را‬‫مي‬‫توان‬‫در‬‫يک‬‫زمانبندی‬‫تغيير‬‫داد‬.
‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
13
‫تراکنش‬ ‫های‬ ‫مدل‬
‫فاکتورهای‬‫ی‬‫گوناگون‬‫ای‬‫ر‬‫ب‬‫رده‬‫بندی‬‫اکنش‬‫ر‬‫ت‬‫ی‬‫ا‬‫ه‬‫ی‬‫د‬‫وجو‬‫ی‬‫د‬‫دار‬‫ا‬‫ی‬‫ز‬‫جمله‬:
‫اجرا‬ ‫زمان‬ ‫مدت‬
‫نوشتن‬ ‫و‬ ‫خواندن‬ ‫ترتيب‬
‫سطوح‬ ‫تعداد‬
‫از‬‫نظر‬‫مدت‬‫زمان‬،‫اجرا‬‫تراکنش‬‫ها‬‫به‬‫دو‬‫دسته‬‫ی‬‫تراکنش‬‫های‬‫کوتاه‬(Short Life Transaction)‫و‬
‫تراکنش‬‫های‬‫طوالنی‬(Long Life Transaction)‫تقسیم‬‫بندی‬‫می‬‫شوند‬.‫تراکنش‬‫کوتاه‬‫دارای‬‫زمان‬
‫اجرا‬‫و‬‫زمان‬‫پاسخ‬‫دهی‬‫کوتاهی‬‫است‬‫که‬‫در‬‫حدود‬‫چند‬‫ثانیه‬‫یا‬‫چند‬‫دقیقه‬‫است‬‫مانند‬‫عملیات‬‫بانک‬‫ی‬‫از‬
‫دستگاه‬‫های‬‫خودپرداز‬.‫در‬‫حالی‬‫که‬‫تراکنش‬‫های‬‫طوالنی‬‫دارای‬‫زمان‬‫اجرای‬‫حداقل‬‫چند‬‫دقیقه‬‫تا‬‫چند‬
‫ساعت‬‫هستند‬‫مانند‬‫برنامه‬‫های‬‫پردازش‬‫صوت‬‫و‬‫تصویر‬.
‫پيشرفته‬‫داده‬‫پايگاه‬
‫اجرا‬ ‫زمان‬ ‫مدت‬
‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
14
‫تراکنش‬ ‫های‬ ‫مدل‬–‫نوشتن‬ ‫و‬ ‫خواندن‬ ‫ترتيب‬ ‫اساس‬ ‫بر‬
‫تراکنش‬ ‫بندی‬ ‫رده‬‫انواع‬ ‫به‬ ‫ها‬ ‫تراکنش‬ ،‫نوشتن‬ ‫و‬ ‫خواندن‬ ‫ترتيب‬ ‫اساس‬ ‫بر‬ ‫ها‬
‫شوند‬ ‫مي‬ ‫بندی‬ ‫طبقه‬ ‫زير‬:
‫شده‬ ‫محدود‬ ‫تراکنش‬
(Restricted)
‫عمومي‬ ‫تراکنش‬
‫ای‬ ‫مرحله‬ ‫دو‬ ‫تراکنش‬
(Two steps)
‫شده‬ ‫محدود‬ ‫ای‬ ‫مرحله‬ ‫دو‬ ‫تراکنش‬
(Restricted two steps)
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
15
‫تراکنش‬‫عمومی‬‫تراکنشی‬‫است‬‫که‬‫در‬‫آن‬‫دستورهای‬‫خواندن‬‫و‬‫نوشتن‬‫از‬‫ترتیب‬‫خاصی‬‫پیروی‬‫نم‬‫ی‬‫کند‬.
‫مانند‬
T1 = {R(D1), R(D2), W(D2), R(D3), W(D1), W(D3), W(D4), C}
‫تراکنش‬‫دو‬‫مرحله‬‫ای‬‫تراکنشی‬‫است‬‫که‬‫در‬‫آن‬‫تمام‬‫دستورهای‬‫خواندن‬‫پیش‬‫از‬‫عمل‬‫های‬‫نوشتن‬‫اج‬‫را‬‫می‬
‫شوند‬.‫مانند‬
T2 = {R(D1), R(D2), R(D3), W(D1), W(D3), W(D2), W(D4), C}
‫تراکنش‬‫محدودشده‬(‫یا‬‫نوشتن‬‫مقید‬(Constrained Write))‫تراکنشی‬‫است‬‫که‬‫در‬‫آن‬‫هر‬‫فقره‬‫داده‬‫ی‬
D‫باید‬‫پیش‬‫از‬‫بهنگام‬‫شدن‬‫خوانده‬‫شود‬.‫مانند‬
T3 = {R(D1), R(D2), W(D2), R(D3), W(D1), W(D3), R(D4), W(D4), C}
‫تراکنش‬ ‫های‬ ‫مدل‬–‫نوشتن‬ ‫و‬ ‫خواندن‬ ‫ترتيب‬ ‫اساس‬ ‫بر‬
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
16
‫تراکنش‬‫می‬‫تواند‬‫دو‬‫مرحله‬‫ای‬‫و‬‫محدودشده‬‫نیز‬‫باشد‬.‫مانند‬
T4 = {R(D1), R(D2), R(D3), R(D4), W(D1), W(D3), W(D2), W(D4), C}
‫تراکنش‬‫ممکن‬‫است‬‫براساس‬‫مدل‬‫عمل‬(Action Model)‫کار‬‫کند‬‫در‬‫آن‬‫هر‬‫جفت‬‫عمل‬‫خواندن‬‫و‬
‫نوشتن‬‫یک‬‫فقره‬‫داده‬‫باید‬‫بی‬‫فاصله‬‫و‬‫در‬‫پی‬‫هم‬‫انجام‬‫شود‬.‫مانند‬
T5 = {[R(D1), W(D1)], [R(D2), W(D2)], [R(D3), W(D3)], [R(D4), W(D4)], C}
‫اگر‬‫تراکنشی‬‫بی‬‫آنکه‬‫داده‬‫ای‬‫را‬‫بخواند‬‫آنرا‬‫بنویسد‬‫می‬‫گوییم‬‫نوشتن‬‫کور‬(Blind Write)‫انجام‬‫شده‬
‫است‬.‫مانند‬‫نوشتن‬‫فقره‬‫داده‬‫ی‬D4.
T6 = {R(D1), R(D2), W(D2), R(D3), W(D1), W(D3), W(D4), C}
‫تراکنش‬ ‫های‬ ‫مدل‬–‫نوشت‬ ‫و‬ ‫خواندن‬ ‫ترتيب‬ ‫اساس‬ ‫بر‬‫ن‬
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
17
‫تراکنش‬ ‫های‬ ‫مدل‬–‫سطوح‬ ‫تعداد‬ ‫اساس‬ ‫بر‬
‫تراکنش‬ ‫بندی‬ ‫رده‬،‫سطوح‬ ‫تعداد‬ ‫اساس‬ ‫بر‬ ‫ها‬‫به‬‫شوند‬ ‫مي‬ ‫بندی‬ ‫طبقه‬ ‫زير‬ ‫انواع‬:
‫تودرتو‬ ‫تراکنش‬
(Nested Transaction)
‫مسطح‬ ‫تراکنش‬
(Flat Transaction)
‫شده‬ ‫توزيع‬ ‫تراکنش‬
(Distributed Transaction)
‫بلند‬ ‫بسيار‬ ‫تراکنش‬
(Saga Transaction)
‫تراکنش‬،‫مسطح‬‫که‬‫خود‬‫شامل‬‫هر‬‫تعداد‬‫عمل‬(Action)‫می‬‫تواند‬‫باشد‬‫یک‬‫نقطه‬‫آغاز‬‫و‬‫یک‬‫نقطه‬‫پایان‬
‫دارد‬.‫این‬‫نوع‬‫تراکنش‬‫برای‬‫عملیات‬‫پیچیده‬‫مناسب‬‫نیست‬.
‫مانند‬:
BEGIN TRANSACTION
action 1
action 2
…..
action i
END TRANSACTION
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
18
‫تراکنش‬ ‫های‬ ‫مدل‬–‫سطوح‬ ‫تعداد‬ ‫اساس‬ ‫بر‬
‫در‬‫تراکنش‬‫تودرتو‬‫هر‬‫تراکنش‬‫از‬‫تعدادی‬‫زیرتراکنش‬‫مرتبط‬‫به‬‫هم‬‫تشکیل‬‫شده‬‫است‬‫بناب‬‫راین‬‫تراکنش‬
‫اصلی‬‫در‬‫واقع‬‫درخت‬‫یا‬‫سلسله‬‫مراتبی‬‫از‬‫تراکنش‬‫ها‬‫را‬‫تشکیل‬‫می‬‫دهد‬.‫از‬‫این‬‫رو‬‫چند‬‫نقطه‬‫آغ‬‫از‬‫و‬
‫پایان‬‫به‬‫چشم‬‫می‬‫خورد‬.‫زیر‬‫تراکنش‬‫ها‬‫به‬‫صورت‬‫همروند‬(Concurrent)‫انجام‬‫می‬‫شوند‬.‫تراکنش‬
‫های‬‫تودرتو‬‫به‬‫عنوان‬‫مبنایی‬‫برای‬‫مدل‬‫های‬‫پیچیده‬‫تر‬‫تراکنش‬‫بکار‬‫می‬‫رود‬.
BEGIN TRANSACTION T1
…..
BEGIN TRANSACTION T2
…..
BEGIN TRANSACTION T3
…..
END TRANSACTION T3 (COMMIT T3 )
…..
BEGIN TRANSACTION T4
…..
END TRANSACTION T4 (COMMIT T4 )
…..
END TRANSACTION T2 (COMMIT T2 )
…..
END TRANSACTION T1 (COMMIT T1 )
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
19
‫تراکنش‬‫توزیع‬‫شده‬‫یک‬‫تراکنش‬‫از‬‫نوع‬‫مسطح‬‫است‬‫که‬‫در‬‫محیطی‬‫توزیع‬‫شده‬‫اجرا‬‫می‬‫گردد‬.‫در‬‫ی‬‫ک‬
‫تراکنش‬،‫تودرتو‬‫وظایف‬‫مابین‬‫زیرتراکنش‬‫ها‬(Sub Transactions)‫تقسیم‬‫می‬‫شود‬‫حال‬‫آنکه‬‫در‬‫تراکنش‬
‫توزیع‬،‫شده‬‫داده‬‫ها‬‫در‬‫سایت‬‫های‬‫گوناگون‬‫توزیع‬‫می‬‫شوند‬.
‫تراکنش‬‫بسیار‬‫بلند‬‫یک‬‫تراکنش‬‫از‬‫نوع‬‫تودرتو‬‫است‬‫که‬‫بر‬‫مفهوم‬‫تراکنش‬‫جبرانگر‬(Compensating
Transaction)‫مبتنی‬‫است‬.‫به‬‫این‬‫صورت‬‫که‬‫در‬‫اثر‬‫عدم‬‫اجرای‬‫کامل‬‫تراکنش‬،‫ها‬‫تراکنش‬‫های‬‫جبرا‬‫نگر‬
‫که‬‫به‬‫ازای‬‫هر‬‫زیرتراکنش‬‫وجود‬‫دارند‬‫اجرا‬‫می‬‫شوند‬.‫تراکنش‬‫های‬‫جبرانگر‬‫قادرند‬‫اثر‬‫اجرای‬‫تراکنش‬‫های‬
‫ناکامل‬‫و‬‫طرد‬‫شده‬(Aborted)‫را‬‫خنثی‬‫کنند‬.‫در‬‫این‬‫نوع‬‫از‬،‫تراکنش‬‫خاصیت‬‫جدایی‬‫برقرار‬‫نیست‬‫و‬
‫تراکنش‬‫می‬‫تواند‬‫نتیجه‬‫بینابینی‬‫خود‬‫را‬‫در‬‫اختیار‬‫سایر‬‫تراکنش‬‫های‬‫همروند‬‫قرار‬‫دهد‬.
‫یک‬‫نوع‬‫دیگر‬‫از‬‫تراکنش‬‫ها‬‫به‬‫تراکنش‬‫های‬‫زنجیره‬‫ای‬(Chained)‫موسوم‬‫هستند‬.‫این‬‫ها‬‫مجموعه‬‫ای‬‫از‬
‫تراکنش‬‫ها‬‫هستند‬‫که‬‫در‬‫پی‬‫هم‬‫اجرا‬‫شده‬‫به‬‫گونه‬‫ای‬‫که‬‫کامل‬‫شدن‬‫یک‬‫تراکنش‬‫و‬‫شروع‬‫تراکنش‬‫بعدی‬
‫یک‬‫عمل‬‫تجزیه‬‫نشدنی‬‫تلقی‬‫می‬‫گردد‬‫و‬‫بنابراین‬‫از‬‫سربار‬‫دستور‬‫شروع‬‫تراکنش‬‫اجتناب‬‫می‬‫ش‬‫ود‬.
‫تراکنش‬ ‫های‬ ‫مدل‬–‫سطوح‬ ‫تعداد‬ ‫اساس‬ ‫بر‬
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
20
‫نگهداشت‬ ‫نقطه‬ ‫تکنيک‬(Save Point)
‫این‬‫اصل‬‫که‬‫باید‬‫یا‬‫همه‬‫ی‬‫تراکنش‬‫تا‬‫پایان‬‫انجام‬‫شود‬‫و‬‫یا‬‫در‬‫صورت‬‫ناکامل‬‫بودن‬،‫تراکنش‬‫سی‬‫ستم‬‫به‬
‫شرایطی‬‫برگردد‬‫که‬‫انگار‬‫تراکنش‬‫اصال‬‫شروع‬‫نشده‬‫است‬‫در‬‫بعضی‬‫از‬‫کاربردها‬‫به‬‫ویژه‬‫زمانی‬‫ک‬‫ه‬‫تراکنش‬
‫های‬‫یک‬،‫دامنه‬‫طوالنی‬‫هستند‬‫مفید‬‫نیست‬.‫برای‬‫حل‬‫این‬،‫مشکل‬‫راهکار‬save point‫یا‬‫نقطه‬‫نگهداشت‬
‫معرفی‬‫شده‬‫است‬.
‫برای‬‫ایجاد‬‫نقطه‬،‫نگهداشت‬‫تابعی‬‫مانند‬Save Work Function‫توسط‬‫سیستم‬‫اجرا‬‫شده‬‫و‬‫وضعیت‬
‫جاری‬‫داده‬‫های‬‫سیستم‬‫را‬‫ذخیره‬‫می‬‫سازد‬‫که‬‫دارای‬‫یک‬‫شناسه‬‫است‬.‫برنامه‬‫می‬‫تواند‬‫با‬‫درخواست‬
Rollback Work‫و‬‫دادن‬‫شناسه‬‫به‬Save Point‫مورد‬‫نظر‬‫برگردد‬‫که‬‫این‬‫واگرد‬‫ممکن‬‫است‬‫جزیی‬
(Partial)‫و‬‫یا‬‫سراسری‬(Global)‫باشد‬.‫می‬‫توان‬‫نقاط‬Save Point‫را‬‫در‬‫حافظه‬‫ماندگار‬‫نگهداشت‬‫که‬
‫در‬‫این‬‫صورت‬‫به‬‫آن‬‫نقطه‬‫نگهداشت‬‫پایا‬(Persistent Save Point)‫می‬‫گویند‬.
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
21
‫همروندی‬
(Concurrency)
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
22
‫پيشرفته‬‫داده‬‫پايگاه‬
‫همروند‬ ‫اجرای‬(‫همزمان‬)‫تراکنشها‬
‫اجرای‬‫همروند‬‫تراکنش‬‫ها‬‫باعث‬‫افزایش‬‫کارایی‬‫سیستم‬‫می‬‫شود؛‬
‫دراجرای‬‫همروند‬،‫دستورات‬‫تراکنش‬‫های‬‫مختلف‬‫می‬‫توانند‬‫به‬‫صورت‬‫درهم‬‫اجرا‬‫شوند‬(‫در‬‫یک‬‫زمان‬‫چند‬
‫تراکنش‬‫در‬‫حال‬‫انجام‬‫می‬‫باشد‬)
‫این‬‫عمل‬‫دو‬‫نوع‬‫مزیت‬‫را‬‫در‬‫بر‬‫دارد‬:
-‫افزايش‬‫گذردهي‬(throughput):‫اجرای‬‫موازی‬‫دستورات‬‫محاسباتی‬‫که‬‫با‬CPU‫سر‬‫کار‬‫دارند‬‫با‬
‫دستورات‬I/O‫می‬‫تواند‬‫تعداد‬‫تراکنش‬‫های‬‫اجرا‬‫شده‬‫در‬‫واحد‬‫زمان‬‫را‬‫در‬‫سیستم‬‫افزایش‬‫دهد‬.(‫یعنی‬‫در‬
‫زمان‬‫نوشتن‬‫روی‬‫دیسک‬‫که‬‫زمان‬‫بر‬‫می‬‫باشد‬‫از‬‫پردازنده‬‫برای‬‫دستورات‬‫محاسباتی‬‫استفاده‬‫کنی‬‫م‬)
-‫کاهش‬‫ميانگين‬‫زمان‬‫پاسخ‬‫دهي‬:‫تراکنشهای‬‫کوتاه‬‫منتظر‬‫اتمام‬‫تراکنشهای‬‫طوالنی‬‫مدت‬‫نمی‬‫مانند‬
(Concurrency Control)
‫مشکل‬‫اصیل‬‫ی‬‫ر‬‫د‬‫ای‬‫ر‬‫اج‬‫ی‬‫د‬‫همرون‬‫اکنش‬‫ر‬‫ت‬‫ی‬‫ا‬‫ه‬‫این‬‫است‬‫که‬‫ممکن‬‫است‬‫گاری‬‫ز‬‫ناسا‬‫داده‬‫ی‬‫ا‬‫ه‬‫پیش‬‫آی‬‫ی‬‫د‬،‫این‬‫ر‬‫بناب‬
‫ی‬‫د‬‫بای‬‫ی‬‫ر‬‫ب‬‫ای‬‫ر‬‫اج‬‫ی‬‫د‬‫همرون‬‫اکنشها‬‫ر‬‫ت‬‫نظارت‬‫داشته‬‫باشیم‬.(Concurrency Control)
‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
23
Several problems can occur when concurrent transactions execute in an
uncontrolled manner.
Some Concurrency Problems in transaction are :
1) The Lost Update Problem
2) The uncommitted dependency problem/The
Temporary Update (or Dirty Read) Problem
3) The inconsistent analysis problem/The
Incorrect Summary Problem
4) The Unrepeatable Read Problem
‫مشکالت‬‫همروندی‬Concurrency Problems in Transaction
24
‫مشکالت‬‫همروندی‬‫کنترل‬‫نشده‬:
‫بهنگام‬‫سازی‬‫از‬‫دست‬‫رفته‬(‫تغییرات‬‫گم‬‫شده‬()Loste update)
‫مشکالت‬‫همروندی‬
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
time T1 T2 a
t0
begin T1
read(a)
a:=a-10
write(a)
commit
begin T2
read(a)
a:=a+100
write(a)
commit
100
100
100
200
90
90
t1
t2
t3
t4
t5
Transaction X’s update is lost at time t4, since transaction Y overwrites it
25
In this example :
1) Transaction A retrieves some tuple X at time t1.
2) Transaction B retrieves same tuple X at time t2.
3) Transaction A update the tuple X at time t3.
4) Transaction B update the same tuple at time t4 on
the base of the values available at time t2.
5) Transaction A’s update is lost at time t4, since
transaction B overwrites it.
‫مشکالت‬‫همروندی‬
26
Uncommitted Dependency (Dirty Read)(‫دستیابی‬‫نشده‬ ‫نهایی‬ ‫داده‬ ‫به‬: )
‫مشکالت‬‫همروندی‬
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
Uncommitted dependency occurs when a second transaction selects a
row that is being updated by another transaction. The second
transaction is reading data that has not been committed yet and may be
changed by the transaction updating the row
Time T1 T2 a
T1
begin T1
read(a)
a:=a-10
write(a)
Commit
begin T2
read(a)
a:=a+100
write(a)
.....
Rollback
100
100
100
200
200
100
190
190
T2
T3
T4
T5
T6
T7
T8
27
In this example :
1) Transaction B update the tuple at time t1.
2) Transaction A retrieves the same tuple X and use
the updated results at time t2.
3) Update (made by transaction be at time t1) is then
update at time t3.
‫مشکالت‬‫همروندی‬
28
‫تحلیل‬‫ناس‬‫ا‬‫زگار‬(Inconsistent analysis (nonrepeatable read))
‫مشکالت‬‫همروندی‬
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
time T1 T2 A B C SUM
t0 Begin T2 100 50 25
t1 Begin T1 SUM:=0 100 50 25 0
t2 Read(A) Read(A) 100 50 25 0
t3 A:=A-10 SUM:=SUM+A 100 50 25 100
t4 Write(A) Read(B) 90 50 25 100
t5 Read(C) SUM:=SUM+B 90 50 25 150
t6 C:=C+10 … 90 50 25 150
t7 Write(C) …. 90 50 35 150
t8 commit Read(C) 90 50 35 150
t9 SUM:=SUM+C 90 50 35 185
t10 commit 90 50 35 185
Inconsistent analysis occurs when a
second transaction accesses the same
row several times and reads different
data each time. Inconsistent analysis
is similar to uncommitted
dependency in that another
transaction is changing the data that
a second transaction is reading.
However, in inconsistent analysis, the
data read by the second transaction
was committed by the transaction
that made the change. Also,
inconsistent analysis involves
multiple reads (two or more) of the
same row, and each time the
information is changed by another
transaction; thus, the term
nonrepeatable read.
185=100+50+35
‫این‬‫مقدار‬‫درست‬‫نمی‬‫باشد‬‫چون‬‫مجموع‬
‫مقادیر‬‫باید‬‫بایستی‬175‫باشد‬
29
‫مشکالت‬‫همروندی‬
In this example :
1) In this example, transaction A is used to
find the sum of account balances and
transaction B is used to transfer an amount
25 from account 2 to account 1.
2) At time T1, transaction A retrives AC 1 and
some becomes 35.
3) Transaction B retrives AC 2 at time T2.
And update it at time T3 as a result balance
of AC 2 becomes 75.
4) Transaction retrives AC 1 at time T4 and
update balance of AC 1 becomes 60.
5) Transaction B commits at time T6.
6) At time T7, transaction A retrieve AC 2 and
sum becomes 75 but not 100.
7) The result produced by A is wrong. Hence
we say that transaction A has seen an
inconsistent state
30
The Unrepeatable Read Problem
Another problem that may occur is called unrepeatable
read, where a transaction T reads the same item twice and
the item is changed by another transaction T between the
two reads. Hence, T receives different values for its two
reads of the same item.
‫مشکالت‬‫همروندی‬
31
‫پيشرفته‬‫داده‬‫پايگاه‬
‫دقت‬:‫هرتراکنش‬‫اگر‬‫به‬‫تنهایی‬‫درست‬‫اجرا‬‫شود‬‫صحت‬‫و‬‫جامعیت‬
‫بانک‬‫اطالعاتی‬‫را‬‫برهم‬‫نمی‬‫زند‬‫وآنرا‬‫از‬‫یک‬‫حالت‬‫درست‬‫به‬‫یک‬‫حال‬‫ت‬
‫درست‬‫دیگر‬‫می‬‫برد‬،‫پس‬‫دنباله‬‫پی‬‫در‬‫پی‬‫از‬‫اجرای‬‫چند‬‫تراکنش‬‫ن‬‫یز‬
‫درست‬‫است‬‫و‬‫جامعیت‬‫را‬‫حفظ‬‫می‬‫کند‬‫اما‬‫اجرای‬‫همروند‬‫آنها‬‫چنین‬‫نیس‬‫ت‬
‫و‬‫ممکن‬‫است‬‫جامعیت‬‫بانک‬‫اطالعاتی‬‫خدشه‬‫دار‬‫شود‬‫با‬‫استفاده‬‫از‬‫پ‬‫ی‬‫در‬
‫پی‬‫پذیری‬Serializability‫می‬‫توانیم‬‫بفهمیم‬‫که‬‫آیا‬‫یک‬‫اجرای‬
‫همروند‬‫درست‬‫عمل‬‫می‬‫کند‬‫یا‬‫نه‬
‫مشکالت‬‫همروندی‬
‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
32
‫باشد‬ ‫پذیر‬ ‫پی‬ ‫در‬ ‫پی‬
CSR
VSR
‫باشد‬ ‫پذیر‬ ‫ترمیم‬
RC
ACA
ST
‫همروند‬ ‫طرح‬ ‫يک‬ ‫درستي‬ ‫شرايط‬
33
‫زمانبندها‬(Schedules):‫زمانبند‬‫یك‬‫توالي‬‫از‬‫دستورالعمل‬
‫هاست‬‫كه‬‫ترتیب‬‫وقوع‬(‫از‬‫نظر‬‫زماني‬)‫دستورالعمل‬‫هاي‬‫تراكنشهاي‬
‫همروند‬‫اجرا‬‫شده‬‫را‬‫تعریف‬‫و‬‫مشخص‬‫مي‬‫نماید‬.‫یك‬‫زمانبند‬‫براي‬‫ی‬‫ك‬
‫مجموعه‬‫از‬‫تراكنشها‬‫باید‬‫شامل‬‫همه‬‫ي‬‫دستورالعمل‬‫هاي‬‫آن‬‫تراكنش‬‫ها‬
‫باشد‬.‫همچنین‬‫یك‬‫زمانبند‬‫باید‬‫ترتیب‬‫زماني‬‫دستوالعمل‬‫هایي‬‫ر‬‫ا‬‫كه‬‫در‬
‫هر‬‫تراكنش‬‫ظاهر‬‫شده‬‫را‬‫حفظ‬‫و‬‫نگهداري‬‫كند‬.
‫در‬‫یك‬‫زمانبند‬‫مي‬‫توان‬‫تراكنشي‬‫را‬‫منتظر‬‫تراكنش‬‫دیگري‬‫گذاش‬‫ت‬‫یا‬
‫مي‬‫توان‬‫اجراي‬‫یك‬‫تراكنش‬‫را‬‫به‬‫تعویق‬‫انداخت‬
‫زماني‬ ‫برنامه‬ ،‫ها‬ ‫تراکنش‬(Schedule)‫توالي‬ ‫و‬(Sequence)
‫پيشرفته‬‫داده‬‫پايگاه‬
‫دقت‬:‫هرتراکنش‬‫به‬‫مثابه‬‫یک‬‫برنامه‬‫است‬‫ونمی‬‫توان‬‫ترتیب‬‫دستورات‬‫را‬‫جابجا‬‫کردزیرا‬‫منطق‬‫آن‬‫بهم‬
‫خواهد‬‫ریخت‬‫اما‬‫ترتیب‬‫اجرای‬‫تراکنشها‬‫مختلف‬‫را‬‫می‬‫توان‬‫در‬‫یک‬‫زمانبندی‬‫تغییرداد‬.‫تراکنشها‬‫برن‬‫امه‬‫های‬
‫مستقلی‬‫هستند‬‫و‬‫از‬‫تاثیر‬‫روی‬‫یکدیگر‬‫بی‬‫خبرند‬.
‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
34
‫پي‬‫درپي‬‫پذير‬(Serializable):‫اجرای‬‫هرتراکنش‬‫ونیزاجرای‬
‫پی‬‫درپی‬‫چندین‬‫تراکنش‬‫جامعیت‬‫بانک‬‫اطالعات‬‫راحفظ‬‫می‬‫کند،ی‬‫ک‬
‫اجرای‬‫همروند‬‫ازتراکنش‬‫ها‬‫درست‬‫است‬‫اگرمعادل‬‫با‬‫یکی‬‫ازاجراهای‬
‫پی‬‫درپی‬‫آنهاباشددراین‬‫صورت‬‫می‬‫گوییم‬‫این‬‫اجرای‬(‫زمانبندی‬)‫همر‬‫وند‬
،‫پي‬‫در‬‫پي‬‫پذير‬Serializable‫است‬.‫دوروش‬‫اصلی‬‫پی‬‫درپی‬‫پذیری‬
‫عبارتند‬‫از‬:
-‫پی‬‫درپی‬‫پذیری‬‫در‬‫برخورد‬(CSR: Conflict Serializability)
‫پی‬‫درپی‬‫پذیری‬‫در‬‫دید‬(VSR: view serializability)
‫از‬‫آنجاییکه‬‫دستورات‬‫محاسباتی‬‫تاثیری‬‫درپی‬‫درپی‬‫پذیری‬‫ندا‬‫رند‬،‫در‬
‫زمانبندی‬‫برای‬‫راحتی‬‫کار‬‫دستورات‬write(),read()‫را‬‫در‬‫نظر‬‫می‬
‫گیریم‬.
‫زماني‬ ‫برنامه‬ ،‫ها‬ ‫تراکنش‬(Schedule)‫توالي‬ ‫و‬(Sequence)
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
35
ri(Q):‫تراکنش‬i‫داده‬Q‫خواند‬ ‫می‬ ‫را‬read(Q)
wi(Q):‫تراکنش‬i‫داده‬Q‫را‬‫نویسد‬ ‫می‬write(Q)
ci:‫تراکنش‬i‫رسد‬ ‫می‬ ‫تثبیت‬ ‫مرحله‬ ‫به‬commit
ai:‫تراکنش‬i‫شود‬ ‫می‬ ‫ساقط‬abort
bi‫و‬ei:‫یابد‬ ‫می‬ ‫پایان‬ ‫یا‬ ‫و‬ ‫شروع‬ ‫تراکنش‬(begin i‫و‬end i)
‫برخورد‬(Conflict):‫چنانچه‬qj, pi‫به‬‫ترتیب‬‫دستورات‬‫تراکنشهای‬tj, ti‫باشند‬‫گوییم‬،qj, pi
‫با‬‫هم‬‫برخورد‬‫دارند‬‫اگر‬‫وتنها‬‫اگر‬:
-‫این‬‫دو‬‫عملگر‬‫مربوط‬‫به‬‫تراکنش‬‫های‬‫متمایزباشند‬.(tj‫نامساوی‬ti)
-‫هر‬‫دو‬‫عملگر‬‫به‬‫یک‬‫داده‬‫دسترسی‬‫داشته‬‫باشند‬.
-‫حداقل‬‫یکی‬‫از‬‫این‬‫دو‬،‫عملگر‬‫عملگرنوشتن‬write()‫باشد‬.
‫پيشرفته‬‫داده‬‫پايگاه‬
‫زماني‬ ‫برنامه‬ ،‫ها‬ ‫تراکنش‬(Schedule)‫توالي‬ ‫و‬(Sequence)
‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
Ti
Tj
ri(q) wi(Q)
rj(Q) ‫سازگار‬(true) ‫ناسازگار‬(false)
wj(Q) ‫ناسازگار‬(false) ‫ناسازگار‬(false)
36
‫پيشرفته‬‫داده‬‫پايگاه‬
‫زماني‬ ‫برنامه‬ ،‫ها‬ ‫تراکنش‬(Schedule)‫توالي‬ ‫و‬(Sequence)
T1
T2
Local
Variables
Local
Variables
DBMS
op1,1 op2,1 op2,2 op1,2
op1,1 op1,2
op2,1 op2,2
Transaction Schedule
Sequence: an arbitrary merge
of two sequences or the order
of operations arriving at the
database
‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
37
‫پيشرفته‬‫داده‬‫پايگاه‬
‫همروند‬ ‫اجرای‬(‫همزمان‬)‫تراکنشها‬
‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
38
‫پی‬ ‫در‬ ‫پی‬ ‫زمانبندی‬:
 S1 : r1(A)w1(A)a1w2(A)w2(B)c2
‫اجرای‬ ‫ترتیب‬‫آنها‬ ‫پی‬ ‫در‬ ‫پی‬T1‫سپس‬ ‫و‬T2‫باشد‬ ‫می‬:S1:T2<T2
‫زمانبندی‬S‫را‬‫پی‬‫در‬‫پی‬‫گوییم‬‫اگر‬‫برای‬‫هردو‬‫ترا‬‫کنش‬،‫پايان‬‫يکي‬‫قبل‬‫از‬‫شروع‬‫ديگری‬‫ب‬‫اشد‬،‫به‬
‫عبارت‬‫دیگر‬‫تراکنشها‬‫باید‬‫بصورت‬‫مجزا‬(‫نه‬‫بصورت‬‫در‬‫هم‬)‫ویکی‬‫پس‬‫از‬‫دیگری‬‫اجرا‬‫شون‬‫د‬
T1 r(A)w(A)a
T2 r(A)w(B)c
‫زماني‬ ‫برنامه‬ ،‫ها‬ ‫تراکنش‬(Schedule)‫توالي‬ ‫و‬(Sequence)
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
39
‫برخورد‬ ‫در‬ ‫معادل‬ ‫زمانبندی‬(Conflict equivalence: )
‫زمانبندی‬S‫و‬s′
‫معادل‬‫در‬‫برخورد‬‫هستند‬‫اگر‬‫هر‬‫دو‬‫روی‬‫یک‬‫مجموعه‬‫از‬‫دستورات‬‫و‬‫تراکنشها‬
‫کار‬‫کنند‬‫و‬‫با‬‫جابجا‬‫کردن‬‫دستورات‬‫بدون‬‫برخورد‬‫در‬‫زمانبدی‬S‫بتوانیم‬‫زمانبندی‬s′
‫را‬‫تولید‬‫کنیم‬.
‫نكته‬‫مهم‬:‫به‬‫هیچ‬‫عنوان‬‫نمي‬‫توانیم‬‫ترتیب‬‫دستورات‬‫یك‬‫تراكنش‬‫را‬‫عوض‬‫ك‬‫نیم‬‫چون‬
‫منطق‬‫آن‬‫تراكنش‬‫عوض‬‫مي‬‫شود‬.
‫زماني‬ ‫برنامه‬ ،‫ها‬ ‫تراکنش‬(Schedule)‫توالي‬ ‫و‬(Sequence)
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
40
‫زمانبندی‬ ‫با‬ ‫برخورد‬ ‫در‬ ‫معادل‬S2‫بیابید‬ ‫را‬ ‫زیر‬.
 S2 : r1(Q)w1(Q)r2(Q)r1(P)w2(Q)w1(p)c1r2(p)w2(p)c2
 S3 : r1(Q)w1(Q)r2(Q)r1(P)w1(p)w2(Q)c1r2(p)w2(p)c2
‫زماني‬ ‫برنامه‬ ،‫ها‬ ‫تراکنش‬(Schedule)‫توالي‬ ‫و‬(Sequence)
T1 r(Q)w(Q) r(P) w(P)c
T2 r(Q) w(Q) r(P)w(p)c
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
T1 r(Q)w(Q) r(P) w(P) c
T2 r(Q) w(Q) r(P)w(p)c
41
‫زماني‬ ‫برنامه‬ ،‫ها‬ ‫تراکنش‬(Schedule)‫توالي‬ ‫و‬(Sequence)
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
42
‫اجرای‬‫همروند‬‫تراکنش‬‫ها‬‫باعث‬‫افزایش‬‫کارایی‬‫سیستم‬‫می‬‫شود‬.‫از‬‫طرف‬‫دیگر‬‫هر‬‫مدل‬‫اجرای‬‫همروندی‬‫از‬
‫تراکنش‬‫ها‬‫صحیح‬‫نیست‬‫و‬‫مدلی‬‫درست‬‫است‬‫که‬‫قابلیت‬‫سریال‬‫شدن‬‫داشته‬‫باشد‬.‫از‬‫این‬‫رو‬‫بر‬‫ای‬‫تضمین‬
‫قابلیت‬‫سریال‬‫شدن‬‫تراکنش‬‫های‬‫درگیر‬‫در‬‫یک‬‫اجرای‬،‫همروند‬‫از‬‫تکنیک‬‫های‬‫کنترل‬‫همروندی‬‫اس‬‫تفاده‬
‫می‬‫شود‬‫که‬‫عبارتند‬‫از‬:
‫همروندی‬ ‫کنترل‬ ‫های‬ ‫تکنيک‬
Locking Techniques
(‫گذاری‬ ‫قفل‬ ‫های‬ ‫تکنيک‬)
Timestamping Technique
(‫زماني‬ ‫ُهر‬‫م‬ ‫تکنيک‬)
Multiversioning Technique
(‫سازی‬ ‫نسخه‬ ‫چند‬ ‫تکنيک‬)
Certification Technique
(‫تاييد‬ ‫تکنيک‬)
‫تکنیک‬‫های‬‫کنترل‬‫همروندی‬‫به‬‫دو‬‫دسته‬‫ی‬‫تکنیک‬‫های‬‫بدبینانه‬(Pessimistic)‫و‬‫تکنیک‬‫های‬
‫خوشبینانه‬(Optimistic)‫تقسیم‬‫می‬‫شوند‬.‫تکنیک‬‫های‬‫قفل‬‫گذاری‬‫ماهیت‬‫بدبینانه‬‫دارند‬‫حال‬‫آنک‬‫ه‬‫سایر‬
‫تکنیک‬‫ها‬‫به‬‫صورت‬‫خوشبینانه‬‫عمل‬‫می‬‫کنند‬.
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
43
‫گذاری‬ ‫قفل‬ ‫های‬ ‫تکنيک‬
‫قفل‬(Lock)‫بر‬‫روی‬‫یک‬‫آیتم‬‫یا‬‫یک‬‫قلم‬‫داده‬‫ای‬‫به‬‫معنی‬‫مجوز‬‫دستیابی‬‫یک‬‫تراکنش‬‫به‬‫آن‬‫قلم‬‫داده‬‫ای‬
‫است‬‫که‬‫توسط‬‫زیر‬‫سیستم‬‫قفل‬‫گذاری‬‫در‬‫سیستم‬‫مدیریت‬‫پایگاه‬‫داده‬‫ها‬‫به‬‫تراکنش‬‫ها‬‫اعطا‬‫ش‬‫ده‬
(Grant)‫و‬‫یا‬‫از‬‫آنها‬‫بازپس‬‫گرفته‬‫می‬‫شود‬.‫بنابراین‬‫می‬‫توان‬‫گفت‬‫که‬‫قفل‬‫بر‬‫روی‬‫یک‬‫واحد‬‫داده‬،‫ای‬
‫متغیری‬‫است‬‫که‬‫وضع‬‫آن‬‫واحد‬‫داده‬‫ای‬‫را‬‫نسبت‬‫به‬‫عمل‬‫قابل‬‫انجام‬‫بر‬‫روی‬‫آن‬(Read‫یا‬Write)
‫مشخص‬‫می‬‫کند‬.
‫اندازه‬‫ی‬‫واحد‬‫قفل‬‫شدنی‬(Lock Granularity)‫در‬‫سیستم‬‫های‬‫مختلف‬‫متفاوت‬‫است‬.‫یک‬‫واحد‬‫داده‬‫ای‬
‫قفل‬‫پذیر‬‫می‬‫تواند‬‫یک‬،‫رکورد‬،‫فیلد‬‫جدول‬(‫رابطه‬)،‫یک‬،‫بالک‬‫یک‬‫فایل‬‫و‬‫یا‬‫تمام‬‫پایگاه‬‫داده‬‫ب‬‫اشد‬.‫اگرچه‬
‫در‬‫بعضی‬‫از‬‫سیستم‬‫ها‬‫از‬‫چند‬‫اندازه‬‫برای‬‫واحد‬‫قفل‬‫شدنی‬‫استفاده‬‫می‬‫شود‬.‫همچنین‬‫اندازه‬‫ی‬‫واحد‬‫ق‬‫فل‬
‫شدنی‬‫گاهی‬‫می‬‫تواند‬‫به‬‫صورت‬‫پویا‬‫تغییر‬‫کند‬.‫ریزی‬‫این‬‫واحد‬‫را‬‫می‬‫توان‬‫ارتقا‬(Lock Escalation)‫داد‬
‫و‬‫به‬‫عنوان‬‫مثال‬‫قفل‬‫در‬‫سطح‬‫تاپل‬‫را‬‫به‬‫قفل‬‫در‬‫سطح‬‫رابطه‬‫تبدیل‬‫کرد‬.
‫در‬‫صورت‬‫کوچک‬‫بودن‬‫اندازه‬‫ی‬‫واحد‬‫قفل‬،‫شدنی‬‫تعداد‬‫واحد‬‫ها‬‫در‬‫سیستم‬‫زیاد‬‫و‬‫سربار‬‫سیستم‬‫ک‬‫ه‬‫ناشی‬
‫از‬‫مدیریت‬‫قفل‬‫هاست‬‫نیز‬‫افزایش‬‫می‬‫یابد‬.‫در‬‫این‬‫صورت‬‫میزان‬‫همروندی‬‫تراکنش‬‫ها‬‫افزایش‬‫یافت‬‫ه‬‫و‬
‫احتمال‬‫تداخل‬‫آنها‬‫کاهش‬‫می‬‫یابد‬.
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
44
‫گذاری‬ ‫قفل‬ ‫های‬ ‫تکنيک‬
‫ساختار‬‫قفل‬:‫این‬‫ساختار‬‫شامل‬‫فیلد‬‫های‬‫شناسه‬‫ی‬،‫قفل‬‫نوع‬‫قفل‬(‫متناظر‬‫با‬‫عملیات‬‫مورد‬‫نظر‬)،‫مقدار‬‫قفل‬
(‫مقدار‬‫مجاز‬‫که‬‫گاه‬‫به‬‫صورت‬‫باینری‬‫است‬)‫و‬‫شناسه‬‫ی‬‫تراکنش‬(‫که‬‫قفل‬‫به‬‫آن‬‫اعطا‬‫می‬‫شود‬)‫می‬‫ب‬‫اشد‬.
‫انواع‬‫قفل‬:‫قفل‬‫ها‬‫در‬‫حالت‬‫کلی‬‫به‬‫دودسته‬‫ی‬‫قفل‬‫دوگانی‬(Binary Lock)‫و‬‫قفل‬‫چند‬‫حالتی‬(Multi-
mode Lock)‫تقسیم‬‫می‬‫شوند‬.‫نوع‬‫خاص‬‫دیگری‬‫از‬‫قفل‬‫تحت‬‫عنوان‬‫چفت‬(Latch)‫وجود‬‫دارد‬‫که‬‫تنها‬
‫برای‬‫زمان‬‫کوتاهی‬‫گذاشته‬‫می‬‫شود‬‫مانند‬‫چفت‬‫بر‬‫روی‬‫یک‬‫صفحه‬‫در‬‫زمان‬‫انتقال‬‫آن‬‫صفحه‬‫از‬‫باف‬‫ر‬‫به‬
‫دیسک‬.‫تکنیک‬‫های‬‫دیگر‬‫قفل‬‫گذاری‬‫شامل‬‫قفل‬‫گذاری‬‫دو‬،‫فازی‬‫قفل‬‫گذاری‬‫چند‬‫سطحی‬‫و‬‫قفل‬‫گذاری‬
‫چند‬‫نسخه‬‫ای‬‫هستند‬.
‫در‬‫سیستم‬‫مدیریت‬‫پایگاه‬،‫داده‬‫مدیر‬‫قفل‬(Lock Manager)‫که‬‫قفل‬‫ها‬‫را‬‫در‬‫اختیار‬‫تراکنش‬‫ها‬‫می‬
‫گذارد‬‫و‬‫یا‬‫از‬‫آنها‬‫بازپس‬‫می‬‫گیرد‬‫ممکن‬‫است‬‫قفل‬‫ها‬‫را‬‫به‬‫صورت‬‫ایستا‬‫و‬‫یا‬‫پویا‬‫در‬‫اختیار‬‫تراکن‬‫ش‬‫ها‬‫قرار‬
‫دهد‬.‫در‬‫حالت‬،‫پویا‬‫مدیر‬‫قفل‬‫به‬‫اعطای‬‫قفل‬‫به‬‫تراکنش‬‫در‬‫صورت‬‫درخواست‬‫تراکنش‬‫در‬‫حین‬‫اجرای‬‫آن‬
‫اقدام‬‫می‬‫نماید‬‫در‬‫صورتیکه‬‫در‬‫حالت‬،‫ایستا‬‫قفل‬‫های‬‫مورد‬‫نیاز‬‫قبل‬‫از‬‫اجرای‬‫یک‬‫تراکنش‬‫شناخت‬‫ه‬‫شده‬‫و‬
‫توسط‬‫مدیر‬‫قفل‬‫اعطا‬‫می‬‫شود‬.
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
45
‫این‬،‫قفل‬‫یک‬‫متغیر‬‫دو‬‫مقداری‬‫است‬‫که‬‫با‬Lval‫نمایش‬‫داده‬‫می‬‫شود‬‫و‬‫یکی‬‫از‬‫دو‬‫مقدار‬0‫و‬‫یا‬1‫می‬
‫گیرد‬.‫بنابراین‬‫در‬‫صورتیکه‬‫مقدار‬‫این‬‫متغیر‬‫برای‬‫یک‬‫فقره‬‫داده‬‫ای‬1‫باشد‬‫یعنی‬‫آن‬‫واحد‬‫داده‬‫ای‬‫قفل‬‫شده‬
‫و‬‫دستیابی‬‫به‬‫آن‬‫برای‬‫تراکنش‬‫های‬‫غیر‬‫از‬‫تراکنش‬‫دارنده‬‫قفل‬‫ممکن‬‫نیست‬.‫در‬‫صورتیکه‬‫مقدار‬‫این‬‫متغیر‬
‫برای‬‫یک‬‫واحد‬‫داده‬‫ای‬0‫باشد‬‫آن‬‫واحد‬‫قفل‬‫نشده‬‫و‬‫دستیابی‬‫به‬‫آن‬‫برای‬‫تراکنش‬‫ها‬‫امکان‬‫پذیر‬‫اس‬‫ت‬.
‫قفل‬‫دوگاني‬(Binary Lock)
‫عملیات‬‫ممکن‬‫بر‬‫روی‬‫واحدهای‬‫داده‬‫ای‬‫تحت‬‫پروتکل‬‫قفل‬‫گذاری‬‫دوگانی‬‫شامل‬‫دو‬‫عملیات‬Lock(D)
‫برای‬‫قفل‬‫گذاری‬‫و‬Unlock(D)‫برای‬‫قفل‬‫گشایی‬‫است‬.
‫یک‬‫تراکنش‬(Ti)‫در‬‫صورتیکه‬‫درخواست‬‫قفل‬‫روی‬‫واحد‬‫داده‬‫ای‬D‫را‬‫بنماید‬‫مقدار‬Lval(D)‫تعیین‬‫کننده‬
‫وضعیت‬‫تراکنش‬‫مورد‬‫نظر‬‫خواهد‬‫بود‬‫به‬‫این‬‫معنا‬‫که‬:
‫اگر‬Lval(D)=1‫باشد‬‫تراکنش‬Ti‫باید‬‫به‬‫حالت‬‫انتظار‬(Wait)‫رود‬.
‫اگر‬Lval(D)=0‫باشد‬‫دستور‬Lock(D)‫اجرا‬‫می‬‫شده‬Lval(D)=1‫شده‬‫و‬D‫قفل‬‫می‬‫شود‬.‫پس‬‫از‬‫اتمام‬
‫اجرای‬‫تراکنش‬Ti‫دستور‬Unlock(D)‫اجرا‬‫می‬‫شود‬‫و‬Lval(D)=0‫می‬‫شود‬.
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
46
‫دوگاني‬ ‫گذاری‬ ‫قفل‬ ‫پروتکل‬
1-‫تراکنش‬Ti‫باید‬‫قبل‬‫از‬‫هر‬‫عمل‬R(D)‫و‬‫یا‬W(D)‫دستور‬Lock(D)‫را‬‫اجرا‬‫کند‬.
2-‫تراکنش‬Ti‫باید‬‫بعد‬‫از‬‫هر‬‫عمل‬R(D)‫و‬‫یا‬W(D)‫دستور‬Unlock(D)‫را‬‫اجرا‬‫کند‬.
3-‫تراکنش‬Ti‫نمی‬‫تواند‬‫درخواست‬‫قفل‬‫روی‬D‫را‬‫بدهد‬‫اگر‬‫از‬‫قبل‬‫روی‬D‫قفل‬‫داشته‬‫باشد‬.
4-‫تراکنش‬Ti‫نمی‬‫تواند‬‫دستور‬Unlock(D)‫را‬‫اجرا‬‫کند‬‫مگر‬‫اینکه‬‫روی‬D‫قفل‬‫داشته‬‫باشد‬.
‫این‬‫پروتکل‬‫بسیار‬‫محدود‬‫کننده‬‫بوده‬‫و‬‫برای‬‫قفل‬،‫گذاری‬‫تفاوتی‬‫بین‬‫عملیات‬‫بر‬‫روی‬‫واحد‬‫های‬‫داده‬‫ای‬
‫قایل‬‫نمی‬‫شود‬.‫بر‬‫اساس‬‫پروتکل‬‫قفل‬‫گذاری‬،‫دوگانی‬‫در‬‫هر‬‫لحظه‬‫فقط‬‫یک‬‫تراکنش‬‫می‬‫تواند‬‫ب‬‫ر‬‫روی‬‫داده‬
‫قفل‬‫داشته‬‫باشد‬.
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
47
‫حالتي‬ ‫چند‬ ‫قفل‬
‫در‬‫تکنیک‬‫قفل‬‫گذاری‬‫چند‬،‫حالتی‬‫دو‬‫نوع‬‫قفل‬‫می‬‫تواند‬‫به‬‫تراکنش‬‫ها‬‫اعطا‬‫شود‬:
‫قفل‬‫اشتراکی‬(Shared Lock)‫که‬‫به‬‫اختصار‬‫به‬S‫نمایش‬‫داده‬‫می‬‫شود‬‫که‬‫به‬،‫آن‬‫قفل‬‫خواندن‬‫نیز‬‫گفته‬
‫می‬‫شود‬.
‫قفل‬‫انحصاری‬(Exclusive Lock)‫که‬‫به‬X‫نمایش‬‫داده‬‫می‬‫شود‬‫و‬‫به‬‫قفل‬‫نوشتن‬‫نیز‬‫موسوم‬‫است‬.
‫اگر‬‫تراکنشی‬‫بر‬‫روی‬‫داده‬‫ی‬D‫قفل‬S‫داشته‬‫باشد‬‫تراکنش‬‫های‬‫دیگر‬‫نیز‬‫می‬‫توانند‬‫بر‬‫روی‬‫داده‬‫ی‬D‫قفل‬
S‫داشته‬‫باشند‬.‫به‬‫این‬‫مفهوم‬‫که‬‫چند‬‫تراکنش‬‫همزمان‬‫می‬‫توانند‬‫داده‬‫ی‬D‫را‬‫بخوانند‬.
‫اگر‬‫تراکنشی‬‫بر‬‫روی‬‫داده‬‫ی‬D‫قفل‬X‫داشته‬‫باشد‬‫فقط‬‫همان‬‫تراکنش‬‫به‬‫صورت‬‫انحصاری‬‫به‬D‫دستیابی‬
‫دارد‬‫و‬‫سایر‬‫تراکنش‬‫ها‬‫هیچ‬‫نوع‬‫قفلی‬‫نمی‬‫توانند‬‫بر‬‫روی‬D‫داشته‬‫باشند‬.
‫عملیات‬‫ممکن‬‫بر‬‫روی‬‫واحدهای‬‫داده‬‫ای‬‫تحت‬‫پروتکل‬‫قفل‬‫گذاری‬‫چند‬‫حالتی‬‫شامل‬‫سه‬‫عملیات‬:
S-Lock(D)‫یا‬R-Lock(D)‫و‬X-Lock(D)‫یا‬W-Lock(D)‫برای‬‫قفل‬‫گذاری‬‫و‬Unlock(D)‫برای‬‫قفل‬
‫گشایی‬‫است‬.
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
48
‫حالتي‬ ‫چند‬ ‫گذاری‬ ‫قفل‬ ‫پروتکل‬
1-‫تراکنش‬Ti‫باید‬‫قبل‬‫از‬‫هر‬‫عمل‬R(D)‫،آنرا‬‫با‬R-Lock(D)‫و‬‫یا‬W-Lock(D)‫قفل‬‫کند‬.
2-‫تراکنش‬Ti‫باید‬‫قبل‬‫از‬‫هر‬‫عمل‬W(D)،‫آنرا‬‫با‬W-Lock(D)‫قفل‬‫کند‬.
3-‫تراکنش‬Ti‫باید‬‫بعد‬‫از‬‫اتمام‬‫هر‬‫عمل‬R(D)‫و‬‫یا‬W(D)‫دستور‬Unlock(D)‫را‬‫اجرا‬‫کند‬.
4-‫تراکنش‬Ti‫نمی‬‫تواند‬‫دستور‬R-Lock(D)‫را‬‫اجرا‬‫کند‬‫اگر‬‫از‬‫قبل‬‫یک‬‫قفل‬S‫یا‬X‫روی‬D‫قفل‬‫داشته‬
‫باشد‬.
5-‫تراکنش‬Ti‫نمی‬‫تواند‬‫دستور‬W-Lock(D)‫را‬‫اجرا‬‫کند‬‫اگر‬‫از‬‫قبل‬‫یک‬‫قفل‬S‫یا‬X‫روی‬D‫قفل‬‫داشته‬
‫باشد‬.
6-‫تراکنش‬Ti‫نمی‬‫تواند‬‫دستور‬Unlock(D)‫را‬‫اجرا‬‫کند‬‫اگر‬‫از‬‫قبل‬‫یک‬‫قفل‬S‫یا‬X‫روی‬D‫قفل‬‫داشته‬
‫باشد‬.
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
49
‫می‬‫توان‬‫قفل‬‫گذاشته‬‫شده‬‫روی‬‫یک‬‫فقره‬‫داده‬‫را‬‫تغییر‬‫داد‬.‫این‬‫تغییر‬‫به‬‫یکی‬‫از‬‫دو‬‫صورت‬‫زیر‬‫م‬‫مکن‬‫است‬:
1-‫تقویت‬‫قفل‬(Lock Upgrading)
2-‫تضعیف‬‫قفل‬(Lock Downgrading)
(‫برای‬‫تقویت‬‫و‬‫تضعیف‬،‫قفل‬‫موارد‬4‫و‬5‫در‬‫پروتکل‬‫نادیده‬‫گرفته‬‫می‬‫شود‬.)
‫برای‬‫تقویت‬،‫قفل‬‫قفل‬‫از‬S‫به‬X‫تغییر‬‫می‬‫یابد‬‫و‬‫برای‬‫تضعیف‬،‫قفل‬‫قفل‬‫از‬X‫به‬S‫تغییر‬‫می‬‫یابد‬.
‫بنابراین‬‫اگر‬‫تراکنش‬Ti‫دستور‬R-Lock(D)‫را‬‫اجرا‬‫کند‬‫و‬‫بعد‬‫بخواهد‬‫دستور‬W-Lock(D)‫را‬‫نیز‬‫اجرا‬‫کند‬
‫اگر‬‫تنها‬‫تراکنشی‬‫باشد‬‫که‬‫روی‬D‫قفل‬‫دارد‬‫می‬‫تواند‬‫درخواست‬‫کند‬‫که‬‫تقویت‬‫قفل‬‫صورت‬‫گیرد‬.
‫تقویت‬‫قفل‬‫در‬‫صورتیکه‬‫تعداد‬‫تراکنش‬‫هایی‬‫که‬‫بر‬‫روی‬‫داده‬‫ی‬D‫قفل‬S‫دارند‬‫بیش‬‫از‬‫یک‬‫تراکنش‬‫باشد‬
‫ایجاد‬‫بن‬‫بست‬‫می‬‫کند‬.
‫حالتي‬ ‫چند‬ ‫قفل‬:‫قفل‬ ‫تغيير‬
‫تکنیک‬‫های‬‫قفل‬‫گذاری‬‫دوگانی‬‫و‬‫چند‬،‫حالتی‬‫قابلیت‬‫سریال‬‫شدن‬‫طرح‬‫های‬‫همروند‬‫را‬‫تضمین‬‫ن‬‫می‬‫کنند‬.
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
50
‫آ‬ ‫انواع‬ ‫و‬ ‫فازی‬ ‫دو‬ ‫گذاری‬ ‫قفل‬ ‫تکنيک‬‫ن‬
‫به‬‫این‬‫دلیل‬‫که‬‫تکنیک‬‫های‬‫قفل‬‫گذاری‬‫دو‬‫گانی‬‫و‬‫چند‬،‫حالتی‬‫قابلیت‬‫سریال‬‫شدن‬‫طرح‬‫های‬‫ه‬‫مروند‬‫را‬
‫تضمین‬‫نمی‬‫کنند‬‫تکنیک‬‫دیگری‬‫به‬‫نام‬‫تکنیک‬‫دو‬‫فازی‬(Two-Phase Locking)‫که‬‫به‬‫اختصار‬‫به‬2PL
‫موسوم‬‫است‬‫در‬‫این‬‫مرحله‬‫مورد‬‫بررسی‬‫قرار‬‫می‬‫گیرد‬.‫هر‬‫طرح‬‫اجرا‬‫که‬‫از‬2PL‫تبعیت‬‫کند‬‫قابلیت‬‫سریال‬
‫شدن‬‫به‬‫صورت‬‫تعارضی‬‫را‬‫داراست‬.‫تکنیک‬‫قفل‬‫گذاری‬‫دو‬‫فازی‬‫دارای‬‫انواع‬‫زیر‬‫است‬:
2PL ‫مبنايي‬
2PL‫کارانه‬ ‫محافظه‬(‫ايست‬‫ا‬)
(Conservative 2PL)
2PL‫شديد‬ (‫سخت‬)
)Strict 2PL(
2PL‫جسورانه‬
(Aggressive 2PL)
2PL‫دقيق‬(‫سخت‬ ‫بسيار‬)
(Rigorous 2PL)
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
51
‫مبن‬ ‫مدل‬ ‫فازی‬ ‫دو‬ ‫گذاری‬ ‫قفل‬ ‫تکنيک‬‫ايي‬
‫زمانی‬‫که‬‫یک‬‫طرح‬‫همروند‬‫از‬‫تکنیک‬‫قفل‬‫گذاری‬‫دو‬‫فازی‬‫مبنایی‬(2PL)‫پیروی‬‫می‬‫کند‬‫که‬‫در‬‫آن‬‫تمام‬
‫قفل‬‫گذاری‬‫ها‬‫قبل‬‫از‬‫اولین‬‫قفل‬‫گشایی‬‫صورت‬‫گیرد‬.‫این‬‫روش‬‫شامل‬‫دو‬‫مرحله‬‫ی‬‫گسترش‬
(Expanding Step)‫و‬‫افت‬(Shrinkage Step)‫است‬‫که‬‫همه‬‫ی‬‫قفل‬‫گذاری‬‫ها‬‫در‬‫مرحله‬‫ی‬‫گسترش‬
‫و‬‫همه‬‫ی‬‫قفل‬‫گشایی‬‫ها‬‫در‬‫مرحله‬‫ی‬‫افت‬‫صورت‬‫می‬‫گیرد‬.‫در‬‫این‬،‫روش‬‫قفل‬‫گذاری‬‫بر‬‫روی‬‫داده‬‫ها‬‫به‬
‫تدریج‬‫که‬‫نیاز‬‫به‬‫دستیابی‬‫به‬‫آنها‬‫توسط‬‫تراکنش‬‫ها‬‫باشد‬‫صورت‬‫می‬‫گیرد‬‫و‬‫قفل‬‫گشایی‬‫از‬‫داده‬‫ها‬‫نیز‬‫به‬
‫تدریج‬‫صورت‬‫می‬‫گیرد‬.
T1 T2
Lock-S(B)
Read(B) Lock-S(A)
Display(B) Read(A)
Lock-X(A) Lock-S(B)
Read(A) Read(B)
A:=A+M Display(A, B)
Write(A) Unlock(A)
Unlock(B) Unlock(B)
Unlock(A)
‫از‬‫آن‬‫جا‬‫که‬‫در‬‫این‬،‫طرح‬‫تمامی‬‫قفل‬‫گذاری‬‫ها‬‫قبل‬‫از‬
‫تمامی‬‫قفل‬‫گشایی‬‫ها‬‫صورت‬‫گرفته‬‫است‬‫این‬‫طرح‬2PL‫را‬
‫رعایت‬‫می‬‫کند‬.
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
52
‫مبنا‬ ‫فازی‬ ‫دو‬ ‫گذاری‬ ‫قفل‬ ‫مشکالت‬‫يي‬
‫همروندی‬ ‫تضعيف‬
‫تسلسلي‬ ‫طرد‬
(Cascading Abort)
‫گرسنگي‬
(Starvation)
‫بست‬ ‫بن‬
(Deadlock)
T1 T2
Lock-X(D)
Lock -X(D) Read(D)
Wait D:=D+100
Wait Write (D)
Wait Unlock(D)
Read(D)
D:=D-10
Write(D)
Unlock(D)
‫این‬‫طرح‬2PL‫را‬‫رعایت‬‫می‬‫کند‬‫اما‬‫رعایت‬2PL‫دراین‬
‫طرح‬‫باعث‬‫کاهش‬‫و‬‫تضعیف‬‫همروندی‬‫می‬‫شود‬‫چرا‬‫که‬
‫تراکنش‬T1‫باید‬‫منتظر‬‫آزاد‬‫شدن‬‫قفل‬‫توسط‬T2‫بماند‬‫و‬
‫نمی‬‫تواند‬‫به‬‫صورت‬‫همروند‬‫در‬‫لحظاتی‬‫که‬‫باید‬‫صبر‬‫کند‬
‫اجرا‬‫شود‬.
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
53
T1 T2
Lock-X(D1)
Read(D1)
Lock-S(D2)
Read(D2)
D1:=D1+D2
Write (D1) Lock-X(D1)
Unlock(D1) Wait
. Read(D1)
. Write(D1)
. Unlock(D1)
. .
Rollback .
.
.
Rollback
‫مبنا‬ ‫فازی‬ ‫دو‬ ‫گذاری‬ ‫قفل‬ ‫مشکالت‬‫يي‬
‫طرح‬S1،2PL‫را‬‫رعایت‬‫می‬‫کند‬‫اما‬‫با‬‫طرد‬‫شدن‬‫یک‬
‫تراکنش‬(‫در‬‫این‬‫مثال‬T1)‫تراکنش‬‫های‬‫دیگر‬‫نیز‬‫به‬‫دلی‬‫ل‬
‫استفاده‬‫از‬‫داده‬‫های‬‫آن‬‫به‬‫صورت‬‫تسلسلی‬‫طرد‬‫می‬‫شو‬‫ند‬
(‫در‬‫این‬‫مثال‬T2‫پس‬‫از‬T1‫طرد‬‫شده‬‫است‬).
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
54
‫مبنا‬ ‫فازی‬ ‫دو‬ ‫گذاری‬ ‫قفل‬ ‫مشکالت‬‫يي‬
‫اگر‬‫تراکنش‬T2‫یک‬‫قفل‬‫اشتراکی‬‫بر‬‫روی‬‫داده‬‫ی‬D‫داشته‬‫باشد‬‫و‬‫تراکنش‬T1‫درخواست‬‫قفل‬‫انحصاری‬‫بر‬
‫روی‬D‫کند‬T1‫باید‬‫منتظر‬‫برداشته‬‫شدن‬‫قفل‬‫توسط‬T2‫بماند‬‫حال‬‫اگر‬‫تراکنش‬T3‫زمانی‬‫که‬T1‫منتظر‬
‫است‬‫درخواست‬‫قفل‬‫اشتراکی‬‫بر‬‫روی‬D‫داشته‬‫باشد‬‫این‬‫قفل‬‫به‬T3‫اعطا‬‫می‬‫شود‬‫و‬‫این‬‫تسلسل‬‫می‬‫تواند‬
‫ادامه‬‫داشته‬‫باشد‬‫بنابراین‬T1‫دچار‬‫گرسنگی‬‫می‬‫شود‬.
‫در‬‫طرح‬S2‫تراکنش‬T1‫برای‬‫قفل‬‫گذاری‬‫از‬
‫نوع‬‫نوشتن‬‫بر‬‫روی‬D2‫باید‬‫منتظر‬‫آزاد‬‫شدن‬
‫قفل‬‫بر‬‫روی‬‫آن‬‫توسط‬T2‫بماند‬‫و‬T2‫نیز‬
‫برای‬‫قفل‬‫گذاری‬‫خواندن‬‫بر‬‫روی‬D1‫باید‬
‫منتظر‬‫آزاد‬‫شدن‬‫قفل‬‫توسط‬T1‫بماند‬‫که‬‫این‬
‫امر‬‫موجب‬‫بروز‬‫بن‬‫بست‬‫می‬‫شود‬.
T1 T2
Lock-X(D1)
Read(D1)
D1:=D1+100
Write (D1)
Lock-S(D2)
Read(D2)
Lock-S(D1)
Wait
Lock-X(D2)
Wait
.
.
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
55
‫ف‬ ‫دو‬ ‫گذاری‬ ‫قفل‬ ‫تکنيک‬ ‫ديگر‬ ‫انواع‬‫ازی‬
‫در‬2PL‫محافظه‬،‫کارانه‬‫تراکنش‬‫باید‬‫قبل‬‫از‬‫شروع‬‫به‬‫اجرا‬‫تمام‬‫داده‬‫های‬‫مورد‬‫نیازش‬‫را‬‫قفل‬‫کند‬.‫بنابراین‬‫اگ‬‫ر‬‫یکی‬‫از‬
‫داده‬‫های‬‫مورد‬‫نیاز‬‫را‬‫نتواند‬‫قفل‬‫کند‬‫سایر‬‫داده‬‫ها‬‫نیز‬‫قفل‬‫نمی‬‫شوند‬.‫با‬‫استفاده‬‫از‬‫راهکار‬FIFO‫تراکنش‬‫ها‬‫به‬‫ترتیب‬
‫زمان‬‫ورودشان‬‫در‬‫صف‬‫می‬‫مانند‬‫و‬‫فقط‬‫آن‬‫دسته‬‫از‬‫درخواست‬‫های‬‫فقل‬‫پذیرفته‬‫می‬‫شود‬‫که‬‫با‬‫قفل‬‫های‬‫موجود‬
‫سازگار‬‫باشد‬.‫در‬‫این‬‫روش‬‫به‬‫این‬‫علت‬‫که‬‫زمان‬‫انتظار‬‫تراکنش‬‫ها‬‫افزایش‬‫می‬‫یابد‬‫ممکن‬‫است‬‫مشکل‬‫قفل‬‫زن‬‫ده‬(Live
Lock)‫پیش‬‫آید‬‫ولی‬‫به‬‫دلیل‬‫عدم‬‫وجود‬،‫رقابت‬‫پدیده‬‫بن‬‫بست‬‫رخ‬‫نمی‬‫دهد‬.
‫در‬2PL،‫شدید‬‫که‬‫رایج‬‫ترین‬‫پروتکل‬‫قفل‬‫گذاری‬‫است‬‫تنها‬‫در‬‫صورتی‬‫قفل‬‫های‬‫انحصاری‬‫گشوده‬‫می‬‫شوند‬‫ک‬‫ه‬‫تراکنش‬
‫به‬‫تثبیت‬‫رسیده‬‫باشد‬‫و‬‫یا‬‫طرد‬‫شده‬‫باشد‬.‫در‬‫این‬‫پروتکل‬‫امکان‬‫بروز‬‫بن‬‫بست‬‫وجود‬‫دارد‬‫اما‬‫طرد‬‫تسلس‬‫لی‬‫هرگز‬‫پیش‬
‫نمی‬‫آید‬.
‫در‬2PL،‫جسورانه‬‫درخواست‬‫قفل‬‫بر‬‫روی‬‫داده‬‫درست‬‫قبل‬‫از‬‫عملیات‬‫خواندن‬‫و‬‫یا‬‫نوشتن‬‫به‬‫سیستم‬‫داده‬‫می‬‫شو‬‫د‬.
‫بنابراین‬‫اگر‬‫پس‬‫از‬‫خواندن‬‫داده‬‫نیاز‬‫باشد‬‫که‬‫داده‬‫نوشته‬‫شود‬‫تشدید‬‫قفل‬‫صورت‬‫می‬‫گیرد‬.‫در‬‫این‬‫پروتک‬‫ل‬‫امکان‬‫بروز‬
‫بن‬‫بست‬‫وجود‬‫دارد‬.‫این‬‫روش‬‫زمانی‬‫کاراست‬‫که‬‫احتمال‬‫اینکه‬‫دو‬‫تراکنش‬‫همزمان‬‫درخواست‬‫قفل‬‫بر‬‫روی‬‫یک‬‫ف‬‫قره‬
‫داده‬‫کنند‬‫ضعیف‬‫باشد‬.
‫در‬2PL،‫دقیق‬‫تمامی‬‫قفل‬‫ها‬‫اعم‬‫از‬‫اشتراکی‬‫و‬‫یا‬‫انحصاری‬‫تا‬‫تثبیت‬‫شدن‬‫تراکنش‬‫حفظ‬‫می‬‫شوند‬.‫بنابرای‬‫ن‬‫طرد‬
‫تسلسلی‬‫پیش‬‫نمی‬‫آید‬‫اما‬‫احتمال‬‫بروز‬‫بن‬‫بست‬‫وجود‬‫دارد‬.
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
56
‫سطحي‬ ‫چند‬ ‫گذاری‬ ‫قفل‬ ‫تکنيک‬
‫همانطور‬‫که‬‫قبال‬‫ذکر‬‫شد‬‫می‬‫توان‬‫در‬‫سیستم‬‫پایگاه‬‫داده‬‫از‬‫چند‬‫واحد‬‫قفل‬‫شدنی‬‫با‬‫اندازه‬‫های‬‫گوناگون‬‫است‬‫فاده‬‫کرد‬.
‫این‬‫راهکار‬‫به‬‫تکنیک‬‫قفل‬‫گذاری‬‫چند‬‫سطحی‬(Multiple Granularity Locking)‫یا‬‫به‬‫اختصار‬MGL‫موسوم‬
‫است‬.‫اندازه‬‫ی‬‫واحد‬‫های‬‫قفل‬‫شدنی‬‫در‬‫یک‬‫سلسله‬‫مراتب‬‫از‬‫پایین‬‫به‬‫باال‬‫به‬‫صورت‬‫صفت‬(‫فیلد‬)،‫تاپل‬(‫رک‬‫ورد‬)،،‫صفحه‬
‫رابطه‬(‫جدول‬)‫و‬‫در‬‫نهایت‬‫کل‬‫پایگاه‬‫داده‬‫ی‬‫رابطه‬‫ای‬‫است‬.
‫در‬‫این‬،‫تکنیک‬‫زمانی‬‫که‬‫تراکنشی‬‫یک‬‫واحد‬‫داده‬‫ای‬‫را‬‫قفل‬‫می‬‫کند‬‫تمامی‬‫سطوح‬‫زیرین‬‫آن‬‫نیز‬‫قفل‬‫می‬‫ش‬‫وند‬.‫مثال‬
‫قفل‬‫بر‬‫روی‬‫یک‬‫رابطه‬‫تمامی‬،‫صفحات‬‫تاپل‬‫ها‬‫و‬‫فیلد‬‫های‬‫رابطه‬‫مزبور‬‫را‬‫نیز‬‫قفل‬‫می‬‫کند‬‫و‬‫اگر‬‫تراکنشی‬‫نیاز‬‫به‬
‫دسترسی‬‫به‬‫سطوح‬‫زیرین‬‫داشته‬‫باشد‬‫باید‬‫به‬‫حالت‬‫انتظار‬‫رود‬.
‫تکنیک‬‫قفل‬‫گذاری‬‫چند‬‫سطحی‬‫باعث‬‫افزایش‬‫همروندی‬‫و‬‫همچنین‬‫افزایش‬‫کارایی‬‫مدیریت‬‫قفل‬‫می‬‫شود‬.‫اگ‬‫ر‬‫تراکنشی‬
‫بخواهد‬‫بر‬‫روی‬‫واحد‬‫داده‬‫ی‬‫کوچکی‬‫مثل‬‫تاپل‬‫قفل‬‫داشته‬‫باشد‬‫و‬‫سیستم‬‫فقط‬‫قادر‬‫به‬‫قفل‬‫گذاری‬‫بر‬‫روی‬‫و‬‫احد‬‫بزرگی‬
‫مثل‬‫رابطه‬‫باشد‬‫واحد‬‫داده‬‫ای‬‫بزرگ‬‫قفل‬‫می‬‫شود‬‫و‬‫در‬‫نتیجه‬‫همروندی‬‫تضعیف‬‫می‬‫گردد‬.‫در‬‫حالت‬‫دیگر‬‫اگر‬‫ت‬‫نها‬‫واحد‬
‫قفل‬‫شدنی‬‫تاپل‬‫باشد‬‫و‬‫تراکنشی‬‫بخواهد‬‫کل‬‫پایگاه‬‫را‬‫قفل‬‫کند‬‫این‬‫تراکنش‬‫باید‬‫به‬‫تعداد‬‫تاپل‬‫ها‬‫ق‬‫فل‬‫درخواست‬‫کند‬.
‫در‬‫نتیجه‬‫با‬‫افزایش‬‫تعداد‬‫قفل‬‫ها‬‫سربار‬‫ناشی‬‫از‬‫مدیریت‬‫قفلها‬‫افزایش‬‫می‬‫یابد‬.
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
57
‫ای‬ ‫نسخه‬ ‫چند‬ ‫گذاری‬ ‫قفل‬
‫در‬‫این‬‫تکنیک‬‫عالوه‬‫بر‬‫نسخه‬‫فعلی‬‫و‬‫مورد‬‫استفاده‬‫از‬،‫داده‬‫حداقل‬‫یک‬‫نسخه‬‫دیگر‬‫نیز‬‫نگهداری‬‫می‬‫شود‬.‫ن‬‫گهداری‬‫از‬
‫نسخه‬‫های‬‫دیگری‬‫از‬‫داده‬‫ها‬‫در‬‫سیستم‬‫پایگاه‬‫داده‬‫امری‬‫متداول‬‫است‬‫که‬‫در‬‫درس‬‫ترمیم‬‫به‬‫آن‬‫اشاره‬‫خواهد‬‫شد‬.
‫بنابراین‬‫اگر‬‫یک‬‫تراکنش‬‫قصد‬‫خواندن‬‫داده‬‫ای‬‫را‬‫داشته‬‫باشد‬‫که‬‫تراکنش‬‫دیگر‬‫بر‬‫روی‬‫آن‬‫یک‬‫قفل‬‫ناساز‬‫گار‬‫با‬‫این‬
‫درخواست‬‫خواندن‬،‫دارد‬‫دیگر‬‫نسخه‬‫موجود‬‫در‬‫اختیار‬‫تراکنش‬‫درخواست‬‫کننده‬‫قرار‬‫می‬‫گیرد‬.
‫زمانی‬‫از‬‫تکنیک‬‫قفل‬‫گذاری‬‫از‬‫نوع‬‫چند‬‫نسخه‬‫سازی‬‫استفاده‬‫می‬‫شود‬‫که‬‫اندازه‬‫ی‬‫واحد‬‫قفل‬‫شدنی‬‫بزرگ‬‫نب‬‫اشد‬.‫یک‬
‫واحد‬‫قفل‬‫شدنی‬‫در‬‫سطح‬‫رکورد‬‫یا‬‫صفحه‬‫برای‬‫کاربرد‬‫این‬‫تکنیک‬‫مناسب‬‫است‬.
‫همچنین‬‫در‬‫کاربردهایی‬‫که‬‫در‬‫آنها‬‫نیاز‬‫به‬‫دسترسی‬‫به‬‫آخرین‬‫نسخه‬‫دقیق‬‫باشد‬‫نمی‬‫توان‬‫از‬‫تکنیک‬‫قفل‬‫گذاری‬‫از‬‫نوع‬
‫چند‬‫نسخه‬‫سازی‬‫استفاده‬‫کرد‬.
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
58
‫کنترل‬‫همروندی‬
(Concurrency Control)
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
59
‫بن‬‫بست‬‫شرایطی‬‫است‬‫که‬‫در‬‫آن‬‫هر‬‫دو‬‫تراکنش‬‫خواستار‬‫دریافت‬‫قفل‬‫بر‬‫روی‬‫داده‬‫ای‬‫هستند‬‫که‬‫تراکنش‬‫دی‬‫گر‬‫بر‬‫روی‬
‫آن‬‫یک‬‫قفل‬‫ناسازگار‬‫دارد‬.‫تعداد‬‫تراکنش‬‫های‬‫درگیر‬‫در‬‫بن‬‫بست‬‫می‬‫تواند‬‫به‬‫صورت‬‫تئوریک‬‫بیش‬‫از‬‫دو‬‫ت‬‫راکنش‬‫باشد‬.
‫برای‬‫حل‬‫مشکل‬‫بن‬‫بست‬‫دو‬‫راه‬‫حل‬‫به‬‫صورت‬‫زیر‬‫وجود‬‫دارد‬:
‫بست‬ ‫بن‬(Deadlock)
Deadlock Prevention
(‫بست‬ ‫بن‬ ‫از‬ ‫گيری‬ ‫پيش‬ ‫های‬ ‫تکنيک‬)
Deadlock Detection
(‫بست‬ ‫بن‬ ‫کشف‬ ‫های‬ ‫تکنيک‬)
‫به‬‫منظور‬‫پیش‬‫گیری‬‫از‬‫وقوع‬‫بن‬،‫بست‬‫تکنیک‬‫هایی‬‫وجود‬‫دارد‬‫که‬‫از‬‫آن‬‫بین‬‫دو‬‫روش‬‫زیر‬‫را‬‫مورد‬‫بررسی‬‫قرا‬‫ر‬‫خواهیم‬
‫داد‬:
Timestamp Techniques
(‫زماني‬ ‫مهر‬ ‫از‬ ‫استفاده‬ ‫های‬ ‫تکنيک‬)
No Waiting & Cautious Waiting
(‫محتاطانه‬ ‫انتظار‬ ‫و‬ ‫انتظار‬ ‫عدم‬ ‫های‬ ‫تکنيک‬)
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
60
‫زماني‬ ‫مهر‬ ‫از‬ ‫استفاده‬ ‫های‬ ‫تکنيک‬
‫مهر‬‫زمانی‬(Timestamp)‫مقداری‬‫است‬‫یکتا‬‫که‬‫توسط‬‫سیستم‬‫به‬‫هر‬‫تراکنش‬‫اختصاص‬‫می‬‫یابد‬‫و‬‫مقداری‬‫است‬‫که‬
‫سیستم‬‫می‬‫تواند‬‫بر‬‫اساس‬‫آن‬‫تراکنش‬‫ها‬‫را‬‫مرتب‬‫کند‬.‫این‬‫مقدار‬‫ترکیبی‬‫است‬‫از‬‫زمان‬‫و‬‫تاریخ‬‫ورود‬‫تراکن‬‫ش‬‫به‬
‫سیستم‬‫و‬‫در‬‫سیستم‬‫های‬‫دارای‬‫پردازنده‬‫های‬،‫موازی‬‫شمارنده‬‫ی‬‫پردازنده‬‫ای‬‫که‬‫تراکنش‬‫به‬‫آن‬‫داده‬‫می‬‫شود‬‫نی‬‫ز‬‫به‬
‫این‬‫ترکیب‬‫افزوده‬‫می‬‫شود‬.‫مقدار‬‫مهر‬‫زمانی‬‫تراکنش‬T‫با‬TS(T)‫نشان‬‫داده‬‫می‬‫شود‬.‫مقدار‬‫مهر‬‫زمان‬‫برای‬‫تراکنشی‬
‫که‬‫زودتر‬‫به‬‫سیستم‬‫عرضه‬‫شده‬‫همواره‬‫کوچکتر‬‫از‬‫مهر‬‫زمانی‬‫تراکنش‬‫های‬‫جدید‬‫تر‬‫است‬‫زیرا‬‫که‬‫تراکنش‬‫ها‬‫ب‬‫ه‬‫ترتیب‬
‫زمان‬‫ورود‬‫به‬‫سیستم‬‫مرتب‬‫می‬‫شوند‬.‫بنابراین‬‫برای‬‫دو‬‫تراکنش‬Ti‫و‬Tj‫که‬‫به‬‫ترتیب‬‫وارد‬‫سیستم‬‫شده‬‫اند‬‫داریم‬:
TS(Ti) < TS(Tj)
‫به‬‫منظور‬‫پیش‬‫گیری‬‫از‬‫وقوع‬‫بن‬‫بست‬‫با‬‫استفاده‬‫از‬‫تکنیک‬‫های‬‫مهر‬‫زمانی‬‫دو‬‫الگوریتم‬‫وجود‬‫دارد‬‫که‬‫عبار‬‫تند‬‫از‬:
Wait - Die
(‫انتظار‬ ‫الگوريتم‬-‫ميرايي‬)
Wound - Wait
(‫جراحت‬ ‫الگوريتم‬-‫انتظار‬)
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
61
‫در‬‫الگوریتم‬‫انتظار‬–‫میرایی‬(Wait - Die)‫که‬‫به‬‫اختصار‬‫به‬WD‫موسوم‬‫است‬‫برای‬‫هر‬‫دو‬‫تراکنش‬‫اگر‬
TS(Ti) < TS(Tj)‫بوده‬‫و‬Ti‫خواستار‬‫دریافت‬‫قفل‬‫بر‬‫روی‬‫داده‬‫ای‬‫است‬‫که‬Tj‫بر‬‫روی‬‫آن‬‫قفل‬‫دارد‬Ti‫باید‬‫منتظر‬
‫بماند‬.‫اما‬‫اگر‬Tj‫خواستار‬‫دریافت‬‫قفل‬‫بر‬‫روی‬‫داده‬‫ای‬‫است‬‫که‬Ti‫بر‬‫روی‬‫آن‬‫قفل‬‫دارد‬Tj‫میرانده‬‫می‬‫شود‬‫که‬‫دیرتر‬
‫با‬‫همان‬‫مقدار‬‫مهر‬‫زمانی‬‫شروع‬‫شود‬‫به‬‫این‬‫دلیل‬‫این‬‫الگوریتم‬‫از‬‫نوع‬‫نابازدارنده‬(Non-Preemptive)‫است‬.
‫انتظار‬ ‫الگوريتم‬-‫ميرايي‬
‫مثال‬:
TS(T1) = 5
TS(T2) = 10
TS(T3) = 15
‫اگر‬T1‫درخواست‬‫دریافت‬‫قفل‬‫بر‬‫روی‬‫داده‬‫ی‬D‫را‬‫داشته‬‫باشد‬‫که‬T2‫بر‬‫روی‬‫آن‬‫قفل‬‫دارد‬T1‫باید‬‫به‬‫حالت‬‫انتظار‬
‫رود‬.‫اما‬‫اگر‬T3‫درخواست‬‫دریافت‬‫قفل‬‫بر‬‫روی‬‫داده‬‫ی‬D‫را‬‫داشته‬‫باشد‬‫که‬T2‫بر‬‫روی‬‫آن‬‫قفل‬‫دارد‬T3‫میرانده‬‫می‬
‫شود‬.
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
62
‫در‬‫الگوریتم‬‫جراحت‬–‫انتظار‬(Wound - Wait)‫که‬‫به‬‫اختصار‬‫به‬WW‫موسوم‬‫است‬‫برای‬‫هر‬‫دو‬‫تراکنش‬‫اگر‬
TS(Ti) < TS(Tj)‫بوده‬‫و‬Ti‫خواستار‬‫دریافت‬‫قفل‬‫بر‬‫روی‬‫داده‬‫ای‬‫است‬‫که‬Tj‫بر‬‫روی‬‫آن‬‫قفل‬‫دارد‬Tj‫نیمه‬‫کاره‬‫پایان‬
‫یافته‬‫و‬‫طرد‬‫می‬‫شود‬‫و‬‫قفل‬‫به‬Ti‫داده‬‫می‬‫شود‬.‫اگر‬Tj‫خواستار‬‫دریافت‬‫قفل‬‫بر‬‫روی‬‫داده‬‫ای‬‫است‬‫که‬Ti‫بر‬‫روی‬‫آن‬
‫قفل‬‫دارد‬Tj‫باید‬‫منتظر‬‫بماند‬.‫این‬‫الگوریتم‬‫به‬‫دلیل‬‫رعایت‬‫حق‬‫تقدم‬‫زمانی‬‫تراکنش‬،‫ها‬‫از‬‫نوع‬‫بازدارنده‬
(Preemptive)‫است‬.
‫جراحت‬ ‫الگوريتم‬-‫انتظار‬
‫مثال‬:
TS(T1) = 5
TS(T2) = 10
TS(T3) = 15
‫اگر‬T1‫درخواست‬‫دریافت‬‫قفل‬‫بر‬‫روی‬‫داده‬‫ی‬D‫را‬‫داشته‬‫باشد‬‫که‬T2‫بر‬‫روی‬‫آن‬‫قفل‬‫دارد‬T2‫نیمه‬‫کاره‬‫پایان‬‫یافته‬
‫و‬‫قفل‬‫به‬T1‫داده‬‫می‬‫شود‬.‫اما‬‫اگر‬T3‫درخواست‬‫دریافت‬‫قفل‬‫بر‬‫روی‬‫داده‬‫ی‬D‫را‬‫داشته‬‫باشد‬‫که‬T2‫بر‬‫روی‬‫آن‬‫قفل‬
‫دارد‬T3‫به‬‫حالت‬‫انتظار‬‫می‬‫رود‬.
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
63
‫محتا‬ ‫انتظار‬ ‫و‬ ‫انتظار‬ ‫عدم‬ ‫های‬ ‫تکنيک‬‫طانه‬
‫در‬‫تکنیک‬‫عدم‬‫انتظار‬(No Waiting)‫که‬‫به‬‫اختصار‬‫به‬NW‫موسوم‬‫است‬‫اگر‬‫تراکنشی‬‫نتواند‬‫بر‬‫روی‬‫داده‬‫ی‬‫مورد‬
‫نظرش‬‫قفل‬‫دریافت‬‫کند‬‫وارد‬‫فاز‬‫انتظار‬‫نمی‬‫گردد‬‫بلکه‬‫نیمه‬‫کامل‬‫پایان‬‫یافته‬‫و‬‫طرد‬(Abort)‫می‬‫شود‬.‫سپس‬‫بعد‬‫از‬
‫مدتی‬‫دوباره‬‫شروع‬‫به‬‫اجرا‬‫و‬‫قبل‬‫از‬‫آن‬‫دوباره‬‫درخواست‬‫دریافت‬‫قفل‬‫می‬‫نماید‬.
‫در‬‫تکنیک‬‫انتظار‬‫محتاطانه‬(Cautious Waiting)‫که‬‫به‬‫اختصار‬‫به‬CW‫موسوم‬‫است‬‫اگر‬‫تراکنش‬Ti‫درخواست‬
‫دریافت‬‫قفل‬‫روی‬‫داده‬‫ای‬‫را‬‫داشته‬‫باشد‬‫که‬‫توسط‬Tj‫قفل‬‫شده‬‫است‬‫در‬‫صورتی‬Ti‫وارد‬‫حالت‬‫انتظار‬‫می‬‫شود‬‫که‬Tj
‫منتظر‬‫داده‬‫ی‬‫دیگری‬‫نباشد‬‫و‬‫گرنه‬Ti‫نیمه‬‫کامل‬‫پایان‬‫یافته‬‫و‬‫طرد‬(Abort)‫می‬‫گردد‬.
‫پيشرفته‬‫داده‬‫پايگاه‬‫کو‬‫ز‬‫و‬‫فیر‬‫واحد‬‫اسالمی‬‫اد‬‫ز‬‫ا‬‫دانشگاه‬‫ر‬‫پو‬‫اسمعیل‬‫یوسف‬‫ه‬
Transactions &amp; concurrency control
Transactions &amp; concurrency control
Transactions &amp; concurrency control
Transactions &amp; concurrency control
Transactions &amp; concurrency control
Transactions &amp; concurrency control
Transactions &amp; concurrency control
Transactions &amp; concurrency control
Transactions &amp; concurrency control
Transactions &amp; concurrency control
Transactions &amp; concurrency control
Transactions &amp; concurrency control
Transactions &amp; concurrency control

More Related Content

What's hot

가상 데이터 센터 만들기 VPC 기본 및 연결 옵션- AWS Summit Seoul 2017
가상 데이터 센터 만들기 VPC 기본 및 연결 옵션- AWS Summit Seoul 2017가상 데이터 센터 만들기 VPC 기본 및 연결 옵션- AWS Summit Seoul 2017
가상 데이터 센터 만들기 VPC 기본 및 연결 옵션- AWS Summit Seoul 2017
Amazon Web Services Korea
 
Lightning Talk: MATH is Hard : TTL Index Configuration and Considerations
Lightning Talk: MATH is Hard : TTL Index Configuration and ConsiderationsLightning Talk: MATH is Hard : TTL Index Configuration and Considerations
Lightning Talk: MATH is Hard : TTL Index Configuration and Considerations
MongoDB
 
Track 1 Session 3_建構安全高效的電子設計自動化環境
Track 1 Session 3_建構安全高效的電子設計自動化環境Track 1 Session 3_建構安全高效的電子設計自動化環境
Track 1 Session 3_建構安全高效的電子設計自動化環境
Amazon Web Services
 

What's hot (20)

Using galera replication to create geo distributed clusters on the wan
Using galera replication to create geo distributed clusters on the wanUsing galera replication to create geo distributed clusters on the wan
Using galera replication to create geo distributed clusters on the wan
 
Evolution of MySQL Parallel Replication
Evolution of MySQL Parallel Replication Evolution of MySQL Parallel Replication
Evolution of MySQL Parallel Replication
 
[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정
[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정
[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정
 
MySQL 상태 메시지 분석 및 활용
MySQL 상태 메시지 분석 및 활용MySQL 상태 메시지 분석 및 활용
MySQL 상태 메시지 분석 및 활용
 
가상 데이터 센터 만들기 VPC 기본 및 연결 옵션- AWS Summit Seoul 2017
가상 데이터 센터 만들기 VPC 기본 및 연결 옵션- AWS Summit Seoul 2017가상 데이터 센터 만들기 VPC 기본 및 연결 옵션- AWS Summit Seoul 2017
가상 데이터 센터 만들기 VPC 기본 및 연결 옵션- AWS Summit Seoul 2017
 
Fast Data at Scale with Amazon ElastiCache for Redis
Fast Data at Scale with Amazon ElastiCache for RedisFast Data at Scale with Amazon ElastiCache for Redis
Fast Data at Scale with Amazon ElastiCache for Redis
 
Lightning Talk: MATH is Hard : TTL Index Configuration and Considerations
Lightning Talk: MATH is Hard : TTL Index Configuration and ConsiderationsLightning Talk: MATH is Hard : TTL Index Configuration and Considerations
Lightning Talk: MATH is Hard : TTL Index Configuration and Considerations
 
Track 1 Session 3_建構安全高效的電子設計自動化環境
Track 1 Session 3_建構安全高效的電子設計自動化環境Track 1 Session 3_建構安全高效的電子設計自動化環境
Track 1 Session 3_建構安全高效的電子設計自動化環境
 
SQL Transactions - What they are good for and how they work
SQL Transactions - What they are good for and how they workSQL Transactions - What they are good for and how they work
SQL Transactions - What they are good for and how they work
 
La collaboration dans Exchange : comparaison on premises et online
La collaboration dans Exchange : comparaison on premises et onlineLa collaboration dans Exchange : comparaison on premises et online
La collaboration dans Exchange : comparaison on premises et online
 
[Pgday.Seoul 2020] SQL Tuning
[Pgday.Seoul 2020] SQL Tuning[Pgday.Seoul 2020] SQL Tuning
[Pgday.Seoul 2020] SQL Tuning
 
Lightweight Transactions in Scylla versus Apache Cassandra
Lightweight Transactions in Scylla versus Apache CassandraLightweight Transactions in Scylla versus Apache Cassandra
Lightweight Transactions in Scylla versus Apache Cassandra
 
Oracle Database Management - Backup/Recovery
Oracle Database Management - Backup/RecoveryOracle Database Management - Backup/Recovery
Oracle Database Management - Backup/Recovery
 
Percona server for MySQL 제품 소개
Percona server for MySQL 제품 소개Percona server for MySQL 제품 소개
Percona server for MySQL 제품 소개
 
Implementing an Open Source IT Ticketing System at Queen's University Library
Implementing an Open Source IT Ticketing System at Queen's University LibraryImplementing an Open Source IT Ticketing System at Queen's University Library
Implementing an Open Source IT Ticketing System at Queen's University Library
 
AWS re:Invent 2016: Amazon Aurora Best Practices: Getting the Best Out of You...
AWS re:Invent 2016: Amazon Aurora Best Practices: Getting the Best Out of You...AWS re:Invent 2016: Amazon Aurora Best Practices: Getting the Best Out of You...
AWS re:Invent 2016: Amazon Aurora Best Practices: Getting the Best Out of You...
 
MySQL NDB Cluster 8.0 SQL faster than NoSQL
MySQL NDB Cluster 8.0 SQL faster than NoSQL MySQL NDB Cluster 8.0 SQL faster than NoSQL
MySQL NDB Cluster 8.0 SQL faster than NoSQL
 
Inside PostgreSQL Shared Memory
Inside PostgreSQL Shared MemoryInside PostgreSQL Shared Memory
Inside PostgreSQL Shared Memory
 
Amazon DocumentDB vs MongoDB 의 내부 아키텍쳐 와 장단점 비교
Amazon DocumentDB vs MongoDB 의 내부 아키텍쳐 와 장단점 비교Amazon DocumentDB vs MongoDB 의 내부 아키텍쳐 와 장단점 비교
Amazon DocumentDB vs MongoDB 의 내부 아키텍쳐 와 장단점 비교
 
PostgreSQL
PostgreSQLPostgreSQL
PostgreSQL
 

Similar to Transactions &amp; concurrency control

معرفي فايروال پايگاه داده
معرفي فايروال پايگاه دادهمعرفي فايروال پايگاه داده
معرفي فايروال پايگاه داده
Hamid Torkashvand
 

Similar to Transactions &amp; concurrency control (20)

Bi and data mining with Oracle
Bi and data mining with OracleBi and data mining with Oracle
Bi and data mining with Oracle
 
Sql tuning
Sql tuningSql tuning
Sql tuning
 
Introduction to Hadoop and Spark - اسلاید کارگاه آموزش هدوپ و اسپارک شیراز
Introduction to Hadoop and Spark - اسلاید کارگاه آموزش هدوپ و اسپارک شیرازIntroduction to Hadoop and Spark - اسلاید کارگاه آموزش هدوپ و اسپارک شیراز
Introduction to Hadoop and Spark - اسلاید کارگاه آموزش هدوپ و اسپارک شیراز
 
1st Hadoop Tehran Workshop - اسلاید اولین کارگاه آموزش هدوپ تهران
1st Hadoop Tehran Workshop - اسلاید اولین کارگاه آموزش هدوپ تهران1st Hadoop Tehran Workshop - اسلاید اولین کارگاه آموزش هدوپ تهران
1st Hadoop Tehran Workshop - اسلاید اولین کارگاه آموزش هدوپ تهران
 
معرفي فايروال پايگاه داده
معرفي فايروال پايگاه دادهمعرفي فايروال پايگاه داده
معرفي فايروال پايگاه داده
 
Software Engineering - Project Management - مهندسی نرم افزار - مدیریت پروژه
Software Engineering - Project Management - مهندسی نرم افزار - مدیریت پروژهSoftware Engineering - Project Management - مهندسی نرم افزار - مدیریت پروژه
Software Engineering - Project Management - مهندسی نرم افزار - مدیریت پروژه
 
Keydoc presentation (1)
Keydoc presentation (1)Keydoc presentation (1)
Keydoc presentation (1)
 
Redis.
Redis.Redis.
Redis.
 
DB Indexing
DB IndexingDB Indexing
DB Indexing
 
Neu ir data mining ghavidel 10 08 1398
Neu ir   data mining ghavidel 10 08 1398Neu ir   data mining ghavidel 10 08 1398
Neu ir data mining ghavidel 10 08 1398
 
Repository pattern
Repository patternRepository pattern
Repository pattern
 
مسیردهی و پروتوکولهای مسیریابی
مسیردهی و پروتوکولهای مسیریابیمسیردهی و پروتوکولهای مسیریابی
مسیردهی و پروتوکولهای مسیریابی
 
Cisco Exploration 2 In Persion-Muhibullah Aman
Cisco Exploration 2 In Persion-Muhibullah AmanCisco Exploration 2 In Persion-Muhibullah Aman
Cisco Exploration 2 In Persion-Muhibullah Aman
 
Introduction to oracle
Introduction to oracleIntroduction to oracle
Introduction to oracle
 
Docker
DockerDocker
Docker
 
Faraz help
Faraz helpFaraz help
Faraz help
 
Microsoft BI Sumery
Microsoft BI SumeryMicrosoft BI Sumery
Microsoft BI Sumery
 
Database Model
Database ModelDatabase Model
Database Model
 
Neu ir data mining ghavidel 10 08 1398
Neu ir   data mining ghavidel 10 08 1398Neu ir   data mining ghavidel 10 08 1398
Neu ir data mining ghavidel 10 08 1398
 
Software methodologies, Chapter 29, Kaizen
Software methodologies, Chapter 29, KaizenSoftware methodologies, Chapter 29, Kaizen
Software methodologies, Chapter 29, Kaizen
 

Transactions &amp; concurrency control