آموزش پیشرفته SQL Server (جلسه پنجم) (Performance & tuning) - آموزش Deadlock

Deadlock یا بن بست در پایگاه داده، قسمتی از آموزش پیشرفته SQL Server است، پیشنهاد می شود قبل از مطالعه ی Deadlock، قسمت های قبلی را مطالعه فرمایید.


8- Deadlock چیست؟

Deadlock در لغت به معنی بن بست است.

زمانی که دو کاربر، دو شیء جداگانه را Lock کرده و هر کاربر سعی کند در ادامه Lock موجود بر روی شیء دیگر را بدست آورد، خطای Deadlock یا بن بست رخ می دهد.

زمانی که خطای Deadlock رخ می دهد، SQL Server بر اساس اینکه RollBack یا عقبگرد کدام کاربر، کم هزینه تر است آنرا قربانی می کند.

توجه: اگر RollBack یا عقبگرد اتفاق نیافتد، عملیات های دو کاربر مذکور در یک حلقه بی نهایت خواهد افتاد.


مثال عملی از Deadlock

مثال: در این مثال سعی می کنیم، خطای DeadLock را به صورت واقعی ایجاد کنیم.

مرحله 1: تصور فرمایید کاربر شماره 1 کوئری زیر را اجرا نماید:

1

BEGIN TRAN 

INSERT INTO TB1 VALUES (1,'A')

با اجرای کوئری بالا، جدول TB1 توسط کاربر شماره یک، Lock می شود.

مرحله 2: حالا کاربر شماره 2 کوئری زیر را اجرا می کند:

2

BEGIN TRAN 

INSERT INTO TB2 VALUES (2,'B')

با اجرای کوئری بالا، جدول TB2 توسط کاربر شماره دو، Lock می شود.

مرحله 3: حالا کاربر شماره 1 که جدول TB1 را Lock کرده، نیاز به Select زدن روی TB2 دارد:

3

SELECT * FROM TB2

مرحله 4: همزمان کاربر شماره 2 که جدول TB2 را Lock کرده، نیاز به Select زدن روی TB1 دارد:

4

SELECT * FROM TB1

همان طور که در بالا متوجه شدید، کاربر شماره یک می خواهد به منبعی که در اختیار دیگری است دسترسی پیدا کند و کاربر شماره دو نیز به همین صورت، که این اتفاق باعث بروز خطای Deadlock خواهد شد.

در ادامه براساس اینکه عقبگرد یا RollBack کدام کاربر کم هزینه تر است، یکی از آنها RollBack می شوند، بنابراین در مرحله 3 یا 4 با خطای زیر مواجه می شویم، به شماره خطا یعنی 1205 توجه کنید. حالا از این به بعد می دانید اگر در پایگاه داده خطای شماره 1205 اتفاق افتاد، به معنی این است که DeadLock یا بن بست اتفاق افتاده است:

error Deadlock

Msg 1205, Level 13, State 45, Line 1
Transaction (Process ID 64) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.

در ادامه بحث Deadlockخواهید دید...!

با خرید جلسه 5 از بسته آموزشی "افزایش کارایی پایگاه داده" موارد زیر را خواهید دید:

  1. توضیح Deadlock به صورت گرافیکی
  2. با یک مثال عملی نحوه ی اتفاق افتادن Deadlock را نشان دهید.
  3. آیا Cover Index می تواند از بروز خطای DeadLock روی Key LookUp و NonClustered Index جلوگیری می کند؟

دسترسی به موارد آموزشی بالا در بسته خریداری شده

  • شماره جلسه: 5
  • نام فایل ویدئو: 01
  • فرمت فایل: mp4.

نقطه شروع بحث بالا (Deadlock) در ویدئو:  15:25


برای خرید و دانلود کاملآموزش پیشرفته SQL Server کلیک کنید.

READ MORE