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.

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;

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

rapi ... Tapi saya rasa itu bukan mysql.
Derek Downey

oops. Maaf. Saya tidak memperhatikan itu untuk MySQL.
datagod
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.