Eine langsame Abfrage schreiben, um die Protokollierung langsamer Abfragen zu testen?


14

Gibt es eine einfache Abfrage, die> 2 Sekunden dauern würde, damit ich den Slow Query Logger testen kann?

Ich suche so etwas wie eine generische rekursive oder iterative Aussage.

Antworten:


22

Eine einfache Abfrage wäre:

SELECT SLEEP(2);

Sie möchten es wiederholen?

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)

Wenn Sie alternativ nur Ihr slow_query_log testen möchten, ändern Sie ' long_query_time ' in 0 (um alle Abfragen zu protokollieren):

SET long_query_time=0;

Als Randnotiz für SQL Server giltWAITFOR DELAY '00:00:02'
Ben Brocka

wähle Schlaf (2) ist die Antwort, nach der ich gesucht habe; Ich kann nicht long_query_time selbst einstellen.
David LeBauer

Kurz und süß ist immer ordentlich. Schöne gespeicherte Prozedur. +1 !!!
RolandoMySQLDBA

Das SELECT sleep(2)hat nichts mit dem Slow-Log hinzufügen - aber das SET GLOBAL long_query_time=0gab mir eine schnelle Eingabe zu testen. Vielen Dank.
Jesper Grann Laursen

0

Hier ist eine ziemlich schreckliche Frage. Es ist ein kartesisches Produkt, bei dem keine Ansi-Verknüpfungen verwendet werden.

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

ordentlich ... Aber ich glaube nicht, dass das MySQL ist.
Derek Downey

Hoppla. Es tut uns leid. Ich habe nicht bemerkt, dass es für MySQL war.
Datum
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.