با استفاده از تابع GET_LOCK در MySQL یک کوئری بنویسید که قفل نام‌گذاری‌شده 'my_resource' را با تایم‌اوت 10 ثانیه بگیرد، در صورت موفقیت پیام 'LOCK_ACQUIRED' برگرداند و سپس قفل را با RELEASE_LOCK آزاد کند.

2.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 02:08

0.0

با استفاده از SELECT GET_LOCK('my_resource', 10) می‌توانید تلاش برای گرفتن قفل نام‌گذاری‌شده را انجام دهید — مقدار 1 یعنی موفقیت، 0 یعنی تایم‌اوت و NULL یعنی خطا. برای این سوال از کلاینت MySQL یا یک اسکریپت ساده استفاده کنید: ابتدا GET_LOCK را فراخوانی و مقدار بازگشتی را بررسی کنید، در صورت برابر بودن با 1 یک SELECT برای نمایش 'LOCK_ACQUIRED' اجرا کنید و در نهایت با SELECT RELEASE_LOCK('my_resource') قفل را آزاد کنید. نکته: قفل‌های نام‌گذاری‌شده وابسته به کانکشن هستند و با بسته‌شدن کانکشن هم آزاد می‌شوند، پس بررسی مقدار بازگشتی اهمیت دارد.

توسط پژوهشگر در 220 روز قبل ساعت 02:08
دسته بندی ها: MySQL MySQL for beginner
nima در 220 روز قبل ساعت 10:49

قفل‌های نام‌گذاری‌شده به کانکشن وابسته‌اند و با بسته شدن کانکشن آزاد می‌شوند، پس در کد از بلوک‌های cleanup استفاده کنید تا RELEASE_LOCK همواره انجام شود. مقدار برگشتی GET_LOCK را بررسی کنید: 1 یعنی موفق، 0 تایم‌اوت، NULL خطا. در صورت موفقیت، پیام 'LOCK_ACQUIRED' را نمایش داده و سپس حتماً قفل را با RELEASE_LOCK آزاد کنید تا از بروز deadlock جلوگیری شود.

گزارش

1 پاسخ

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

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