代码之家  ›  专栏  ›  技术社区  ›  Joe

我应该管理页面还是仅仅依靠虚拟内存?

  •  5
  • Joe  · 技术社区  · 14 年前

    我正在用C语言编写一个数据库样式的东西(即它将存储和操作大约500000条记录)。我将在内存受限的环境(VPS)中运行它,所以我不希望内存使用率膨胀。我不会处理大量的数据——可能总共高达200MB,但我希望内存占用保持在30MB的范围内(将这些数据从空中拉出来)。

    我的直觉是做我自己的页面处理(真正的数据库是这样做的),但是我收到了建议,我应该只分配所有的页面,并允许操作系统为我做VM分页。我的数字永远不会超过这个数量级。 在这种情况下,哪一个是最好的选择?

    假设是第二种选择,程序在什么时候进行自己的分页是明智的?显然,可以处理千兆字节的RDBMS必须做到这一点,但在规模上必须有一点值得问这个问题。

    谢谢!

    2 回复  |  直到 14 年前
        1
  •  9
  •   Matt Joiner    14 年前

    使用 malloc 直到它开始运转。 然后,直到那时 ,开始分析。如果您遇到与专有和主流“真实数据库”相同的性能问题,那么您自然会开始执行缓存/页面/对齐优化。这些东西可以很容易地在您有一个工作的数据库之后插入,并且与有一个工作的数据库是正交的。

        2
  •  3
  •   Amardeep AC9MF    14 年前

    执行自己分页的数据库管理系统也受益于大量研究工作的投入,以确保它们的分页算法在不同的系统和负载条件下都能正常工作。除非你有一套类似的资源供你使用,否则我建议你不要采用这种方法。

    您可以使用的操作系统寻呼系统已经受益于许多人的调优工作。

    但是,与典型的桌面调优(seq的混合)相比,您可以做一些事情来调优您的操作系统,使数据库类型访问(大型顺序I/O操作)受益。以及随机I/O)。

    简言之,如果你是一个人或一个小团队,你可能应该利用现有的工具,而不是试图在那个特定的领域内滚动你自己的工具。