با استفاده از تابع 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 کاربردی است.

توسط پژوهشگر در 201 روز قبل ساعت 03:28
دسته بندی ها: MySQL MySQL for beginner
nima در 201 روز قبل ساعت 06:18

برای بررسی اینکه آیا قفل نام‌گذاری‌شده 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 هم مدیریتِ این قفل‌های نام‌گذاری‌شده را ساده می‌کند.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری