Tulis kueri lambat untuk menguji pembuatan log kueri lambat?

14

Apakah ada permintaan sederhana yang akan membutuhkan> 2 detik sehingga saya bisa menguji logger permintaan lambat?

Saya mencari sesuatu seperti pernyataan rekursif atau iteratif generik.

David LeBauer
sumber

Jawaban:

22

Kueri sederhana adalah:

SELECT SLEEP(2);

Anda ingin mengulanginya?

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)

Atau jika Anda hanya ingin menguji slow_query_log Anda, ubah ' long_query_time ' menjadi 0 (untuk mencatat semua pertanyaan):

SET long_query_time=0;
Derek Downey
sumber
Sebagai sidenote, padanan untuk SQL Server adalahWAITFOR DELAY '00:00:02'
Ben Brocka
pilih tidur (2) adalah jawaban yang saya cari; Saya tidak bisa menetapkan long_query_time sendiri.
David LeBauer
Pendek dan manis selalu rapi. Prosedur Disimpan Bagus juga. +1 !!!
RolandoMySQLDBA
Tidak SELECT sleep(2)menambahkan apa pun ke log lambat - tetapi SET GLOBAL long_query_time=0memberi saya input cepat untuk menguji. Terima kasih.
Jesper Grann Laursen
0

Ini pertanyaan yang sangat mengerikan. Ini adalah produk Cartesian, menggunakan gaya bergabung non-ansi.

use master
select * from sys.objects, sys.indexes
datagod
sumber
rapi ... Tapi saya rasa itu bukan mysql.
Derek Downey
oops. Maaf. Saya tidak memperhatikan itu untuk MySQL.
datagod