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.