ویرگول
ورودثبت نام
فاضل فرنیا
فاضل فرنیاتوسعه دهنده نرم افزار، دوستدار هنر علی الخصوص سینما و تئاتر، طبیعتگرد و عکاس
فاضل فرنیا
فاضل فرنیا
خواندن ۱ دقیقه·۶ سال پیش

Optimistic vs Pessimistic lock

دو نوع استراتژی در لاک کردن transaction مربوط به دیتابیس اوراکل مطرح هست حالت خوشبینانه و بدبینانه.

استراتژی خوشبینانه: وقتی رکوردی fetch میشه و قراره update ای صورت بگیره بعد از اعمال تغییرات و قبل از کامیت رکورد تغییر یافته با قبل از fetch مقایسه میشه در این مقایسه هر جدولی یه ستون با نام version داره که معمولا از نوع integer و یا timestamp است و در واقع این فیلد مورد مقایسه قرار میگیره حالا اگه در حین انجام تغییرات یه کاربر دیگه این اطلاعات رو fetch کرده باشه و تغییر داده باشه و کامیت کرده قاعدتا version تغییر کرده و دراینجا خطا خواهیم گرفت. در این استراتژی رکورد قفل نمیشه و همزمان چند تراکنش قابلیت دسترسی به رکورد رو دارند.


استراتژی بدبینانه: در این حالت برای جلوگیری از تغییر رکورد در همزمانی هر تراکنشی که رکورد را fetch کرد آن رکورد قفل می شود و هیچ سشن و thread دیگری تا زمانیکه کامیت قبلی انجام نشود و قفل را اصطلاحا release نکند نمی تواند به آن رکورد دسترسی داشته باشه.

باتوجه به توضیحات بالا قطعا سرعت حالت بدبینانه کمتر از خوشبینانس ولی در عوض consistency رعایت می شه. البته اکثر مواقع هم حالت خوشبینانه استفاده می شه چون واقعا تفاوت سرعت قابل چشم پوشی نیست.

دیتابیساوراکلoracle database
۱۴
۱
فاضل فرنیا
فاضل فرنیا
توسعه دهنده نرم افزار، دوستدار هنر علی الخصوص سینما و تئاتر، طبیعتگرد و عکاس
شاید از این پست‌ها خوشتان بیاید