应该将存储过程缓存在Mysql中吗?如果是,它会保留在缓存中多久?应该将存储过程缓存在Mysql中
在我的情况下,当我第一次调用一个存储过程时,它给了我1sec的结果,之后它给了我400ms的结果。当我改变传递给存储过程的一些参数并且第一次调用时,执行相同的行为。所以,我不明白发生了什么?有人能指导我吗?
谢谢。
应该将存储过程缓存在Mysql中吗?如果是,它会保留在缓存中多久?应该将存储过程缓存在Mysql中
在我的情况下,当我第一次调用一个存储过程时,它给了我1sec的结果,之后它给了我400ms的结果。当我改变传递给存储过程的一些参数并且第一次调用时,执行相同的行为。所以,我不明白发生了什么?有人能指导我吗?
谢谢。
这是使用高速缓存的任何系统的正常行为:
您可以将你的程序中阅读更多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;