2

我注意到几乎所有数据库都没有在内部实现行缓存。我问这个问题是因为我发现有人为 innodb 添加行缓存补丁。至少,除了性能增益之外,它还有一个优势,即它对客户端是透明的。

是否有任何困难的技术原因阻止这样做,或者仅仅因为它对非常特定的访问模式有用?

谢谢

4

1 回答 1

6

坦率地说,如果您多次获得同一行的相同版本,那么您做错了。作为一般规则,如果数据不太可能更改并且需要多次访问,则应缓存数据。鉴于此规则,如果在服务器端缓存数据库行有帮助,则意味着您为感兴趣的数据对数据库进行了太多往返。您应该在客户端缓存它以减少在往返旅行中。如果数据经常更改,因此您需要经常访问它,缓存仍然无济于事,因为缓存的数据已过期,必须重新执行查询。仅获取与缓存数据不同的数据无济于事;你必须弄清楚有什么不同,你'

最重要的是,大多数数据库都是为高并发性能而设计的。缓存一个人的大量结果集会消耗下一个人的大量结果集的可用资源,依此类推。在高用户数的情况下,构建缓存可能只会导致缓存数据被丢弃,以便为更多缓存数据腾出空间;它不能停留足够长的时间来使用。

于 2012-09-05T02:46:49.940 回答