تکنيک های قفل گذاری

Download Report

Transcript تکنيک های قفل گذاری

Slide 1

‫کنترل همروندی(‪)1‬‬
‫)‪(Concurrency Control‬‬

‫مدرس‪ :‬دکتر فاطمه احمدی آبکناری‬
‫بهار ‪1392‬‬


Slide 2

‫تکنيک های کنترل همروندی‬
‫اجرای همروند تراکنش ها باعث افزايش کارايی سيستم می شود‪ .‬از طرف ديگر هر مدل اجرای همروندی از تراکنش‬
‫ها صحيح نيست و مدلی درست است که قابليت سريال شدن داشته باشد‪ .‬از اين رو برای تضمين قابليت سريال‬
‫شدن تراکنش های درگير در يک اجرای همروند‪ ،‬از تکنيک های کنترل همروندی استفاده می شود که عبارتند از‪:‬‬

‫‪Locking Techniques‬‬
‫(تکنيک های قفل گذاری)‬

‫‪Timestamping Technique‬‬
‫(تکنيک ُمهر زمانی)‬

‫‪Multiversioning Technique‬‬
‫(تکنيک چند نسخه سازی)‬

‫‪Certification Technique‬‬
‫(تکنيک تاييد)‬

‫تکنيک های کنترل همروندی به دو دسته ی تکنيک های بدبينانه (‪ )Pessimistic‬و تکنيک های خوشبينانه‬
‫(‪ )Optimistic‬تقسيم می شوند‪ .‬تکنيک های قفل گذاری ماهيت بدبينانه دارند حال آنکه ساير تکنيک ها به‬
‫صورت خوشبينانه عمل می کنند‪.‬‬

‫‪2‬‬


Slide 3

‫تکنيک های قفل گذاری‬
‫قفل (‪ )Lock‬بر روی يک آيتم يا يک قلم داده ای به معنی مجوز دستيابی يک تراکنش به آن قلم داده ای است‬
‫که توسط زير سيستم قفل گذاری در سيستم مديريت پايگاه داده ها به تراکنش ها اعطا شده (‪ )Grant‬و يا از آنها‬
‫بازپس گرفته می شود‪ .‬بنابراين می توان گفت که قفل بر روی يک واحد داده ای‪ ،‬متغيری است که وضع آن واحد‬
‫داده ای را نسبت به عمل قابل انجام بر روی آن (‪ Read‬يا ‪ )Write‬مشخص می کند‪.‬‬
‫اندازه ی واحد قفل شدنی (‪ )Lock Granularity‬در سيستم های مختلف متفاوت است‪ .‬يک واحد داده ای‬
‫قفل پذير می تواند يک رکورد‪ ،‬فيلد‪ ،‬جدول (رابطه)‪ ،‬يک بالک‪ ،‬يک فايل و يا تمام پايگاه داده باشد‪ .‬اگرچه در‬
‫بعض ی از سيستم ها از چند اندازه برای واحد قفل شدنی استفاده می شود‪ .‬همچنين اندازه ی واحد قفل شدنی‬
‫گاهی می تواند به صورت پويا تغيير کند‪ .‬ريزی اين واحد را می توان ارتقا (‪ )Lock Escalation‬داد و به عنوان‬
‫مثال قفل در سطح تاپل را به قفل در سطح رابطه تبديل کرد‪.‬‬
‫در صورت کوچک بودن اندازه ی واحد قفل شدنی‪ ،‬تعداد واحد ها در سيستم زياد و سربار سيستم که ناش ی از‬
‫مديريت قفل هاست نيز افزايش می يابد‪ .‬در اين صورت ميزان همروندی تراکنش ها افزايش يافته و احتمال تداخل‬
‫آنها کاهش می يابد‪.‬‬

‫‪3‬‬


Slide 4

‫تکنيک های قفل گذاری‬
‫ساختار قفل‪ :‬اين ساختار شامل فيلد های شناسه ی قفل‪ ،‬نوع قفل (متناظر با عمليات مورد نظر)‪ ،‬مقدار قفل‬
‫(مقدار مجاز که گاه به صورت باينری است) و شناسه ی تراکنش (که قفل به آن اعطا می شود) می باشد‪.‬‬
‫در سيستم مديريت پايگاه داده‪ ،‬مدير قفل (‪ )Lock Manager‬که قفل ها را در اختيار تراکنش ها می گذارد و يا‬
‫از آنها بازپس می گيرد ممکن است قفل ها را به صورت ايستا و يا پويا در اختيار تراکنش ها قرار دهد‪ .‬در حالت‬
‫پويا‪ ،‬مدير قفل به اعطای قفل به تراکنش در صورت درخواست تراکنش در حين اجرای آن اقدام می نمايد در‬
‫صورتيکه در حالت ايستا‪ ،‬قفل های مورد نياز قبل از اجرای يک تراکنش شناخته شده و توسط مدير قفل اعطا‬
‫می شود‪.‬‬
‫انواع قفل‪ :‬قفل ها در حالت کلی به دودسته ی قفل دوگانی (‪ )Binary Lock‬و قفل چند حالتی (‪Multi-‬‬
‫‪ )mode Lock‬تقسيم می شوند‪ .‬نوع خاص ديگری از قفل تحت عنوان چفت (‪ )Latch‬وجود دارد که تنها‬
‫برای زمان کوتاهی گذاشته می شود مانند چفت بر روی يک صفحه در زمان انتقال آن صفحه از بافر به ديسک‪.‬‬
‫تکنيک های ديگر قفل گذاری شامل قفل گذاری دو فازی‪ ،‬قفل گذاری چند سطحی و قفل گذاری چند نسخه ای‬
‫هستند‪.‬‬

‫‪4‬‬


Slide 5

‫قفل دوگانی‬
‫اين قفل‪ ،‬يک متغير دو مقداری است که با ‪ Lval‬نمايش داده می شود و يکی از دو مقدار ‪ 0‬و يا ‪ 1‬می گيرد‪.‬‬
‫بنابراين در صورتيکه مقدار اين متغير برای يک فقره داده ای ‪ 1‬باشد يعنی آن واحد داده ای قفل شده و دستيابی‬
‫به آن برای تراکنش های غير از تراکنش دارنده قفل ممکن نيست‪ .‬در صورتيکه مقدار اين متغير برای يک واحد‬
‫داده ای ‪ 0‬باشد آن واحد قفل نشده و دستيابی به آن برای تراکنش ها امکان پذير است‪.‬‬

‫عمليات ممکن بر روی واحدهای داده ای تحت پروتکل قفل گذاری دوگانی شامل دو عمليات )‪ 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‬می شود‪.‬‬

