धीमी क्वेरी लॉगिंग का परीक्षण करने के लिए एक धीमी क्वेरी लिखें?


14

क्या कोई सरल क्वेरी है जो> 2 सेकंड लेगी ताकि मैं धीमी क्वेरी लकड़हारे का परीक्षण कर सकूं?

मैं एक सामान्य पुनरावर्ती या पुनरावृत्ति कथन की तरह देख रहा हूँ।

जवाबों:


22

एक सरल प्रश्न होगा:

SELECT SLEEP(2);

आप इसे पुनरावृत्त करना चाहते हैं?

DELIMITER $$
DROP FUNCTION IF EXISTS `iterateSleep` $$
CREATE FUNCTION `iterateSleep` (iterations INT)
RETURNS INT DETERMINISTIC
BEGIN
    DECLARE remainder INT;

    SET remainder = iterations;

    read_loop: LOOP     
        IF remainder=0 THEN
            LEAVE read_loop;
        END IF;

        SELECT SLEEP(2) INTO @test;
        SET remainder = remainder - 1;          
    END LOOP;

    RETURN iterations;
END $$
DELIMITER ;

-- TO TEST IT OUT
mysql> SELECT iterateSleep(2);
+-----------------+
| iterateSleep(2) |
+-----------------+
|               2 |
+-----------------+
1 row in set (4.01 sec)

वैकल्पिक रूप से यदि आप केवल अपने slow_query_log का परीक्षण करना चाहते हैं, तो ' long_query_time ' को 0 में बदलें (सभी प्रश्नों को लॉग इन करने के लिए):

SET long_query_time=0;

SQL सर्वर के बराबर एक सिडेनोट हैWAITFOR DELAY '00:00:02'
Ben Brocka

चुनिंदा नींद (2) वह उत्तर है जिसकी मुझे तलाश थी; मैं खुद को long_query_time सेट नहीं कर सकता।
डेविड लेबॉयर

छोटा और मीठा हमेशा साफ-सुथरा होता है। साथ ही अच्छा संग्रहित प्रक्रिया। +1 !!!
रोलैंडमाइसीडीडीबीए

SELECT sleep(2)धीमी गति से लॉग में कुछ भी जोड़ नहीं था - लेकिन SET GLOBAL long_query_time=0मुझे परीक्षण के लिए त्वरित इनपुट दे दी है। धन्यवाद।
जेसपर ग्रेन लॉरेन

0

यहाँ एक बहुत ही भयानक क्वेरी है। यह एक कार्टेशियन उत्पाद है, जिसमें गैर-एएनएसआई शैली शामिल है।

use master
select * from sys.objects, sys.indexes

साफ ... लेकिन मुझे नहीं लगता कि यह mysql है।
डेरेक डाउनी

उफ़। माफ़ करना। मैंने देखा कि यह MySQL के लिए नहीं था।
डेटागोड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.