7
A
回答
3
可以滥用slow query log
此:
集long_query_time = 0
,这将迫使MySQL来记录所有的查询在慢查询日志。
现在设置要显示的日志,请参阅:http://dev.mysql.com/doc/refman/5.1/en/log-destinations.html 确保你让慢查询日志把你的查询表中的,这是5.1+
现在默认写这样一个存储过程所以:
DELIMITER $$
CREATE PROCEDURE run_explain_on__the_slow_query_log(IN which_db VARCHAR(512))
BEGIN
DECLARE sql VARCHAR(10000);
DECLARE done INTEGER DEFAULT 0;
DECLARE cursor1 CURSOR FOR SELECT sql_text FROM mysql.slow_log
WHERE sql_text LIKE 'SELECT%'
AND (db = which_db OR which_db IS NULL);
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
OPEN cursor 1;
WHILE NOT (done) DO
FETCH cursor1 INTO sql;
SET sql = CONCAT('EXPLAIN EXTENDED ',sql);
PREPARE stmt FROM sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END WHILE;
END $$
DELIMITER ;
您可能需要调整它一下,这里的slow_log
表的创建语句。
CREATE TABLE mysql.slow_log(
start_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
user_host MEDIUMTEXT NOT NULL,
query_time TIME NOT NULL,
lock_time TIME NOT NULL,
rows_sent INT(11) NOT NULL,
rows_examined INT(11) NOT NULL,
db VARCHAR(512) NOT NULL,
last_insert_id INT(11) NOT NULL,
insert_id INT(11) NOT NULL,
server_id INT(10) UNSIGNED NOT NULL,
sql_text MEDIUMTEXT NOT NULL
)
ENGINE = CSV
CHARACTER SET utf8
COLLATE utf8_general_ci
COMMENT = 'Slow log';
相关问题
- 1. 针对团队计划的MySQL查询
- 2. SQLite查询计划
- 3. MySQL查询结果划分
- 4. 查询计划对于Sqlite
- 5. 何时(SELECT)查询计划?
- 6. XPath查询计划任务
- 7. NHibernate查询执行计划?
- 8. 意外的查询计划
- 9. 计数MySQL查询
- 10. MySql计数查询
- 11. MySQL查询统计
- 12. 在mysql查询计划中发生意外的索引扫描
- 13. 从命令行/终端创建MySQL Workbench查询计划图像
- 14. 即使EXPLAIN显示好计划,MySQL查询速度缓慢
- 15. 如何在此计划中的mysql中执行连接查询
- 16. MySQL查询加入和计数查询
- 17. 计划MySQL优化
- 18. MySQL - 计划任务
- 19. 查询的计划日期比较
- 20. SQL查询的计划时数天
- 21. 在SSRS中显示查询计划
- 22. 查询执行计划工具 - Java
- 23. 了解Postgres的查询计划
- 24. ROW_NUMBER()查询计划排序优化
- 25. 修改Postgres 9.0查询计划
- 26. 选择性XML索引查询计划
- 27. 查询计划缓存和性能
- 28. 如何优化查询?解释计划
- 29. 需要了解查询执行计划
- 30. 查询执行计划:缺失索引
你打算分析大量的查询吗? :) – Karolis
@Karolis - 整个系统尝试确保它在运行时可以确保不会发生任何性能问题 –