我有一个项目,其中一个要求是缓存什么是基本上只读的数据,以减轻数据库的压力.关于缓存如何与db一起工作,我有点困惑.
缓存如何工作?我见过一些叫做查询缓存的东西,但这会缓存查询结果吗?或者只是查询?并不是一种视图缓存形式?
我只是想朝着正确的方向努力.该项目将使用MySQL 5.1作为商店,因此任何可以消除我的困惑的链接将是一个很大的帮助.一般的谷歌搜索只提供了查询缓存,由于我在这方面缺乏知识,我不确定这是否是我应该去的方向.
解决方法
The MySQL query cache确实缓存了查询的结果,只要后续查询完全相同,就会提供计算结果而不是实际运行查询. MysqL也会跳过计算执行计划.
要使用它,您可以在服务器的my.cnf中使用turn it on,或者在查询前使用SQL_CACHE提示.如果你在my.cnf中打开它,你可以告诉MysqL不要在查询前使用sql_NO_CACHE来缓存结果.
对表的任何写入(INSERT,UPDATE,DELETE等)都将使来自该表的查询缓存中的所有条目无效.
查询缓存有一个性能异常:它使用低效的算法来查找缓存中的条目,所以creating a larger cache can result in worse performance.您应该尝试使用自己的数据和查询配置文件进行更改,但上次我做这个实验时发现大约256MB是甜蜜点.比这更大或更小,性能变差.手册建议“Tens of megabytes”
您还可以使用类似memcached的方法在MysqL之外实现缓存.这对应用程序来说是不透明的,因此您必须在应用程序中添加额外的代码来处理对memcached的查找,然后,如果您错过了,则执行在数据库中查找并将结果存储在memcached中.