MySQL SLEEP() फ़ंक्शन: बिजी-वेट नहीं, बल्कि कुशल विलंब
नहीं, MySQL का SLEEP() फ़ंक्शन बिजी-वेट (busy-wait) नहीं है। यह CPU साइकिल बर्बाद किए बिना निर्दिष्ट सेकंड के लिए कनेक्शन को सस्पेंड कर देता है।
उदाहरण के साथ कार्यान्वयन
आइए पहले एक टेबल बनाते हैं:
mysql> CREATE TABLE DemoTable (FirstName VARCHAR(100));
रिकॉर्ड डालना
mysql> INSERT INTO DemoTable VALUES('John'), ('Adam'), ('Bob'), ('Chris'), ('Robert');
SLEEP() फ़ंक्शन के साथ SELECT क्वेरी
mysql> SELECT SLEEP(10), FirstName FROM DemoTable;
आउटपुट:
+-----------+-----------+
| SLEEP(10) | FirstName |
+-----------+-----------+
| 0 | John |
| 0 | Adam |
| 0 | Bob |
| 0 | Chris |
| 0 | Robert |
+-----------+-----------+
5 rows in set (50.00 sec)
महत्वपूर्ण अवलोकन:
- कुल निष्पादन समय: 50 सेकंड (5 पंक्तियाँ × 10 सेकंड प्रत्येक)
SLEEP(10)प्रत्येक पंक्ति के लिए 10 सेकंड रुकता है- परिणाम कॉलम में हमेशा
0लौटाता है (सफल समाप्ति दर्शाता है) - यह CPU-इंटेंसिव बिजी लूप नहीं है; यह OS-लेवल स्लीप का उपयोग करता है
व्यावहारिक उपयोग के मामले
- क्वेरी निष्पादन में कृत्रिम विलंब जोड़ना (टेस्टिंग के लिए)
- रेट लिमिटिंग या थ्रॉटलिंग लागू करना
- डेडलॉक परिदृश्यों का अनुकरण करना
- बेंचमार्किंग और प्रदर्शन परीक्षण
नोट: उत्पादन वातावरण में SLEEP() का अत्यधिक उपयोग कनेक्शन पूल को ब्लॉक कर सकता है और समग्र प्रदर्शन को प्रभावित कर सकता है।