我在MySQL中有一个非常长的例程,其中包含多个SELECT
,INSERT
和UPDATE
语句,其中包含一些IF
和{{1} }秒。它一直运行良好,直到最近,它需要花费超过20秒的时间来完成(考虑到过去1秒左右,这是不可接受的)。
最简单,最简单的方法是找出瓶颈的常规来源?基本上这个例程正在停止并且有一点......如何在不拆分例程并逐个测试每个部分的情况下找出它的位置?
答案 0 :(得分:0)
如果您使用Percona Server(具有许多增强功能的MySQL的免费分发),您可以使用log_slow_sp_statements
配置变量为单个查询创建慢查询日志记录时间。见http://www.percona.com/doc/percona-server/5.5/diagnostics/slow_extended_55.html
如果您正在使用库存MySQL,则可以在存储过程中添加语句,以将一系列会话变量设置为SYSDATE()
函数返回的值。在SP中的不同点使用不同的会话变量。然后,在测试执行中运行SP后,您可以检查这些会话变量的值,以查看SP的哪个部分花费的时间最长。
答案 1 :(得分:0)