SLEEP(सेकंड) फ़ंक्शन से कृत्रिम विलंब डालना
MySQL में SLEEP(seconds) फ़ंक्शन निर्दिष्ट सेकंड तक रुकता है (भिन्नात्मक सेकंड समर्थित)। इसका उपयोग स्टोर्ड प्रोसीजर/ट्रिगर में टेस्टिंग या दर-सीमित करने के लिए किया जा सकता है।
स्टोर्ड प्रोसीजर में उदाहरण
DELIMITER //
CREATE PROCEDURE delayInMessage()
BEGIN
SELECT SLEEP(20);
SELECT 'AFTER SLEEPING 20 SECONDS, BYE!!!';
END //
DELIMITER ;
कॉल और आउटपुट
CALL delayInMessage();
+-----------+ | SLEEP(20) | +-----------+ | 0 | -- 20 सेकंड बाद लौटता है +-----------+ +------------------------------------+ | AFTER SLEEPING 20 SECONDS, BYE!!! | +------------------------------------+ | AFTER SLEEPING 20 SECONDS, BYE!!! | +------------------------------------+
उपयोग केस
- डेडलॉक/लॉक वेट टेस्टिंग के लिए कृत्रिम विलंब।
- बाहरी API दर सीमा अनुकरण।
- बेंचमार्किंग: क्वेरी निष्पादन समय में निश्चित विलंब जोड़ना।
चेतावनियां
- उत्पादन में उपयोग न करें — यह कनेक्शन थ्रेड को ब्लॉक करता है, कनेक्शन पूल खत्म कर सकता है।
- ट्रिगर में
SLEEPउपयोग करना **बहुत खराब अभ्यास** है — यह लिखने की विलंबता बढ़ाता है और डेडलॉक जोखिम बढ़ाता है। - अधिकतम नींद समय: प्लेटफॉर्म पर निर्भर (आमतौर पर बड़ी संख्या अनुमत)।
SLEEP(0)तुरंत लौटता है (उपज/यील्ड के लिए उपयोगी)।
बेहतर विकल्प: एप्लिकेशन लेयर पर विलंब
एप्लिकेशन कोड (Java Thread.sleep, Python time.sleep, Node setTimeout) में विलंब डालें, डेटाबेस लेयर पर नहीं।