1 / 34

پروتکل های کنترل همزمانی

پروتکل های کنترل همزمانی. ارائه اول پايگاه داده پيشرفته علی عباسی . پروتکل های براساس قفل پروتکل های بر اساس پروتکل های برمبنای تعيين اعتبار دانه بندی چند گانه الگوی چند نسخه ای بن بست اعمال حذف و اضافه همزمانی در ساختار انديس. پروتکل های براساس قفل.

lesley
Download Presentation

پروتکل های کنترل همزمانی

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. پروتکل های کنترل همزمانی ارائه اول پايگاه داده پيشرفته علی عباسی

  2. پروتکل های براساس قفل • پروتکل های بر اساس • پروتکل های برمبنای تعيين اعتبار • دانه بندی چند گانه • الگوی چند نسخه ای • بن بست • اعمال حذف و اضافه • همزمانی در ساختار انديس

  3. پروتکل های براساس قفل • قفل مکانيزمی برای کنترل دسترسی به عناصرداده است • عناصر داده می توانند در دو مد قفل شوند • قفل انحصاری : عنصر داده می تواند هم خوانده شود و هم نوشته شود • قفل اشتراکی : عنصر داده تنها می تواند خوانده شود • درخواست های قفل به مدير کنترل همزمانی داده می شود و تراکنش تنها در صورتی ادامه می يابد که درخواست آن پاسخ داده شود .

  4. پروتکل های براساس قفل-ادامه • ماتريس سازگاری قفل • به يک تراکنش تنها در صورتی قفل داده می شود که قفل درخواستی با بقيه قفل های موجود روی عنصر داده توسط تراکنش های ديگر ناسازگاری نداشته باشد . • هرتعدادی تراکنش می توانند روی عنصر داده قفل اشتراکی داشته باشند ، اما درصورتی که يک تراکنش روی يک عنصر داده قفل انحصاری داشته باشد ، تراکنش ديگری نمی تواند روی آن هيچ نوع قفلی داشته باشد . • اگر امکان دادن يک قفل نباشد ، تراکنش درخواست کننده مجبور به انتظار می شود تا هنگامی که تمامی قفل های ناسازگار آزاد شوند

  5. پروتکل های براساس قفل-ادامه • قفل کردن برای اطمينان از سريالی بودن کافی نيست • برای اطمينان از سريالی بودن بايد مجموعه ای از قوانين برای مکانهای گرفتن و آزاد کردن قفل ها رعايت شود که پروتکل قفل کردن ناميده می شوند .

  6. معايب قفل کردن • ترتيب اجرای جزيی زير را در نظر بگيريد . • هيچکدام از تراکنش ها نمی توانند ادامه يابند . اين وضعيت بن بست ناميده می شود . • روش برخورد با اين وضعيت بازگرداندن يکی از تراکنش هاست .

  7. پروتکل های براساس قفل-ادامه • امکان بن بست در بيشتر پروتکل های قفل کردن وجود دارد . • امکان گرسنگی هم در صورت طراحی بد مدير کنترل همزمانی وجود دارد . • يک تراکنش ممکن است در انتظار قفل انحصاری روی يک عنصر باشد درصورتی که • يک سری از تراکنش ها ممکن درخواست قفل اشتراکی داده باشند و قفل به آنها اعطا شود و به امکان دادن قفل به تراکنشی که درخواست قفل انحصاری کرده نباشد • تراکنش مشابه ای ممکن است برای مکررا برای رهايي از بن بست برگردانده شود . • مدير کنترل همزمانی می تواند به گونه ای طراحی شود که از گرسنگی اجتناب شود

  8. پروتکل قفل کردن دو مرحله ای • اين پروتکل تضمين می کند که ترتيب اجراها conflict serializable باشند . • اين پروتکل تراکنش را به دو فاز تقسيم می کند • Growing . که در آن تراکنش قفل ها را بدست می آورد و قفلی از دست نمی دهد • Shrinking . که تراکنش قفل ها را آزاد می کند و قفلی بدست نمی آورد • اين پروتکل سريالی بودن را تضمين می کند . و تراکنش ها می توانند به ترتيب lock points (نقطه ايکه تراکنش قفل آخر را می کيرد ) ، سريالی شوند .

  9. پروتکل قفل کردن دو مرحله ای-ادامه • قفل کردن دو مرحله ای رهايی از بن بست را تضمين نمی کند . • برگرداندن آبشاری تحت قفل کردن دو مرحله امکان پذير است . و برای جلوگيذی از می توان از strict two phase locking استفاده کرد . که در اين پروتکل تراکنش ها بايد تا پايان تراکنش قفل های انحصاری را نگه دارند . • نوع ديگری از اين پروتکل rigorous two phase locking است که تراکنش تمام قفل ها را تا پايان تراکنش نگه می دارد .

  10. پروتکل قفل کردن دو مرحله ای-ادامه • قفل کردن دو مرحله ای تمام ترتيب اجراهای سريالی را توليد نمی کند . • درنبود اطلاعات اضافی (ترتيب دسترسی به داده ها ) قفل کردن دو مرحله ای برای اطمينان از سريالی بودن لازم است . • زيرا اگر تراکنش Ti قفل کردن دو مرحله ای را رعايت نکرده باشد ، می توانيم تراکنشی مانند Tj بيابيم که قفل کردن دو مرحله ای را رعايت کرده باشد و ترتيب اجرايی از آنها conflict serializable نباشد .

  11. پروتکل های براساس گراف • يک ترتيب جزيی را برمجموعه تمامی داده های پايگاه داده اعمال می کند . • اگر di -> dj تراکنشی که به هر دو داده دسترسی می يابد بايد به di قبل از dj دسترسی پيذل کند . • به اين معنی استکه مجموعه تمامی داده ها می تواند بصورت يک گراف جهت دار بدون دور بنام database graph ديده شود . • Tree protocol نوع ساده ای از graph protocol است.

  12. پروتکل درخت • تنها قفل های انحصاری موجود هستند . • اولين قفل ممکن است روی هر عنصر داده ای باشد . در دفعات بعدی قفل ها در صورتی داده می شوند که پدر نود نيز توسط تراکنش قفل شده باشد. • عناصر داده در هر زمانی می توانند آزاد شوند .

  13. پروتکل های براساس گراف-ادامه • پروتکل درخت conflict serializability و رهايی از بن بست را تضمين می کند . • در پروتکل درخت آزاد کردن قفل ها زودتر از قفل کردن دو مرحله ای رخ می دهد . • زمان انتظار کمتر ، همزمانی بيشتر • دراين پروتکل بن بست رخ نمی دهد ، و برگشتی مورد نيآز نيست • بی نتيجه ماندن يک تراکنش ممکن است باعث بازگشت آبشاری شود . • با اينحال در اين پروتکل نياز است که تراکنش عناثر داده ای را قفل کند که به آنها دسترسی پيدا نمی کند . • سربار قفل بيشتر و زمان انتظار بيشتر • کاهش در همزمانی • ترتيب اجراهايی در اين پروتکل امکان پذير است که در قفل کردن دو مرحله ای امکان پذير نيست و برعکس

  14. پروتکل های براساس timestamp • به هر تراکنش هنگام ورود به سيستم يک timestamp نسبت داده می شود . بين تراکنش قديمی Tiکه timestamp آن TS(Ti) می باشد و تراکنش جديد Tjکه timestamp آن TS(Tj) است رابطه زير برقرار است . اين پروتکل بصورتی همزمانی را کنترل می کند که timestamp ها ترتيب سريالی را تعيين می کنند . • برای پياده سازی اين الگو ،به هرعنصر داده Q دو مقدار timestamp نسبت می دهيم: • W-timestamp(Q) که بزرگترين مقدار timestamp هايی را که عمل write(Q) را به صورت مؤفقيت آميز انجام داده اند نشان می دهد . • R-timestamp که بزرگترين مقدار timestamp هايی را که عمل read(Q) را به صورت مؤفقيت آميز انجام داده اند نشان می دهد . • اين timestamp ها با هر دستور خواندن و نوشتن جديدی که اجرا می شود به روزرسانی می شوند.

  15. پروتکل های براساس timestamp-ادامه • اين پروتکل تضمين می کند که هر عمل ناسازگار نوشتن و خواندن به ترتيب timestamp ها اجرا شوند . • - فرض کنيد که تراکنش Ti درخواست read(Q) را می دهد. • اگر TS(Ti) < W-timestamp(Q) ، درنتيجه Ti نياز به خواندن داده ای دارد که قبلا دوباره نويسی شده است .بنابراين ، عمل خواندن رد می شود ، و Tiبرگردانده می شود. • اگر TS(Ti) W-timestamp(Q) ، عمل خواندن اجرا می شود و R-timestamp(Q) برابر مقدار بيشينه R-timestamp(Q) و TS(Ti) فرار داده می شود .

  16. پروتکل های براساس timestamp-ادامه • فرض کنيد که تراکنش Ti درخواست write(Q) را می دهد. • اگر TS(Ti) < R-timestamp(Q) ، پس مقدار Q ايکه Ti توليد می کند قبلا مورد نياز بوده است ، وسيستم فرض می کند که مقدار هيچگاه توليد نشده است .بنابراين سيستم عمل نوشتن را رد می کند و Ti را برمی گرداند . • اگر TS(Ti) < W-timestamp(Q) ، پس Ti سعی می کند که يک مقدار قديمی را روی Q بنويسد . بنابراين سيستم عمل نوشتن را رد می کند و Ti را برمی گرداند . • در غير اينصورت ، سيستم عمل نوشتن را اجرا می کند و مقدار W-timestamp(Q) را برابر با TS(Ti) قرار می دهد .

  17. صحت پروتکل ترتيب دهی براساس timestamp • پروتکل ترتيب دهی براساس timestamp ، سريالی بودن را تضمين می کند زيرا که تمام يالهای گراف الويت به شکل زير می باشند . بنابراين هيچ دوری در گراف الويت بوجود نمی آيد . پروتکل ترتيب دهی براساس timestamp ، رهايی از بن بست را تضمين می کند زيرا هيچ تراکنشی منتظر نمی ماند . اما ترتيب های اجرا ممکن استcascadeless وrecoverable نباشند . تراکنش با timestamp بزرگتر تراکنش با timestamp کوچکتر

  18. قانون نوشتن Thomas • نوع اصلاح شده پروتکل ترتيب دهی براساس timestamp که در آن از نوشتن های قديمی تحت شرايط خاصی صرف نظر کرد . • هنگامی که تراکنش سعی می کند عنصر داده Q را بنويسد ، اگر TS(Ti) < w-timestamp(Q) ، درنتيجه Ti تلاش می کند که مقداری قديمی را روی Q بنويسد . بنابراين بجای برگرداندن تراکنش همانگونه که در پروتکل ترتيب دهی براساس timestamp انجام می شد ، می توانيم از انجام عمل نوشتن صرف نظر کنيم . • قانون نوشتن Thomas همزمانی بيشتری اجازه می دهد . در اين پروتکل برخلاف پروتکل های قبلی ترتيب اجراهای view serializable نيز اجازه داده می شود .

  19. پروتکل براساس تعييين اعتبار • اجرای تراکنش در سه مرحله انجام می شود . • فاز خواندن واجرا . که در آن تراکنش اجرا می شود ، اما اعمال نوشتن در متغيرهای محلی انجام می شوند . • فاز تعيين اعتبار . تراکنش يک تست تعيين اعتبار انجام می دهد تا تعيين کند که می توان اعمال نوشتن را بدون نقض سريالی بودن به پايگاه داده منتقل کرد يا نه . • فاز نوشتن . تراکنش به روز رسانی ها را درپايگاه داده اعمال می کند . • optimistic concurrency control نيزناميده می شود .زيرا که تراکنش انجام می شود به اميد اينکه از مرحله تعيين اعتبار گذر کند .

  20. پروتکل براساس تعييين اعتبار-ادامه • به هر تراکنش سه timestamp نسبت داده می شود . • Start(Ti). زمانيکه تراکنش شروع به اجرا می کند . • Validation(Ti) . زمانيکه تراکنش وارد فاز تعيين اعتبار می شود . • Finish(Ti) . زمانيکه فاز نوشتن به پايان می رسد . • ترتيب سريالی با استفاده از timestamp ايکه در زمان تعيين اعتبار داده می شود تعيين می شود . • اين پروتکل در زمانيکه احتمال ناسازگاری پايين است مناسب است و همزمانی بالاتری را موجب می شود .

  21. پروتکل براساس تعييين اعتبار-ادامه • تست اعتبار برای هر تراکنش Tj نياز دارد که برای هر تراکنش Ti که شرطTS (Ti) < TS (Tj) برقرار باشد • يکی از شرايط زير موجود باشد : • finish(Ti) < start(Tj). از آنجا که Ti قبل از آغاز Tj پايان يافته است ، تزتيب سريالی برقرار است. • مجموعه عناصر داده نوشته شده توسط Ti عضو مشترکی با عناصر داده خوانده شده توسط Tj نداشته باشد ، و Ti فاز نوشتن را قبل از اينکه Tj فاز تعيين اعتبار را آغاز کند به پايان برساند . start(Tj) < finish(Ti) < validation(Tj) .

  22. دانه بندی چند گانه • اجازه می دهد که عناصر داده اندازه های متفاوت داشته باشند و يک سلسله مراتب از دانه بندی داده ها را تعريف می کند ، که در ان عناصر کوچکتر در عناصر بزرگتر قرار گرفته اند • می تواند از نظر گرافيکی مانند يک درخت نشان داده شود . • هنگامی که يک تراکنش يک نود را بصورت صريح قفل می کند ، تمام نودهای زير آنرا بصورت ضمنی قفل کرده است . • دانه بندی قفل کردن . • دانه بندی ريز . (مراتب پايين تر در درخت ) . همزمانی بالاتر ، سربار قفل کردن بالاتر. • دانه بندی درشت . ( مراتب بالاتر در درخت ). همزمانی پايين تر ، سربار قفل کردن پايين تر

  23. مثالی از دانه بندی چند گانه • بالاترين سطح در سلسله مراتب مثال کل پايگاه داده است . • در سطوح پايين تر حوزه ، فايل و رکورد قرار گرفته اند .

  24. مدهای قفل intention • علاوه بر قفل انحصاری و اشتراکی سه نوع قفل ديگر هم در دانه بندی چند گانه وچود دارند . • Intention-shared(IS) . نشان می دهد که در سطوح پايين تر قفل اشتراکی به صورت صريح انجام شده است . • Intention-exclusive . نشان می دهد که در سطوح پايين تر قفل اشتراکی يا انحصاری به صورت صريح انجام شده است . • Shared and Intention exclusive . زيردرخت با ريشه نود بصورت صريح در مد اشتراکی قفل شده است وقفل صريح در سطوح پايين تر در مد صريح رخ داده است • قفل های intention به نود اجازه می دهند که در مد انحصاری يا اشتراکی بدون نياز به چک تمام زير درخت زير آن قفل شوند .

  25. S IX S IX X IS  IS      IX     S      S IX      X      ماتريس سازگاری همراه با قفل های intention • ماتريس سازگاری برای تمام مد های قفل

  26. الگوی قفل کردن در دانه بندی چندگانه • تراکنش Ti می تواند نود Q را با استفاده از قوانين زير قفل کند . • بايد جدول تطابق شکل را رعايت کند • ريشه درخت بايد ابتدا قفل شود ، ودر هر مدی هم می تواند قفل شود . • نود Q را تنها هنگامی می توان درمد S يا IS قفل کرد که پدر Q در يکی از مدهای IX يا IS قفل باشد. • نود Q را تنها هنگامی می توان درمد X ، SIX ، يا IX قفل کرد که پدر Q در يکی از مد های IX يا SIX قفل شده باشد . • تراکنش می تواند يک نود را قفل کند ، اکر تاکنون هيچ نودی را آزاد نکرده باشد . • تراکنش تنها هنگامی می تواند قفل نود Q را باز کند که هيچ فرزندی از نود Q را قفل نکرده باشد.

  27. الگوی چندنسخه ای • الگوی چند نسخه ای ، نسخه های قديمی عناصر داده را برای افزايش همزمانی نگه می دارد . • ترتيب دهی براساس timestamp چند دسخه ای • قفل کردن دومرحله چند نسخه ای • هر نوشتن موفق منجر به ايجاد نسخه جديدی از داده ندشته شده می شود . • از timestamp ها برای برچسب گذاری نسخه ها استفاده می شود . • هرگاه درخواست خواندن داده می شود ، نسخه ای مناسب از داده براساس timestamp تراکنش خوانده می شود . • درخواست های خواندن هيچگاه درانتظار باقی نمی مانند . زيرا که هميشه نسخه مناسب بازگردانده می شود .

  28. ترتيب دهب براساس timestamp چند نسخه ای • به هر عنصر داده Q يک ترتيب از نسخه ها <Q1, Q2,...., Qm> منسوب می شود. و هر نسخه Qk سه فيلد داده دارد : • محتوی ( Content ) که مقدار نسخه Q را داراست . • W-timestamp(Qk) که timestamp تراکنشی را که نسخه Qk را بوجود آورده نشان می دهد . • R-timestamp(Qk) که بزرگترين timestamp تراکنش هايی را که عمل خواندن را بصورت مؤفقيت آميز انجام داده اند نشان می دهد . • هنگامی که تراکنش Tiنسخه جديد Qkاز عنصر داده Q را ايجاد می کند R-timestamp و W-timestamp برابر با TS(Ti) قرار داده می شود . • R-timestamp(Qk) هر زمان که توسط تراکنش Tj خوانده می شود TS(Tj) > R-timestamp(Qk) به روزرسانی می شود .

  29. ترتيب دهب براساس timestamp چند نسخه ای • الگوی ترتيب دهی timestamp چندنسخه ای که در ادامه می آيد سريالی بودن را تضمين می کند . • فرض کنيد که تراکنش Ti درخواست read(Q) يا write(Q) را بدهد . و Qk نسخه ای از Q را نشان دهد که W-timestamp آن بزرگترين W-timestamp کوچکتريا مساوی TS(Ti) باشد . • اگر Ti درخواست read(Q) را بدهد ، مقدار برگردانده شده محتوی نسخه Qk می باشد. • اگر Ti درخواست write(Q) رابدهد ، و TS(Ti) < R-timestamp(Q) سيستم تراکنش Ti رابرمی گرداند .از طرف ديگر اگر R-timestamp(Qk) = TS(Ti)، سيستم محتوی Qk را دوباره نويسی می کند؛ درغيراينصورت نسخه جديدی از Q را می سازد .

  30. قفل کردن دو مرحله ای چند نسخه ای • بين تراکنش های تنها خواندنی و به روز رسانی تفاوت می گذارد . • تراکنش های به روز رسانی قفل های خواندن ونوشتن را بدست می آورند و آنها را تا پايان تراکنش نگه می دارند . يعنی rigorous two phaselocking را اجرا می -کنند . • هر نوشتن مؤفقی نسخه جديدی از داده را ايجاد می کند . • هر نسخه از عنصر داده يک timestamp مستقل دارد که مقدار آن از خواندن شمارنده ts-counter ، که مقدار آن هنگام عمليات پايان افزوده می شود بدست می آيد . • به تراکنش های تنها خواندنی با خواندن مقدار کنونی ts-counter و قبل از شروع به اجرای آنها timestamp نسبت داده می شود . آنها از پروتکل ترتيب دهی براساس timestamp برای عمل خواندن پيروی می کنند .

  31. قفل کردن دو مرحله ای چند نسخه ای-ادامه • هنگامی که يک تراکنش به روزرسانی می خواهد داده ای را بخواند ابتدا يک قفل اشتراکی روی آن بدست می آورد.و آخرين نسخه آن را می خواند . • هنگامی که می خواهد داده ای را بنويسد قفل انحصاری روی آن بدست می آورد و سپس نسخه جديدی از آن را ايجاد می کند و timestamp اين نسخه زا برابر با  قرار می دهد . • هنگامی که تراکنش به پايان می رسد پردازش پايان انجام می شود : • Ti ،timestamp نسخه هايی را که ايجاد کرده برابر با ts-counter+1 قرار می دهد . • Ts-counter را يکی افزايش می دهد . • تراکنش های تنها خواندنی که بعد از اينکه Ti، ts-counter را افزايش داد شروع شده اند ، مقادير به روز رسانی شده توسط Tiمی بينند . • تراکنش های تنها خواندنی که قبل از اينکه Ti، ts-counter را افزايش دهد شروع شده اند ، مقادير قبل از به روز رساني های Tiمی بينند . • تنها ترتيب اجراهای سريال ايجاد می شوند .

  32. سطوح ضعيف سازگاری • سازگاری درجه دو . با قفل کردن دو مرحله ای در اين تفاوت دارد که قفل های اشتراکی در هر زمانی می توانند آزاد شوند . و قفل ها در هر زمانی می توانند گرفته شوند.بنابراين برگشت آبشاری رخ نمی دهد • قفل های انحصاری بايد تا پايان تراکنش نگه داشته شوند . • سريالی بودن تضمين نشده است ، و برنامه نويس بايد اينکه حالت های خطا در پايگاه داده رخ ندهند مطمئن شود . • cursor stability . • برای خواندن هر چند تايی قفل می شود ، خوانده می شود ، و قفل فورا آزاد می شود . • قفل های انحصاری بايد تا هايان تراکنش نگه داشته شوند . • نوع خاصی از سازگاری درجه دو .

  33. همزمانی در ساختارهای انديس • انديس ها از اين نظر متفاوت از ديگر عناصر پايگاه داده هستند که کارشان تنها کمک به دسترسی به داده ها است . • بسيار بيشتر از عناصر ديگر پايگاه داده مورد دسترسی قرار می گيرند . • برخورد با آنها مشابه به ديگر عناصر داده موجب همزمانی پايين می شود . • دسترسی غير سريالی به انديس تا هنگاميکه درستی انديس حفظ شود پذيرفته است . • بويژه مقادير دقيق خوانده شده در يک B+-tree ، تا هنگاميکه به نود برگ درست برسيم اهميتی ندارند . • پروتکل هايی وجود دارند که در آنها قفل های روی نودهای ميانی زود رها می شوند ،ومانند مدل دو مرحله نيستند .

  34. همزمانی در ساختارهای انديس • مثالی از همزمانی در انديس • استفاده از crabbing به جای قفل کردن دو مرحله ای روی نودهای B+-tree به صورت زير . هنگام چستچو ،اضافه و حذف : • ابتدا نود ريشه در مد اشتراکی قفل می شود . • بعد از قفل کردن نود فرزند موردنياز ، قفل نود آزاد می شود . • هنگام حذف و اضافه قفل نود برگ به مد انحصاری به روز می شود . • هنگاميکه تقسيم يا ادغام نياز به تغيير در نود پدر دارد ،پدر در مد انحصاری قفل می شود

More Related