【问题标题】:MySQL query caching workingMySQL查询缓存工作
【发布时间】:2014-07-16 08:13:45
【问题描述】:

我想了解 MySQL 查询缓存的工作原理。我已经检查了this api

这些场景将如何运作。?

案例一

select * from my_table where column = 'Myvalue';

案例 2

select * from my_table where column = 'test';

案例 3

select * from my_table where column = 'Myvalue';

所以当案例 3 被执行时,我想知道结果是从缓存中获取还是从数据库中获取。?有人可以解释一下吗?因为他们在手册中提到了这一点

查询必须完全相同(字节对字节)才能被视为 一模一样。

【问题讨论】:

  • 没错,逐个字节。查询 1 和 3 似乎相同。有什么问题?
  • @MarcusAdams。这就是我要问的。如果是 3,结果会从表中还是从缓存中获取。?

标签: mysql database caching query-cache


【解决方案1】:

由于查询 1 和 3 相同,只要第一个查询的结果仍在 query cache 中并且两次查询之间没有更新表,则第三个查询将由缓存代替打桌子。

查询缓存默认关闭。将query_cache_size 设置为字节大小以启用查询缓存。设置为 1024 字节的倍数。文档说:

数十兆字节的大小通常是有益的。

关于query cache operation,还要注意以下几点:

在 MySQL 5.1.17 之前,prepared statements 不使用查询缓存。 从 5.1.17 开始,prepared statements 使用下面的查询缓存 某些条件,因制备方法而异。

如果表发生变化,所有使用该表的缓存查询都会变为 无效并从缓存中删除。

请注意,根据查询缓存,以下两个查询相同,尽管它们返回相同的结果集:

select * from my_table where column = 'Myvalue';

SELECT * FROM my_table WHERE column = 'Myvalue';

【讨论】:

    猜你喜欢
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    • 2014-06-25
    • 2015-02-05
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多