如何使用C API为多个环境配置共享缓存?

时间:2014-03-31 08:19:34

标签: berkeley-db

如何使用C API为多个环境配置共享缓存?就像Java版一样。 http://docs.oracle.com/cd/E17277_02/html/GettingStartedGuide/env.html#multienvsharedcache

我想打开大量数据库,至少100,000个。但随着打开的数据库数量的增加,db-> open操作变得非常慢。它几乎花费2小时到100,000个数据库。 所以我尝试将这些数据库分发到多个环境(例如,5个环境)。为了提高内存使用效率,我想在envs之间共享缓存。

1 个答案:

答案 0 :(得分:0)

我很确定你不能用C API做到这一点。但是,请考虑一些替代解决方案:

  1. 为每个环境使用相对较小的缓存。您只需要在每个环境的缓存中有足够的内存来保存读取的工作页面集。
  2. 在同一环境中打开所有数据库。但是,如果您需要独立恢复每个数据库,则无法正常工作。
  3. 由于您的系统正在交换,因此打开所有这些数据库可能需要很长时间。但即使是每个环境1MB的缓存也需要100GiB的RAM。您可以在每个环境中使用96KiB或更小的缓存,小于10GiB。试试16KiB!

    这似乎不会破坏性能。您的操作系统在缓存磁盘上的数据方面做得非常好。

    如果您可以在同一环境中打开所有数据库,那就更好了。

相关问题