مدیریت تراکنش و همزمانی
مدیریت تراکنش و کنترل همزمانی به پایگاه داده اجازه میدهد تا تراکنشهای همزمان زیادی را به درستی اجرا کند و در برابر خرابیها مقاومت کند، و ویژگیهای اتمی بودن، سازگاری، جداسازی و دوام (ACID) را تضمین میکند.
Definition
تراکنش توالیای از عملیات پایگاه داده است که به عنوان یک واحد منطقی واحد اجرا میشود که اتمی، حفظکننده سازگاری، جدا از تراکنشهای همزمان، و پس از تعهد پایدار است؛ مدیریت تراکنش مجموعهای از مکانیسمها است که این ویژگیها را تحت همزمانی و خرابی اعمال میکند.
Scope
این حوزه تراکنش را به عنوان واحد کار و مکانیسمهایی را پوشش میدهد که اجرای همزمان و مستعد خطا را صحیح میکنند: ویژگیهای ACID؛ سریالیسازی به عنوان معیار صحت برای همزمانی؛ پروتکلهای قفلگذاری، برچسب زمانی و چندنسخهای که آن را اعمال میکنند؛ سطوح جداسازی ضعیفتر که سازگاری را فدای عملکرد میکنند؛ و تکنیکهای ثبت وقایع و بازیابی که اتمی بودن و دوام را در برابر خرابیها تضمین میکنند. این حوزه، تعهد توزیعشده در چندین سایت را که در حوزه پایگاههای داده توزیعشده و موازی بررسی میشود، مستثنی میکند.
Sub-topics
Core questions
- ویژگیهای ACID چه چیزی را تضمین میکنند و چرا مورد نیاز هستند؟
- چه چیزی یک برنامه همزمان را صحیح، یعنی سریالیسازیپذیر میکند؟
- پروتکلهای قفلگذاری، برچسب زمانی و چندنسخهای چگونه سریالیسازیپذیری را اعمال میکنند؟
- ثبت وقایع و بازیابی چگونه یک وضعیت سازگار را پس از خرابی بازیابی میکنند؟
- سطوح جداسازی ضعیفتر چگونه سازگاری را فدای همزمانی میکنند؟
Key concepts
- تراکنش و تعهد/لغو
- ویژگیهای ACID
- سریالیسازی و گراف تقدم
- قفلگذاری دو مرحلهای
- ترتیبدهی برچسب زمانی
- کنترل همزمانی چندنسخهای
- تشخیص و پیشگیری از بنبست
- ثبت وقایع پیشنویس
- سطوح جداسازی
Key theories
- ویژگیهای ACID
- اتمی بودن (اجرای همه یا هیچ)، سازگاری (حفظ محدودیتهای یکپارچگی)، جداسازی (تراکنشهای همزمان به نظر میرسد به تنهایی اجرا میشوند)، و دوام (اثرات متعهد شده در برابر خرابیها باقی میمانند) با هم رفتار تراکنشی صحیح را تعریف میکنند.
- سریالیسازیپذیری
- یک برنامه همزمان صحیح است اگر معادل با یک اجرای سریالی باشد؛ سریالیسازیپذیری تعارض، که از طریق گراف تقدم (سریالیسازی) آزمایش میشود، معیار عملی است که پروتکلهای کنترل همزمانی اعمال میکنند.
- کنترل همزمانی و بازیابی
- روشهای قفلگذاری، ترتیبدهی برچسب زمانی و چندنسخهای از درهمآمیزیهای غیرسریالیسازیپذیر جلوگیری میکنند، در حالی که الگوریتمهای ثبت وقایع پیشنویس و بازیابی، اتمی بودن و دوام را تضمین میکنند، که دو نیمه پردازش تراکنش صحیح هستند.
Clinical relevance
مدیریت تراکنش چیزی است که پایگاههای داده را برای پول و سوابق قابل اعتماد میکند: این تضمین میکند که یک انتقال بانکی هرگز یک حساب را بدون اعتبار دادن به حساب دیگر بدهکار نمیکند، که یک شرکت هواپیمایی هرگز یک صندلی را تحت درخواستهای همزمان دو بار رزرو نمیکند، و اینکه دادههای متعهد شده در برابر خرابیها باقی میمانند، و زیربنای تمام سیستمهای تراکنشی قابل اعتماد است.
History
مفهوم تراکنش و ویژگیهای ACID در سیستم R آیبیام در دهه 1970 رسمی شد؛ اسواران و همکاران (1976) مفاهیم سازگاری و قفلگذاری را پایهگذاری کردند، جیم گری تراکنشها و بازیابی را تعریف کرد، و برنستین، حاجیلاکوس و گودمن (1987) نظریه سریالیسازی را سیستماتیک کردند. کمکهای گری به پردازش تراکنش جایزه تورینگ را برای او به ارمغان آورد.
Key figures
- Jim Gray
- Philip Bernstein
- Andreas Reuter
Related topics
Seminal works
- gray1992
- bernstein1987
- eswaran1976
Frequently asked questions
- سریالیسازیپذیر بودن یک برنامه تراکنشها به چه معناست؟
- یک برنامه همزمان سریالیسازیپذیر است اگر اثر کلی آن با اجرای همان تراکنشها یکی پس از دیگری به ترتیبی خاص یکسان باشد. سریالیسازیپذیری معیار طلایی صحت است: حتی اگر تراکنشها برای عملکرد درهمآمیخته شوند، نتیجه به گونهای است که گویی به صورت سریالی اجرا شدهاند، بنابراین هیچ تراکنشی وضعیت میانی ناسازگار را نمیبیند.
- چرا سطوح جداسازی ضعیفتر مجاز هستند اگر میتوانند ناهنجاری ایجاد کنند؟
- اعمال سریالیسازیپذیری کامل هزینهای در عملکرد در رقابت قفل و لغو دارد. بسیاری از برنامهها میتوانند ناهنجاریهای خاصی را در ازای همزمانی بالاتر تحمل کنند، بنابراین استاندارد SQL سطوح جداسازی ضعیفتری (خواندن متعهد شده، خواندن تکرارپذیر و غیره) را تعریف میکند که به توسعهدهندگان اجازه میدهد عمداً مقداری جداسازی را فدای توان عملیاتی کنند.