با استفاده از تابع IS_USED_LOCK در MySQL، یک پرسوجو بنویسید که بررسی کند آیا قفل با نام 'resource_lock' توسط جلسهای گرفته شده و در صورت گرفته بودن، شناسه اتصال آن جلسه را نمایش دهد.
4.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:28 0.0
برای حل این مسئله از تابع سیستمی IS_USED_LOCK استفاده کنید: SELECT IS_USED_LOCK('resource_lock'); این تابع در MySQL شناسه اتصال (CONNECTION_ID) جلسهای را که قفل نامگذاریشده را گرفته برمیگرداند و در صورتی که قفل آزاد باشد NULL بازمیگرداند. نکات مفید: میتوانید نتیجه را با SELECT CONNECTION_ID() مقایسه کنید تا بفهمید آیا همین جلسه قفل را در اختیار دارد، و برای بررسی آزاد بودن قفل بهجای آن میتوانید از IS_FREE_LOCK استفاده کنید؛ اجرای این دستور نیاز به دسترسی خاصی ندارد و برای مدیریت قفلهای نامگذاریشده همراه با GET_LOCK و RELEASE_LOCK کاربردی است.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای بررسی اینکه آیا قفل نامگذاریشده resource_lock توسط همان جلسه گرفته شده است، از SELECT IS_USED_LOCK('resource_lock') استفاده کنید. اگر خروجی عددی باشد، همان شمارهٔ اتصال (CONNECTION_ID()) آن جلسه است؛ در غیر اینصورت NULL است و نشان میدهد قفل در حال حاضر توسط هیچ جلسهای در دسترس نیست یا توسط جلسه دیگری گرفته شده است. برای تأیید بیشتر، نتیجهٔ IS_USED_LOCK را با SELECT CONNECTION_ID() مقایسه کنید تا بدانید آیا این جلسه همان قفل را دارد. در صورت نیاز به بررسیِ آزاد بودن قفل بهطور همزمان، میتوانید از IS_FREE_LOCK('resource_lock') استفاده کنید؛ استفاده از GET_LOCK و RELEASE_LOCK هم مدیریتِ این قفلهای نامگذاریشده را ساده میکند.
گزارش