mysql存储过程性能问题

时间:2011-04-06 06:51:32

标签: mysql stored-procedures

我有这种情况

相同数据库中的2个,一个在DEV服务器上,另一个在PROD服务器上(完全独立的服务器)

我的Web应用程序与DEV DB一起在DEV服务器上运行。 我的存储过程在DEV DB上运行0.300秒-0.600秒, 但是,相同的过程在PROD服务器上运行3-12秒。(来自DEV服务器上的同一个Web应用程序) DB结构,索引和数据都是相同的。显着延迟。

唯一不同的是版本 DEV - 5.0.67-社区 PROD - 5.1.54-community

对于正常的sql语句,延迟差别不大。

可能的原因是什么? 还会设置mysql缓存提高性能吗?

干杯

顺便提一下,让我补充一下,我的存储过程就是为其他proc创建临时表来使用数据。生产数据库也连接到另一个具有传入流量的PROD网络服务器上的同一个网络应用程序。但是为什么这只会发生在我的存储过程中。我的其他查询或普通查询在时间上没有显着差异。

死锁会导致延迟吗?

DEADLOCK was detected, 
OS WAIT ARRAY INFO: reservation count 17394257, signal count 14459620
--Thread 6600 has waited at G:\mysql-5.1.54-winbuild\mysql-community-nt-5.1.54-build\storage\innobase\
Mutex at 02878180 created file .\dict\dict0dict.c line 713, lock var 1
waiters flag 1
Mutex spin waits 0, rounds 367825986, OS waits 15398330
RW-shared spins 2245011, OS waits 810719; RW-excl spins 2893516, OS waits 820381
------------------------
LATEST DETECTED DEADLOCK
------------------------
110408  9:05:45
*** (1) TRANSACTION:
TRANSACTION 0 203543446, ACTIVE 0 sec, OS thread id 6584 fetching rows
mysql tables in use 2, locked 2
LOCK WAIT 761 lock struct(s), heap size 60736, 30170 row lock(s)

1 个答案:

答案 0 :(得分:0)

要看的事情:

  • 比较您从DEV和PROD
  • 获得的查询计划
  • PROD中表格的大小与DEV
  • 相比
  • PROD服务器上的负载 - cpu最大化了吗?有很多等待i / o?
  • PROD中的争用和锁定