مدل تراکنش ها و قفل گذاری در اینودی‌بی

سلام.از اینکه سایت  سوفرا  را، برای پاسخ به سوالات خود انتخاب کردید خوشحال هستیم . با محمودی همراه باشید.

مدل تراکنش ها و قفل گذاری

به جهت پیاده سازی یک برنامه پایگاه داده ای در سطح بزرگ و با ترافیک بالا و قابلیت اطمینان زیاد و برای ورود یک کد جایگزین از یک سیستم پایگاه داده ای دیگر و همچنین برای افزایش کارایی مای اسکیوال باید با جزئیات تراکنش ها و قفل گذاری که مربوط به اینودی‌بی می شوند آشنا شوید.

هدف مدل تراکنش اینودی‌بی این است تا ویژگی جدید چند نسخه ای را با ویژگی سنتی قفلگذاری دو مرحله ای ترکیب کند. اینودی‌بی سطر ها را قفل گذاری میکند و سپس پرس و جو ها را به صورت عملیات خواندن سازگار به شیوه اوراکل و به طور پیشفرض انجام میدهد. اطلاعات مربوط به قفل ها به صورت بهینه ذخیره شده اند و نیاز به اینکپسوله کردن آنها نمی باشد. معمولا چند کاربر به طور همزمان می توانند یک سطر یا مجموعه ای از سطر ها را در اینودی‌بی قفلگذاری کنند بدون اینکه دچار مشکل حافظه شود.

در اینودی‌بی تمام فعالیت های یک کاربر در قالب یک تراکنش انجام می شود و در صورتی که گزینه ی autocommit فعال باشد هر دستور در قالب یک تراکنش جداگانه انجام می شود. به طور پیشفرض مای اسکیوال هر نشست را با گزینه autocommit فعال ایجاد میکند و بدین ترتیب بعد از اجرای هر دستور اگر با خطا مواجه نشود تغییرات اعمال می شوند و در صورتی که با خطا مواجه شود نحوه اعمال و یا بازگشت به عقب به نوع خطا بستگی داد. یک نشست که autocommit برای آن فعال باشد می تواند یک تراکنش چند دستوری را به وسیله شروع کردن آن با start_transaction یا begin و خاتمه ی آن با commit یا rollback انجام دهد.

در صورتی که برای یک نشست autocommit فعال نباشد آن نشست همیشه دارای یک تراکنش باز بوده و با اجرای دستور commit یا rollback آن تراکنش بسته شده و یک تراکنش جدید ایجاد می شود.

دستور commitبه این معنی است که تغییرات اعمال شده توسط یک تراکنش به صورت دائمی اعمال می شوند و برای سایر نشست ها قابل مشاهده خواهند بود.

از جهت دیگر دستور rollback بدین معنی است که تغییرات اعمال نخواهند شد و همه تغییرات تراکنش جاری لغو می شوند.

با اجرای هریک از دستوراتcommit و rollback تمام قفل های اعمال شده توسط تراکنش آزاد می شوند.

بنا به تعریف سطوح ایزوله سازی در مایاسکیوال ۱۹۹۲ سطح پیشفرض در اینودی‌بی برابر REPEATEABLE_READمیباشد. همچنین اینودی‌بی تمام چهار سطح پیشنهاد شده( READ_UNCOMMITED ، READCOMMITED ،‌ REPEATEABLE_READ و SERIALIZABLE. ) توسط استاندارد مای اسکیوال را ارائه می دهد.

کاربر می تواند سطح ایزوله سازی یک تراکنش یا تراکنش های آتی را با استفاده از دستور SETTRANSACTION تعیین نماید. برای تغییر دادن سطح ایزوله سازی سرور باید از دستور –transaction-isolation در خط فرمان یا فایل پیکربندی استفاده نمود.

در سطح قفلگذاری سطر ها اینودی‌بی معمولا از روش قفل گذاری next-key استفاده می کند. این بدین معنی است که اینودی‌بی علاوه بر رکورد های شاخص می تواند فضای خالی قبل از آنها را نیز قفل گذاری نماید تا از عملیات درج که ممکن است توسط نشست های دیگر درآن فضا انجام شود جلوگیری نماید.

یک قفل next-key بدین معنی است که یک رکورد شاخص و فضای خالی قبل از آن قفل گذاری می شود.

یک قفل gap به قفلی گفته می شود که فقط فضای خالی بین رکورد ها را قفلگذاری میکند.

مطالب مرتبط

No results found

نظر سنجی

آیا این مطلب برای شما مفید بوده است؟

View Results

Loading ... Loading ...

This Post Looks Beautiful even with Long Interesting Title

پایتون

آموزش پایتون_دستور input

طراحی سیستم های پیچیده نرم افزاری

Richard Matthew Stallman

ریچارد متیو استالمن

نوشتهٔ پیشین
مای اسکیوال و مدل ACID
نوشتهٔ بعدی
خواندن داده ها در پایگاه داده به صورت سازگار و با قفل گذاری

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این فیلد را پر کنید
این فیلد را پر کنید
لطفاً یک نشانی ایمیل معتبر بنویسید.

فهرست