【发布时间】:2013-05-04 20:46:58
【问题描述】:
存储过程应该缓存在Mysql中吗?如果是,它会在缓存中停留多长时间?
在我的情况下,当我第一次调用一个存储过程时,它会在 1 秒内给我结果,然后在 400 毫秒内给我结果。当我更改传递给存储过程的一些参数并第一次调用时,执行相同的行为。所以,我无法理解发生了什么?有人可以指导我吗?
谢谢。
【问题讨论】:
标签: mysql caching stored-procedures mysql-workbench
存储过程应该缓存在Mysql中吗?如果是,它会在缓存中停留多长时间?
在我的情况下,当我第一次调用一个存储过程时,它会在 1 秒内给我结果,然后在 400 毫秒内给我结果。当我更改传递给存储过程的一些参数并第一次调用时,执行相同的行为。所以,我无法理解发生了什么?有人可以指导我吗?
谢谢。
【问题讨论】:
标签: mysql caching stored-procedures mysql-workbench
这是任何使用缓存的系统的正常行为:
您可以阅读更多here
【讨论】:
使用 Deallocate 在您的程序中:
CREATE PROCEDURE GetVenues (TheVenue varchar(22))
BEGIN
SET @s = 'SELECT * FROM Venues WHERE VenueName = ?';
SET @v = TheVenue;
PREPARE stmt1 FROM @s;
EXECUTE stmt1 USING @v;
DEALLOCATE PREPARE stmt1;
END;
其他选项:RESET QUERY CACHE;
如果您正在运行的用户具有重新加载权限。或者,您可以通过以下方式对查询缓存进行碎片整理:
FLUSH QUERY CACHE;
【讨论】: