【问题标题】:Should stored procedure cached in Mysql存储过程是否应该缓存在 Mysql 中
【发布时间】:2013-05-04 20:46:58
【问题描述】:

存储过程应该缓存在Mysql中吗?如果是,它会在缓存中停留多长时间?

在我的情况下,当我第一次调用一个存储过程时,它会在 1 秒内给我结果,然后在 400 毫秒内给我结果。当我更改传递给存储过程的一些参数并第一次调用时,执行相同的行为。所以,我无法理解发生了什么?有人可以指导我吗?

谢谢。

【问题讨论】:

    标签: mysql caching stored-procedures mysql-workbench


    【解决方案1】:

    这是任何使用缓存的系统的正常行为:

    • 在第一次执行时,结果被加载到缓存中,因此出现了一个小的开销
    • 以下执行将花费更少,因为它们已经在缓存中但是如果任何输入发生更改(例如在您的情况下:更改存储过程的一些参数),那么结果已经在缓存不再可行,因此必须将新结果(使用更改的输入)放入缓存中,这就是为什么需要更长的时间

    您可以阅读更多here

    【讨论】:

      【解决方案2】:

      使用 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;

      【讨论】:

        猜你喜欢
        • 2011-11-27
        • 2011-03-28
        • 1970-01-01
        • 2013-06-09
        • 1970-01-01
        • 1970-01-01
        • 2021-03-07
        • 2014-05-31
        • 1970-01-01
        相关资源
        最近更新 更多