Yavaş sorgu günlüğünü test etmek için yavaş bir sorgu yaz?


14

Yavaş sorgu günlüğü test edebilirsiniz böylece> 2 saniye alacak basit bir sorgu var mı?

Genel özyinelemeli veya yinelemeli bir ifade gibi bir şey arıyorum.

Yanıtlar:


22

Basit bir sorgu:

SELECT SLEEP(2);

Yinelemek mi istiyorsun?

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)

Alternatif olarak, slow_query_log'unuzu test etmek istiyorsanız, ' long_query_time ' değerini 0 olarak değiştirin (tüm sorguları günlüğe kaydetmek için):

SET long_query_time=0;

Bir sidenote olarak SQL Server için eşdeğerWAITFOR DELAY '00:00:02'
Ben Brocka

select sleep (2) aradığım cevap; Kendimi long_query_time ayarlayamıyorum.
David LeBauer 11.11.2011

Kısa ve tatlı her zaman temizdir. Güzel Saklı Yordam da. +1 !!!
RolandoMySQLDBA

SELECT sleep(2)Yavaş günlüğüne şey eklemek vermedi - ama SET GLOBAL long_query_time=0testine bana hızlı girdi verdi. Teşekkürler.
Jesper Grann Laursen

0

İşte oldukça korkunç bir sorgu. Ansi olmayan tarzı birleştirme kullanan Kartezyen bir üründür.

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

temiz ... Ama bunun mysql olduğunu düşünmüyorum.
Derek Downey

ayy. Üzgünüm. MySQL için olduğunu fark etmedim.
datagod
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.