MySQL查询缓存与自定义缓存功能

问题描述:

我遇到了重复查询减慢渲染HTML表格(在while循环内非常类似的选择查询)的一些问题。所以,我创建了一些简单的缓存功能(PHP):MySQL查询缓存与自定义缓存功能

  • check_cache()
  • write_cache()
  • return_cache()

这些功能防止服务器要求从数据库中任何东西。 加速了很多!

后来我读到的MySQL缓存SELECT语句:SELECT语句的

查询缓存存储的文本与被发送到客户端的相应结果一起。如果稍后收到相同的语句,服务器将从查询缓存中检索结果,而不是再次解析并执行该语句。

为什么如果MySQL已经这样做会提高性能?

+0

它可能更多的情况下MySQL **可以缓存SELECT查询,如果它被配置为这样做;您的查询缓存限制可能太低,因为查询写入的方式可能无法使用缓存......等等。也许值得看看Memcached或Redis。 – CD001

+0

@ CD001好吧,如果MySQL按预期工作,这些功能对性能没有影响? (我更喜欢这种东西是内部处理的) – Edward

+0

理论上......但是你的PHP脚本仍然使用MySQL缓存联系数据库服务器,所以如果存在瓶颈(或者负载过重),你仍然可能遇到问题。如果你的系统依赖于文件缓存,你就会将瓶颈从数据库服务器移动到文件系统......一般来说,文件系统读取速度比数据库读取速度慢(即使数据库使用文件系统进行存储)......但并不总是:)像Memcached或Redis这样的结果存储在系统内存中 - 检索速度非常快。 – CD001

可能出现的问题

1)如果你的应用程序更新表经常,那么查询缓存将不断清除,你不会从中得到任何好处。

2)查询缓存不支持分区表。

3)查询缓存在多个mysqld服务器更新相同的MyISAM表的环境中不起作用。

4)SELECT语句应该是相同的。