多个连接与缓存的单个查询?

时间:2010-11-20 01:58:59

标签: php mysql memcached innodb

我在一个复杂的连接和多个查询中看到了类似的问题,在这种情况下答案总是“它取决于”哈哈,但我想知道我是否可以获得方向输入。希望解释起来不会太复杂。

我正在显示一个页面,该页面必须从大约3-4个不同的表中提取信息。假设我们有一个可以属于俱乐部的人,那个俱乐部有很多活动。我必须从俱乐部,人员,活动信息等中提取信息。

现在我将它们放在3-4个单独的表中,但是我的事件表有很多列,我很确定它们没有标准化,但是我保持这样,所以我不必这样做超过3-5个连接最多现在用一个小数据集似乎很好,但我不禁想知道是否将它们分成3-4个单独的查询然后缓存其中一些的结果会更快?事件表经常更新,所以我可以看到它被无效,但组织和用户表没有,所以我可以看到后者的解决方案受益。你们都推荐哪个?

与此相关的是,我的事件表包含大量列,其中一些列存储经常更新的数据,或者存储大型文本列以存储序列化键/值模板数据。将它分配到另一个表是否明智,所以我有“通用”数据,然后是经常更新的事件数据?谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

如果不对您的特定数据和表格进行测试以及使用它们的频率,则没有一个好的答案。

看起来你很好地掌握了每个人的利弊。如果您有足够的空间来缓存大量数据,或者如果某些俱乐部被许多不同的用户访问,那么您可能最好缓存每个部分。

如果你已经设置了memcached,我建议将它分开并缓存每个查询。当数据发生变化时,需要做一些额外的工作才能使正确的缓存失效,但缓存对于性能来说是一个好主意,并且可以在早期得到它。

我现在不太担心这件事。当你有其他事情可以完成时,过早优化最终会花费你很多时间。

让它运转起来然后如果您遇到性能问题,您可以分析您的应用程序并专注于优化真正需要它的地方。