繁体   English   中英

非常频繁地拉出很多行 - 我在这里需要memcached吗?

[英]Pulling very large # of rows very often — do I need memcached here?

我有大约10个表,每个表约10,000行,需要经常拉动。

例如,国家列表,世界上所有学校的列表等。

PHP不能在内存中保存这些东西(据我所知)所以我每次都要查询服务器的SELECT * FROM TABLE。 我应该在这里使用memcached吗? 起初虽然它绝对是肯定的,但是第二个想法,不会mysql已经为我缓存了,这几乎是多余的吗?

我对mysql如何缓存数据(或者甚至是否缓存整个表)没有太多了解。

我建议阅读MySQL查询缓存:

http://dev.mysql.com/doc/refman/5.6/en/query-cache.html

您可以使用MySQL查询缓存,但之后您仍然使用数据库资源来建立连接并执行查询。 如果您的页面相对静态,则另一个选项是操作码缓存 但是我认为memcached是最灵活的解决方案。 例如,如果您有一个需要从应用程序中的各个代码点访问的国家/地区列表,您可以从持久存储(mysql)中提取数据,并将它们存储到memcached中。 然后,数据可用于任何业务需求的应用程序的任何部分(包括批处理和cronjobs)。

你肯定需要某种缓存,当然; 数据库内部和周围的缓存层的效率远低于memcached可以提供的效率。

也就是说,如果你得出的结论是正确的东西是缓存查询本身,而不是根据查询缓存你正在生成的内容,我想你会得出结论 - 更多的分析是需要。

在输出生成期间使用除了这些查询的内容之外的哪些数据? 页面缓存或页面片段缓存(或前面的缓存反向代理)是否更有意义? 是否真的有必要“经常”运行这些查询? 底层数据的变化频率如何? 发生这种情况时,您是否有任何通知事件?

此外,没有WHERE子句的SELECT *查询是“代码味道”(表示某些事情可能正在以错误的方式完成),特别是如果并非所有数据都被直接显示给用户。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM