为了使用mysql缓存,是否需要在每个mysql查询中添加一些内容?

为了使用mysql缓存,是否需要在每个mysql查询中添加一些内容?,mysql,caching,ubuntu,Mysql,Caching,Ubuntu,好的,我已经完成了教程,并重新启动了mysql服务器。然而,每当我运行查询,然后再次执行查询时,我几乎看不到任何性能提升。这就像一个.200秒的增益,告诉我缓存不工作 这是my.cnf文件中的缓存配置 # * Query Cache Configuration # query_cache_limit = 10M query_cache_size = 256M query_cache_type = 1 我测试它的方法是从数据库运行一个例程。该例程由一个简单

好的,我已经完成了教程,并重新启动了mysql服务器。然而,每当我运行查询,然后再次执行查询时,我几乎看不到任何性能提升。这就像一个.200秒的增益,告诉我缓存不工作

这是my.cnf文件中的缓存配置

# * Query Cache Configuration
#
query_cache_limit       = 10M
query_cache_size        = 256M
query_cache_type        = 1
我测试它的方法是从数据库运行一个例程。该例程由一个简单的SELECT语句组成,该语句连接两个小的查找表

show variable like '%query_cache%';
结果

编辑1


另外,当我使用Workbench查看服务器运行状况时。查询缓存命中率保持在0%。

您应该返回并以字节为单位指定参数。我知道showVar看起来是正确的,但是这些值在系统中使用,看起来您已经指定了上面第一个代码块中的MBs参数。尽管showVar看起来不错,但系统可能会看到10M,并默认为0。

好的,下面是解决我问题的方法。我最终在MySql工作台中启用了远程管理。然后我转到配置->选项文件。它给了我一个错误,指出没有名为[mysqld]的节,它将添加它。之后,我转到“性能”选项卡,注意到缓存的所有复选框都未选中。我检查了所有的值,MySql Workbench建议我在输入缓存值时用K、M或G作为值的后缀。在所有这些之后,我重新启动了服务器,它成功地缓存了我的查询


不确定配置中所有的技术部分都发生了什么变化,但工作台为我处理了所有事情。

第二次查询是否完全相同,是否有任何对表的写入?您不需要向查询中添加任何缓存,不过可以通过添加SQL\u NO\u缓存来禁用它。是的,这是一个例程。第二个是否定的。这个例程是一个过程还是一个函数,mysql的版本是什么?这个例程是一个过程,版本是5.5.22。我试着将这些值设置为字节,但性能仍然没有变化。这些值最初被设置为nM,因此我假设MySql已经提升了配置的这一部分。我不会假设任何内容,而是根据大多数DB配置中的标准实践来设置它们。即使是大型ERP系统参数也仍然以字节为单位。这是核心的、非常稳定的DB代码,可以读取和使用这些参数,并且可能永远不会更改。showVar工作并不意味着它将正确缓存。您是否更改了任何其他外围设备配置?像这样的大多数缓存问题都可以追溯到外围内存congfig/issuesNothing超出该配置。我的假设是基于MySQL的新安装…所以如果他们将其指定为nM,那么这就是我假设的原因。请稍后解释外围内存配置,进入/etc/MySQL/My.conf并告诉我查询缓存限制等于多少。默认情况下,它是1MB,基本上意味着不要缓存大于这个数字的结果。忘了它,我在上面看到,您将它们保存在一个文件中,而不是CL
have_query_cache    YES
query_cache_limit   10485760
query_cache_min_res_unit    4096
query_cache_size    268435456
query_cache_type    ON
query_cache_wlock_invalidate    OFF