我在金融业工作。我们想推出数据库命中的数据处理。它非常昂贵。因此,我们计划采用按需缓存逻辑。运行时插入&运行时查找
是否有人致力于实现超过1000万条记录的缓存逻辑?每个记录大约是160-200字节。
我用不同的方法面对以下缺点。
如果你遇到这个问题,并以任何方式解决了,请给我一些建议。
谢谢
发布于 2011-07-12 19:13:58
如果您的缓存是一个简单的键值存储,则不应该使用std::map,它具有O(log )查找,而使用std::unordered_map,它具有O(1)查找。只有在需要排序时才应该使用std::map。
听起来,性能是您所追求的,所以您可能想看看Boost侵入。您可以轻松地将unordered_map和list结合起来创建一个高效率的LRU。
发布于 2011-07-12 18:13:05
将所有内容读入内存并创建R&B树以进行密钥访问。
树/index.html
在最近的一个项目中,我们有大约10s记录的数据库,并且正在使用这样的策略。
您的数据权重是2GB,从您的帖子。在头顶上,它会说出双倍。对于任何64位的体系结构来说,这都不是问题。
发布于 2011-07-12 18:15:14
我最近改变了我们产品的内存分配(3D医学卷查看器),以使用良好的旧内存映射文件。
其优点是:
在我的例子中,它只是数据(大部分是只读的)。如果您有一个更复杂的数据结构,这将是更多的工作比使用“正常”对象。
您实际上可以跨进程共享这些文件(如果它们是由一个真正的文件支持的)。这可能会有不同的表现,我对此没有经验。
https://stackoverflow.com/questions/6668824
复制相似问题