MySQL查询缓存与自定义缓存功能
问题描述:
我遇到了重复查询减慢渲染HTML表格(在while循环内非常类似的选择查询)的一些问题。所以,我创建了一些简单的缓存功能(PHP):MySQL查询缓存与自定义缓存功能
check_cache()
write_cache()
return_cache()
这些功能防止服务器要求从数据库中任何东西。 加速了很多!
后来我读到的MySQL缓存SELECT语句:SELECT语句的
查询缓存存储的文本与被发送到客户端的相应结果一起。如果稍后收到相同的语句,服务器将从查询缓存中检索结果,而不是再次解析并执行该语句。
为什么如果MySQL已经这样做会提高性能?
答
可能出现的问题
1)如果你的应用程序更新表经常,那么查询缓存将不断清除,你不会从中得到任何好处。
2)查询缓存不支持分区表。
3)查询缓存在多个mysqld服务器更新相同的MyISAM表的环境中不起作用。
4)SELECT语句应该是相同的。
它可能更多的情况下MySQL **可以缓存SELECT查询,如果它被配置为这样做;您的查询缓存限制可能太低,因为查询写入的方式可能无法使用缓存......等等。也许值得看看Memcached或Redis。 – CD001
@ CD001好吧,如果MySQL按预期工作,这些功能对性能没有影响? (我更喜欢这种东西是内部处理的) – Edward
理论上......但是你的PHP脚本仍然使用MySQL缓存联系数据库服务器,所以如果存在瓶颈(或者负载过重),你仍然可能遇到问题。如果你的系统依赖于文件缓存,你就会将瓶颈从数据库服务器移动到文件系统......一般来说,文件系统读取速度比数据库读取速度慢(即使数据库使用文件系统进行存储)......但并不总是:)像Memcached或Redis这样的结果存储在系统内存中 - 检索速度非常快。 – CD001