เขียนคิวรีช้าเพื่อทดสอบการบันทึกคิวรีช้า


14

มีแบบสอบถามง่ายๆที่จะใช้เวลา> 2 วินาทีเพื่อให้ฉันสามารถทดสอบ logger แบบสอบถามช้า?

ฉันกำลังมองหาสิ่งที่ต้องการคำสั่งซ้ำทั่วไปหรือซ้ำแล้วซ้ำอีก

คำตอบ:


22

แบบสอบถามง่ายๆจะเป็น:

SELECT SLEEP(2);

คุณต้องการย้ำหรือไม่

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)

หรือหากคุณต้องการทดสอบ slow_query_log ของคุณให้เปลี่ยน ' long_query_time ' เป็น 0 (เพื่อบันทึกการสืบค้นทั้งหมด):

SET long_query_time=0;

ในฐานะที่เป็น sidenote เทียบเท่าสำหรับ SQL Server คือWAITFOR DELAY '00:00:02'
Ben Brocka

เลือก sleep (2) คือคำตอบที่ฉันกำลังมองหา ฉันไม่สามารถตั้งค่า long_query_time เองได้
David LeBauer

สั้นและหวานเรียบร้อยเสมอ ขั้นตอนการจัดเก็บที่ดีเช่นกัน +1 !!!
RolandoMySQLDBA

SELECT sleep(2)ไม่ได้เพิ่มอะไรให้ช้าบันทึก - แต่SET GLOBAL long_query_time=0ให้ฉันป้อนข้อมูลที่รวดเร็วในการทดสอบ ขอบคุณ
Jesper Grann Laursen

0

นี่เป็นข้อความค้นหาที่น่ากลัว มันเป็นผลิตภัณฑ์คาร์ทีเซียนโดยใช้รูปแบบที่ไม่ใช่ ansi เข้าร่วม

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

เรียบร้อย ... แต่ฉันไม่คิดว่าเป็น mysql
Derek Downey

อุ่ย ขอโทษ ฉันไม่ได้สังเกตว่ามันสำหรับ MySQL
datagod
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.