oliya24
سه شنبه 03 مرداد 1391, 17:23 عصر
سلام دوستان عزیز برنامه نویسان محترم
خسته نباشید
بعد از مدتی که تصمیم داشتم یه اموزش حداقلی در مورد مفهوم قفل کردن داده ها در اس کیو ال رو بگزارم امروز به لطف خداتونستم عملیش کنم و در خدمت تمامی شما دوستان باشم
----------------------------------------------------------------------------------------------------------------------------------در ابتدا شما را با یک سناریو اشنا میکنم که در این سناریو میتوانید دلیل استفاده از این اموزش رو فرا بگیرید
---------------------------------------------------------------------------------------------------------------------------------فرض کنید که شما و همسرتان دارای یک حساب مشترک بانکی هستید و هر کدام یک کارت عابر بانک دارید حالا فرض کنید که موجودی حساب شما 100 هزار تومان میباشدو شما هر دو به صورت همزمان درخواست 60 هزار تومان میکنید سیستم عابر بانک با توجه به انکه موجودی حساب شما 100 هزار تومان یعنی بیشتر از مبلغ درخواستی است هر دو درخواست را میپذیرد و از انجا که پذیرفتن یک درخواست مانع پذیرش درخواست بعدی نمیشود هر دو درخواست ر پرداخت میکند . در نتیجه بانک 20 هزار تومان به شما بیشتر از موجودی حساب میدهد خوب برای جلوگیری کردن از این بحران راهی وجود دارد به نام قفل کردن داده ها
در واقع لازم است که تراکنش اول مثلا درخواست پول همسرتان داده های مربوط به حساب را قفل کند و تا زمانیکه تراکنشش به پایان نرسیده امکان اغاز تراکنش دیگری را ندهد !!!!!مثلا درخواست پول توسط شما (تراکنش دوم)
------------------------------------------------------------------------------------------------------------------------------
نوع قفل:که بر دو نوع هستند 1:اشتراکی یا sharedکه به ان قفل خواندن نیز میگویند و 2:اختصاصی exclusiveکه به ان قفل نوشتن نیز میگویند
پس نتیجه میگیریم که هر بار فرایندی داده ها را میخواند یک قفل اشتراکی را اعمال میکند در ضمن دستور select قفل خواندن را اعمال میکند و دستورات دیگر هم مثل insert-update-delete هم در جایی که اطلاعات یک جدول را برای به روز اوریجدولی دیگر میخوانند این قفل را اعمال میکنند
هر با که فرایندی داده ها را تغییر دهد قفل exclusive اعمال میشود معمولا در جریان عملیات درج و..قفلهای اختصاصی اعمال میشوندو دستوراتی مانند create -alter -drop هم از این قفل استفاده میکنند
------------------------------------------------------------------------------------------------------------------------------
خسته نباشید
بعد از مدتی که تصمیم داشتم یه اموزش حداقلی در مورد مفهوم قفل کردن داده ها در اس کیو ال رو بگزارم امروز به لطف خداتونستم عملیش کنم و در خدمت تمامی شما دوستان باشم
----------------------------------------------------------------------------------------------------------------------------------در ابتدا شما را با یک سناریو اشنا میکنم که در این سناریو میتوانید دلیل استفاده از این اموزش رو فرا بگیرید
---------------------------------------------------------------------------------------------------------------------------------فرض کنید که شما و همسرتان دارای یک حساب مشترک بانکی هستید و هر کدام یک کارت عابر بانک دارید حالا فرض کنید که موجودی حساب شما 100 هزار تومان میباشدو شما هر دو به صورت همزمان درخواست 60 هزار تومان میکنید سیستم عابر بانک با توجه به انکه موجودی حساب شما 100 هزار تومان یعنی بیشتر از مبلغ درخواستی است هر دو درخواست را میپذیرد و از انجا که پذیرفتن یک درخواست مانع پذیرش درخواست بعدی نمیشود هر دو درخواست ر پرداخت میکند . در نتیجه بانک 20 هزار تومان به شما بیشتر از موجودی حساب میدهد خوب برای جلوگیری کردن از این بحران راهی وجود دارد به نام قفل کردن داده ها
در واقع لازم است که تراکنش اول مثلا درخواست پول همسرتان داده های مربوط به حساب را قفل کند و تا زمانیکه تراکنشش به پایان نرسیده امکان اغاز تراکنش دیگری را ندهد !!!!!مثلا درخواست پول توسط شما (تراکنش دوم)
------------------------------------------------------------------------------------------------------------------------------
نوع قفل:که بر دو نوع هستند 1:اشتراکی یا sharedکه به ان قفل خواندن نیز میگویند و 2:اختصاصی exclusiveکه به ان قفل نوشتن نیز میگویند
پس نتیجه میگیریم که هر بار فرایندی داده ها را میخواند یک قفل اشتراکی را اعمال میکند در ضمن دستور select قفل خواندن را اعمال میکند و دستورات دیگر هم مثل insert-update-delete هم در جایی که اطلاعات یک جدول را برای به روز اوریجدولی دیگر میخوانند این قفل را اعمال میکنند
هر با که فرایندی داده ها را تغییر دهد قفل exclusive اعمال میشود معمولا در جریان عملیات درج و..قفلهای اختصاصی اعمال میشوندو دستوراتی مانند create -alter -drop هم از این قفل استفاده میکنند
------------------------------------------------------------------------------------------------------------------------------