‫‪5‬‬


Slide 6

‫پروتکل قفل گذاری دوگانی‬
‫‪ -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‬قفل داشته باشد‪.‬‬
‫اين پروتکل بسيار محدود کننده بوده و برای قفل گذاری‪ ،‬تفاوتی بين عمليات بر روی واحد های داده ای‬
‫قايل نمی شود‪ .‬بر اساس پروتکل قفل گذاری دوگانی‪ ،‬در هر لحظه فقط يک تراکنش می تواند بر روی‬
‫داده قفل داشته باشد‪.‬‬

‫‪6‬‬


Slide 7

‫قفل چند حالتی‬
‫در تکنيک قفل گذاری چند حالتی‪ ،‬دو نوع قفل می تواند به تراکنش ها اعطا شود‪:‬‬
‫ قفل اشتراکی (‪ )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‬برای‬
‫قفل گشايی است‪.‬‬

‫‪7‬‬


Slide 8

‫پروتکل قفل گذاری چند حالتی‬
‫‪ -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‬قفل داشته‬
‫باشد‪.‬‬

‫‪8‬‬


Slide 9

‫قفل چند حالتی‪ :‬تغيير قفل‬
‫می توان قفل گذاشته شده روی يک فقره داده را تغيير داد‪ .‬اين تغيير به يکی از دو صورت زير ممکن است‪:‬‬
‫‪ -1‬تقويت قفل (‪)Lock Upgrading‬‬
‫‪ -2‬تضعيف قفل (‪)Lock Downgrading‬‬
‫(برای تقويت و تضعيف قفل‪ ،‬موارد ‪4‬و ‪ 5‬در پروتکل ناديده گرفته می شود‪).‬‬
‫برای تقويت قفل‪ ،‬قفل از ‪ S‬به ‪ X‬تغيير می يابد و برای تضعيف قفل‪ ،‬قفل از ‪ X‬به ‪ S‬تغيير می يابد‪.‬‬
‫بنابراين اگر تراکنش ‪ Ti‬دستور )‪ R-Lock(D‬را اجرا کند و بعد بخواهد دستور )‪ W-Lock(D‬را نيز اجرا کند‬
‫اگر تنها تراکنش ی باشد که روی ‪ D‬قفل دارد می تواند درخواست کند که تقويت قفل صورت گيرد‪.‬‬
‫تقويت قفل در صورتيکه تعداد تراکنش هايی که بر روی داده ی ‪ D‬قفل ‪ S‬دارند بيش از يک تراکنش باشد ايجاد‬
‫بن بست می کند ( بن بست در درس بعد مورد بررس ی قرار خواهد گرفت)‪.‬‬

‫تکنيک های قفل گذاری دوگانی و چند حالتی‪ ،‬قابليت سريال شدن طرح های همروند را تضمين نمی کنند‪.‬‬

‫‪9‬‬


Slide 10

‫تکنيک قفل گذاری دو فازی و انواع آن‬
‫به اين دليل که تکنيک های قفل گذاری دو گانی و چند حالتی‪ ،‬قابليت سريال شدن طرح های همروند را تضمين‬
‫نمی کنند تکنيک ديگری به نام تکنيک دو فازی (‪ )Two-Phase Locking‬که به اختصار به ‪ 2PL‬موسوم‬
‫است در اين مرحله مورد بررس ی قرار می گيرد‪ .‬هر طرح اجرا که از ‪ 2PL‬تبعيت کند قابليت سريال شدن به‬
‫صورت تعارض ی را داراست‪ .‬تکنيک قفل گذاری دو فازی دارای انواع زير است‪:‬‬

‫‪ 2PL‬مبنايی‬
‫‪ 2PL‬محافظه کارانه (ايستا)‬
‫(‪)Conservative 2PL‬‬

‫‪ 2PL‬جسورانه‬
‫(‪)Aggressive 2PL‬‬

‫‪10‬‬

‫‪ 2PL‬شديد (سخت)‬
‫(‪)Strict 2PL‬‬

‫‪ 2PL‬دقيق (بسيار سخت)‬
‫(‪)Rigorous 2PL‬‬


Slide 11

‫تکنيک قفل گذاری دو فازی مدل مبنايي‬
‫زمانی که يک طرح همروند از تکنيک قفل گذاری دو فازی مبنايی (‪ )2PL‬پيروی می کند که در آن تمام قفل گذاری‬
‫ها قبل از اولين قفل گشايی صورت گيرد‪ .‬اين روش شامل دو مرحله ی گسترش (‪ )Expanding Step‬و افت‬
‫(‪ )Shrinkage Step‬است که همه ی قفل گذاری ها در مرحله ی گسترش و همه ی قفل گشايی ها در مرحله ی‬
‫افت صورت می گيرد‪ .‬در اين روش‪ ،‬قفل گذاری بر روی داده ها به تدريج که نياز به دستيابی به آنها توسط تراکنش‬
‫ها باشد صورت می گيرد و قفل گشايی از داده ها نيز به تدريج صورت می گيرد‪.‬‬
‫‪T2‬‬

‫از آن جا که در اين طرح‪ ،‬تمامی قفل گذاری ها قبل از تمامی‬
‫قفل گشايی ها صورت گرفته است اين طرح ‪ 2PL‬را رعايت‬
‫می کند‪.‬‬

‫‪11‬‬

‫)‪Lock-S(A‬‬
‫)‪Read(A‬‬
‫)‪Lock-S(B‬‬
‫)‪Read(B‬‬
‫)‪Display(A, B‬‬
‫)‪Unlock(A‬‬
‫)‪Unlock(B‬‬

‫‪T1‬‬

‫)‪Lock-S(B‬‬
‫)‪Read(B‬‬
‫)‪Display(B‬‬
‫)‪Lock-X(A‬‬
‫)‪Read(A‬‬
‫‪A:=A+M‬‬
‫)‪Write(A‬‬
‫)‪Unlock(B‬‬
‫)‪Unlock(A‬‬


Slide 12

‫مشکالت قفل گذاری دو فازی مبنايی‬
‫تضعيف همروندی‬

‫طرد تسلسلی‬
‫(‪)Cascading Abort‬‬

‫بن بست‬
‫(‪)Deadlock‬‬

‫گرسنگی‬
‫(‪)Starvation‬‬
‫‪T2‬‬

‫اين طرح ‪ 2PL‬را رعايت می کند اما رعايت ‪ 2PL‬دراين طرح‬
‫باعث کاهش و تضعيف همروندی می شود چرا که تراکنش ‪T1‬‬
‫بايد منتظر آزاد شدن قفل توسط ‪ T2‬بماند و نمی تواند به‬
‫صورت همروند در لحظاتی که بايد صبر کند اجرا شود‪.‬‬

‫‪12‬‬

‫)‪Lock-X(D‬‬
‫)‪Read(D‬‬
‫‪D:=D+100‬‬
‫)‪Write (D‬‬
‫)‪Unlock(D‬‬

‫‪T1‬‬
‫)‪Lock -X(D‬‬
‫‪Wait‬‬
‫‪Wait‬‬
‫‪Wait‬‬
‫)‪Read(D‬‬
‫‪D:=D-10‬‬
‫)‪Write(D‬‬
‫)‪Unlock(D‬‬


Slide 13

‫مشکالت قفل گذاری دو فازی مبنايی‬
‫‪T2‬‬

‫طرح ‪ 2PL ،S1‬را رعايت می کند اما با طرد شدن يک تراکنش‬
‫(در اين مثال ‪ )T1‬تراکنش های ديگر نيز به دليل استفاده از‬
‫داده های آن به صورت تسلسلی طرد می شوند (در اين مثال‬
‫‪ T2‬پس از ‪ T1‬طرد شده است)‪.‬‬

‫‪13‬‬

‫)‪Lock-X(D1‬‬
‫‪Wait‬‬
‫)‪Read(D1‬‬
‫)‪Write(D1‬‬
‫)‪Unlock(D1‬‬
‫‪.‬‬
‫‪.‬‬
‫‪.‬‬
‫‪.‬‬
‫‪Rollback‬‬

‫‪T1‬‬
‫)‪Lock-X(D1‬‬
‫)‪Read(D1‬‬
‫)‪Lock-S(D2‬‬
‫)‪Read(D2‬‬
‫‪D1:=D1+D2‬‬
‫)‪Write (D1‬‬
‫)‪Unlock(D1‬‬
‫‪.‬‬
‫‪.‬‬
‫‪.‬‬
‫‪.‬‬
‫‪Rollback‬‬


Slide 14

‫مشکالت قفل گذاری دو فازی مبنايی‬
‫در طرح ‪ S2‬تراکنش ‪ T1‬برای قفل گذاری از‬
‫نوع نوشتن بر روی ‪ D2‬بايد منتظر آزاد شدن‬
‫قفل بر روی آن توسط ‪T2‬بماند و ‪ T2‬نيز‬
‫برای قفل گذاری خواندن بر روی ‪ D1‬بايد‬
‫منتظر آزاد شدن قفل توسط ‪ T1‬بماند که اين‬
‫امر موجب بروز بن بست می شود‪.‬‬
‫(پديده ی بن بست در درس بعد به تفضيل‬
‫مورد بررس ی قرار خواهد گرفت‪).‬‬

‫‪T2‬‬

‫‪T1‬‬
‫)‪Lock-X(D1‬‬
‫)‪Read(D1‬‬
‫‪D1:=D1+100‬‬
‫)‪Write (D1‬‬

‫)‪Lock-S(D2‬‬
‫)‪Read(D2‬‬
‫)‪Lock-S(D1‬‬
‫‪Wait‬‬
‫)‪Lock-X(D2‬‬
‫‪Wait‬‬
‫‪.‬‬
‫‪.‬‬

‫اگر تراکنش ‪ T2‬يک قفل اشتراکی بر روی داده ی ‪ D‬داشته باشد و تراکنش ‪ T1‬درخواست قفل انحصاری بر روی ‪ D‬کند ‪T1‬‬
‫بايد منتظر برداشته شدن قفل توسط ‪ T2‬بماند حال اگر تراکنش ‪ T3‬زمانی که ‪ T1‬منتظر است درخواست قفل اشتراکی بر روی‬
‫‪ D‬داشته باشد اين قفل به ‪ T3‬اعطا می شود و اين تسلسل می تواند ادامه داشته باشد بنابراين ‪ T1‬دچار گرسنگی می شود‪.‬‬

‫‪14‬‬


Slide 15

‫انواع ديگر تکنيک قفل گذاری دو فازی‬
‫در ‪ 2PL‬محافظه کارانه‪ ،‬تراکنش بايد قبل از شروع به اجرا تمام داده های مورد نيازش را قفل کند‪ .‬بنابراين اگر يکی از داده‬
‫های مورد نياز را نتواند قفل کند ساير داده ها نيز قفل نمی شوند‪ .‬با استفاده از راهکار ‪ FIFO‬تراکنش ها به ترتيب زمان‬
‫ورودشان در صف می مانند و فقط آن دسته از درخواست های فقل پذيرفته می شود که با قفل های موجود سازگار باشد‪ .‬در‬
‫اين روش به اين علت که زمان انتظار تراکنش ها افزايش می يابد ممکن است مشکل قفل زنده (‪ )Live Lock‬پيش آيد ولی به‬
‫دليل عدم وجود رقابت‪ ،‬پديده بن بست رخ نمی دهد‪.‬‬
‫در ‪ 2PL‬شديد‪ ،‬که رايج ترين پروتکل قفل گذاری است تنها در صورتی قفل های انحصاری گشوده می شوند که تراکنش به‬
‫تثبيت رسيده باشد و يا طرد شده باشد‪ .‬در اين پروتکل امکان بروز بن بست وجود دارد اما طرد تسلسلی هرگز پيش نمی آيد‪.‬‬
‫در ‪ 2PL‬جسورانه‪ ،‬درخواست قفل بر روی داده درست قبل از عمليات خواندن و يا نوشتن به سيستم داده می شود‪ .‬بنابراين‬
‫اگر پس از خواندن داده نياز باشد که داده نوشته شود تشديد قفل صورت می گيرد‪ .‬در اين پروتکل امکان بروز بن بست وجود‬
‫دارد‪ .‬اين روش زمانی کاراست که احتمال اينکه دو تراکنش همزمان درخواست قفل بر روی يک فقره داده کنند ضعيف باشد‪.‬‬
‫در ‪ 2PL‬دقيق‪ ،‬تمامی قفل ها اعم از اشتراکی و يا انحصاری تا تثبيت شدن تراکنش حفظ می شوند‪ .‬بنابراين طرد تسلسلی‬
‫پيش نمی آيد اما احتمال بروز بن بست وجود دارد‪.‬‬

‫‪15‬‬


Slide 16

‫تکنيک قفل گذاری چند سطحی‬
‫همانطور که قبال ذکر شد می توان در سيستم پايگاه داده از چند واحد قفل شدنی با اندازه های گوناگون استفاده‬
‫کرد‪ .‬اين راهکار به تکنيک قفل گذاری چند سطحی (‪ )Multiple Granularity Locking‬يا به اختصار‬
‫‪ MGL‬موسوم است‪ .‬اندازه ی واحد های قفل شدنی در يک سلسله مراتب از پايين به بال به صورت صفت‬
‫(فيلد)‪ ،‬تاپل (رکورد)‪ ،‬صفحه‪ ،‬رابطه (جدول) و در نهايت کل پايگاه داده ی رابطه ای است‪.‬‬
‫در اين تکنيک‪ ،‬زمانی که تراکنش ی يک واحد داده ای را قفل می کند تمامی سطوح زيرين آن نيز قفل می شوند‪ .‬مثال‬
‫قفل بر روی يک رابطه تمامی صفحات‪ ،‬تاپل ها و فيلد های رابطه مزبور را نيز قفل می کند و اگر تراکنش ی نياز به‬
‫دسترس ی به سطوح زيرين داشته باشد بايد به حالت انتظار رود‪.‬‬
‫تکنيک قفل گذاری چند سطحی باعث افزايش همروندی و همچنين افزايش کارايی مديريت قفل می شود‪ .‬اگر‬
‫تراکنش ی بخواهد بر روی واحد داده ی کوچکی مثل تاپل قفل داشته باشد و سيستم فقط قادر به قفل گذاری بر‬
‫روی واحد بزرگی مثل رابطه باشد واحد داده ای بزرگ قفل می شود و در نتيجه همروندی تضعيف می گردد‪ .‬در‬
‫حالت ديگر اگر تنها واحد قفل شدنی تاپل باشد و تراکنش ی بخواهد کل پايگاه را قفل کند اين تراکنش بايد به تعداد‬
‫تاپل ها قفل درخواست کند‪ .‬در نتيجه با افزايش تعداد قفل ها سربار ناش ی از مديريت قفلها افزايش می يابد‪.‬‬

‫‪16‬‬


Slide 17

‫قفل گذاری چند نسخه ای‬
‫در اين تکنيک عالوه بر نسخه فعلی و مورد استفاده از داده‪ ،‬حداقل يک نسخه ديگر نيز نگهداری می شود‪ .‬نگهداری‬
‫از نسخه های ديگری از داده ها در سيستم پايگاه داده امری متداول است که در درس ترميم به آن اشاره خواهد‬
‫شد‪.‬‬
‫بنابراين اگر يک تراکنش قصد خواندن داده ای را داشته باشد که تراکنش ديگر بر روی آن يک قفل ناسازگار با اين‬
‫درخواست خواندن دارد‪ ،‬ديگر نسخه موجود در اختيار تراکنش درخواست کننده قرار می گيرد‪.‬‬
‫زمانی از تکنيک قفل گذاری از نوع چند نسخه سازی استفاده می شود که اندازه ی واحد قفل شدنی بزرگ نباشد‪.‬‬
‫يک واحد قفل شدنی در سطح رکورد يا صفحه برای کاربرد اين تکنيک مناسب است‪.‬‬
‫همچنين در کاربردهايی که در آنها نياز به دسترس ی به آخرين نسخه دقيق باشد نمی توان از تکنيک قفل گذاری از نوع‬
‫چند نسخه سازی استفاده کرد‪.‬‬

‫تکنيک های مهر زمانی و تاييد در درس بعد مورد بحث قرار‬
‫خواهد گرفت‪.‬‬

‫‪17‬‬


Slide 18

‫برای مطالعه بيشتر‬

1- Database Systems An Application Oriented Approach
Chapter 20, Implementing Isolation.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.

.)‫ سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها‬-2
.‫ تکنيک های کنترل همروندی‬،‫فصل سوم‬
.‫ سيد محمد تقی روحانی رانکوهی‬:‫تاليف‬
.1386 ،13 ‫ مجموعه دانش و فن کامپيوتر‬،‫انتشارات جلوه‬

18