PDA

View Full Version : lock manager چیه؟



saeidcd
دوشنبه 26 دی 1390, 12:45 عصر
سلام خدمت همه اساتید محترم
من یه اطلاعاتی در مورد lock manager میخاستم
تا جایی که من میدونم وقتی یه برنامه بخاطرtransaction اجراش متوقف میشه باید یه کاری کرد که این اتفاق نیافته باید چطوری پیاده سازی بشه؟؟ اصلا این lock manager چیه؟:متفکر:

یوسف زالی
دوشنبه 26 دی 1390, 21:45 عصر
سلام دوست من.
تا جایی که می دونم قابلیتی هست که به شما این امکان رو می ده که برای مثال حلقه هاتون زمانی رو به منظور تشخیص اینکه باید با اعلان تایم اوت ازش خارج شید و لوپ بی نهایت هست ست کنید.
یا در حالتهایی که مخصوصا اس پی ها واقعا در حالت قفل شده قرار می گیرند پس از مدتی منابع رو از اختیار اونها بگیرید.
این در مورد قضیه هست:
About the lock manager (http://www.cwcsoftware.com/webhelp/About/Lock_managers.htm)
این هم منبع msdn (http://msdn.microsoft.com/en-us/library/ms174607.aspx).
فکر می کنم جواب سوال شما در اونها باشه.
موفق باشید.

saeidcd
سه شنبه 27 دی 1390, 08:31 صبح
خیلی ممنون به خاطر جوابتون
اما من چطوری میتونم پیاده سازیش کنم اخه یه پروژه واسه دانشگاه دارم که استاد خواسته داخل یه برنامه transaction , lock managr رو پیاده سازی کنید حالا من توی lock manager موندم و برای مثال هم چیزی پیدا نمیکنم
ممنون

baktash.n81@gmail.com
سه شنبه 27 دی 1390, 09:10 صبح
سلام

همونطور که به نظر می آد وظیفه Lock Manager مدیریت منابعی هست که به هر دلیل باید Lock بشن ... معمولا در هنگام اجرای Transaction ...

نمی دونم چه جوری می شه مدیریتش کرد اما چندتا DMV وجود داره که یه سری اطلاعات در این مورد بهت می ده ...

کد زیر منابعی که قفل شدن رو نشونت می ده که بر اساس DB و Session فیلتر شده

SELECT request_session_id, DB_NAME(resource_database_id) AS [Database],
resource_type, resource_subtype, request_type, request_mode,
resource_description, request_mode, request_owner_type
FROM sys.dm_tran_locks
WHERE request_session_id > 50
AND resource_database_id = DB_ID()
AND request_session_id <> @@SPID
ORDER BY request_session_id;


و این Query درخواست هایی که منتظر باز شدن قفل منابع هستند رو نشون می ده ...


SELECT tl.resource_type, tl.resource_database_id,
tl.resource_associated_entity_id, tl.request_mode,
tl.request_session_id, wt.blocking_session_id,
wt.wait_type, wt.wait_duration_ms
FROM sys.dm_tran_locks as tl
INNER JOIN sys.dm_os_waiting_tasks as wt
ON tl.lock_owner_address = wt.resource_address
ORDER BY wait_duration_ms DESC;

saeidcd
سه شنبه 27 دی 1390, 12:05 عصر
مرسی خیلی کمکم کرد :تشویق:

این هم چیزهای بدی نیست:

http://bukhantsov.org/2011/09/lock-information/

amoor1363
سه شنبه 27 آبان 1393, 13:37 عصر
من چجوری می تونم یه لاک منیجر رو تو محیط ویژوال شبیه سازی کنم و برنامه اش را بنویسم ؟ کسی می تونه کمکم کنه ؟