انواع قفل در DB2
قفل گذاری مفهومی جهت موازی سازی (Parallelism) تراکنش ها می باشد.
مدیریت همزمانی تراکنش ها و یکپارچگی داده توسط قفل در DB2 صورت می گیرد. DB2 به وسیله سه قفل Share، Exclusive و Update سازگاری و یکپارچگی داده در طول انجام تراکنش را تضمین می کند.
نکته: قفل در DB2 فقط بر روی منابع فیزیکی (Tablespace و Indexspace) تعریف می شود و می تواند سطح های مختلفی از منبع (Row، Page، Table، Tablespace و یا Database) را شامل شود.
ساختارهای فیزیکی در DB2 را می توانید در اینجا مطالعه نمایید.
قفل S یا SHARE
هنگامی که برنامه ای در حال خواندن (Read) داده از منبعی می باشد، بر روی آن منبع قفلی از نوع Share (اشتراکی) قرار می گیرد. این قفل در DB2، به سایر کاربران و برنامه ها اجازه ی خواندن همزمان یک منبع را می دهد.
این قفل مشخص می کند که داده در حال خوانده شدن است و امکان انجام تراکنشی به جز خواندن (SELECT، VIEW، FETCH و … ) را نمی دهد.
قفل X یا Exclusive
زمانی که داده ای در حال دستکاری (UPDATE، INSERT و یا DELETE) می باشد، بر روی آن منبع قفل EXCLUSIVE (انحصاری) گذاشته می شود. قفل X منبع را به انحصار یک تراکنش در می آورد و به تراکنش دیگر اجازه ی دسترسی به آن منبع، چه خواندن و چه دستکاری را نمی دهد.
هنگامی که داده در حال دستکاری می باشد، DB2 باید سختگیرانه تر برخورد کند. زیرا دسترسی سایر تراکنش ها به داده ای که در حال تغییر می باشد می تواند باعث دسترسی به داده ی ناسازگار و نادرست شود.
تراکنش هایی که به منبع دارای قفل X می رسند، به حالت تعلیق (Pending) در می آیند و منتظر می مانند. اگر قفل در زمان مجاز انتظار به پایان برسد، تراکنش بعدی انجام می شود. اگر زمان انتظار بیشتر شود، تراکنش برگشت (Time Out) می خورد.
قفل U یا Update
این قفل در DB2 قفلی میانی و به نوعی تلفیقی از قفل های Share و Exclusive می باشد.
قفل U تعیین می کند که اگرچه در حال حاضر برنامه یا تراکنشی در حال خواندنِ داده می باشد، اما این خواندن به منظور دستکاری است. DB2 به جای قرار دادن قفل S در هنگام خواندن و قفل X در زمان دستکاری داده، در این موارد از قفل U استفاده می نماید.
این قفل گذاری به این جهت به کار می رود که کاربر و یا برنامه دیگری به قصد دستکاری داده را نخواند.
منبعی که دارای قفل U می باشد، در مرحله ی خواندن، به سایر کاربران تنها اجازه خواندنِ داده را می دهد. اما در مرحله ی دستکاری، هیچگونه دسترسی بر روی آن منبع مجاز نمی باشد.
جهت مطالعه روش های ﻛﺎﻫﺶ ﻣﺸﻜﻼت درﮔﻴﺮى ﻗﻔﻞ ﻫﺎ در DB2 اینجا کلیک کنید.
انواع قفل در DB2، همگی به یک اندازه دارای اهمیت می باشند و قفلی بر روی منبع قرار می گیرد که زودتر آن منبع را قفل کرده باشد.
محتوای این مقاله بر گرفته از مطالب ارائه شده در کلاس حضوری DB2 fundamental Skills می باشد.
جهت مشاهده اطلاعات دوره حضوری DB2 fundamental Skills ترم تابستان اینجا کلیک کنید.
جهت مطالعه ببشتر در خصوص انواع قفل در DB2 به زبان انگلیسی می توانید از منابع زیر استفاده کنید: