我有一个项目,其中一项要求是缓存本质上是只读的数据,以减轻数据库的压力。我只是对缓存如何与数据库一起工作感到有些困惑。
如何不缓存的工作?我见过一种叫做查询缓存的东西,但是它会缓存查询结果吗?还是只是查询?无论如何,视图不是一种缓存形式吗?
我只是在寻找正确方向的推动。该项目将使用 MySQL 5.1 作为商店,因此任何可以消除我的困惑的链接都会有很大帮助。一般的谷歌搜索只为我提供了查询缓存,由于我在这方面缺乏知识,我不确定这是否是我应该走的方向。
MySQL 查询缓存确实会缓存查询的结果,只要后续查询完全相同,就会提供计算结果而不是实际运行查询。MySQL 也会跳过计算执行计划。
要使用它,您可以在服务器中打开它my.cnf或在查询前使用SQL_CACHE提示。如果您在 my.cnf 中打开了它,您可以通过在查询前使用 SQL_NO_CACHE 来告诉 MySQL 不要缓存结果。
对表的任何写入(插入、更新、删除等)都会使查询缓存中来自该表的所有条目无效。
查询缓存的一个性能异常:它使用一种低效的算法来查找缓存中的条目,因此创建更大的缓存可能会导致性能下降。您应该尝试使用自己的数据和查询配置文件更改它,但上次我进行此实验时,我发现大约 256MB 是最佳位置。比这更大或更小,性能变得更糟。手册建议“几十兆”
您还可以使用诸如memcached 之类的东西在 MySQL 之外实现缓存。这对应用程序不是透明的,因此您必须在应用程序中添加额外的代码来处理对 memcached 的查找,然后,如果未命中,则在数据库中进行查找并将结果存储在 memcached 中。
| 归档时间: |
|
| 查看次数: |
131 次 |
| 最近记录: |