50٪ تخفیف روی تمام دوره‌ها!
پایان تخفیف تا:
مشاهده دوره‌ها
0

set transaction isolation level serializable چه کاربردی دارد

با سلام و خسته نباشید خدمت شما ، من برای همزمانی داده ها در شبکه خیلی مطالب جمع آوری کردم اما می خواهم بدانم که این کد set transaction isolation level serializable کلا چه کاربردی دارد و در کجاها استفاده می شود ، لطف می کنید پاسخ من را بدهید ، با تشکر از شما

پرسیده شده در 1395/01/18 توسط

1 پاسخ

3

Isolation Levelها در SQL Server روش های قفل گذاری در میان چند تراکنش را مشخص می کند.به بیان ساده تر اگر ما یک عمل به روز رسانی را داخل یک تراکنش انجام دهیم و از طرف دیگر با استفاده از دستور SELECT داده های مربوط به همان به روز رسانی را بخواهیم استخراج کنیم، اینجا Isolation Level نحوه دستیابی ما به اطلاعات را مشخص خواهد کرد.

انواع Isolation Level


  1. Read UnCommitted
  2. Read Committed
  3. Repeatable Read
  4. Serializable
  5. Snapshot
  1. Read UnCommitted : این سطح ارزیابی به نوعی پایین ترین سطح ارزیابی می باشد به طوری که هیچ قفلی بر روی رکوردها اعمال نمی شود. مثلا اگر اطلاعاتی را داخل یک تراکنش به روزرسانی می نمایید یک تراکنش دیگر می تواند این اطلاعات را تغییر دهد. یا اگر در حال اجرای تراکنش، یک دستور Select بنویسید اطلاعاتی را دریافت کنید که هنوز تایید و نهایی نشده است.با این اوصاف می توان گفت اطلاعاتی که در این Selectها به دست می آید به احتمال زیاد نامعتبر خواهد بود.
  2. Read Committed : این سطح ارزیابی سطح پیش فرض SQL Server می باشد. در این حالت اطلاعاتی که داخل یک تراکنش باشد تا لحظه اتمام آن تراکنش به حالت قفل در خواهد آمد. یعنی نه می توان آن ها را Select کرد و نه می توان آن ها را تغییر داد یا حذف کرد. چنانچه دستور SELECT شما همزمان با اجرای تراکنش باشد اجرای دستور SELECT منتظر اتمام تراکنش خواهد ماند.
  3. Reapeatable Read : این سطح ارزیابی شبیه Read Committed می باشد ولی با این تفاوت که Reapeatable Read این تضمین را به ما می دهد که تمامی دستورات تغییر اطلاعاتی، که شما آن ها را Select کرده اید منتظر خواهد ماند تا Select شما به اتمام برسد.
  4. Serializable : این سطح ارزیابی شبیه Reapeatable Read می باشد منتها Serializable یک تضمین اضافی را نیز به ما می دهد که اجازه درج رکورد جدید در اطلاعات مربوطه را تا اتمام تراکنش نخواهد داد.
  5. Snapshot : این سطح ارزیابی دقیقا مشابه Serializable می باشد با این تفاوت که Snapshot عملیات Update و Insert را قفل نخوهد کرد. شاید این سوال به ذهنتان برسد که تغییر اطلاعات چگونه مدیریت می شود؟

پاسخ این است که اگر عملیاتی بعد از Snapshot بر روی داده ها تغییراتی را ایجاد کنند یا داده های جدیدی در دیتابیس ثبت شوند این تغییرات و داده های جدید در tempdb ذخیره خواهد شد. ضمنا یک Row Version هم به این اطلاعات اضافه می شود. بعد از اتمام تراکنش Snapshot، آخرین اطلاعات از tempdb به دیتابیس شما منتقل خواهد شد. برای فعال سازی این Isolation Level بایستی دستور زیر را اجرا نمایید.

ALTER DATABASE IsolationLevelTest
SET ALLOW_SNAPSHOT_ISOLATION ON
 

جمع آوری شده از http:////nikamooz.com

پاسخ در 1395/05/03 توسط

پاسخ شما