我正在用C编写数据库风格的东西(即它将存储和操作大约500,000条记录)。我将在内存受限的环境(VPS)中运行它,所以我不希望内存使用量增加。我不打算处理大量的数据 - 总共可能高达200MB,但我希望内存占用空间保持在30MB(将这些数字从空中拉出)。
我的直觉是做我自己的页面处理(真正的数据库这样做),但我收到的建议说我应该只分配它并允许操作系统为我做VM分页。我的数字永远不会超过这个数量级。 在这种情况下哪个是最佳选择?
假设第二种选择,在什么时候程序进行自己的分页是否明智?显然,可以处理千兆字节的RDBMsses必须这样做,但在问题值得提出的规模上必须有一点。
谢谢!
答案 0 :(得分:9)
使用malloc
直到它正在运行。 然后只有,开始分析。如果遇到与专有和主流“真实数据库”相同的性能问题,您自然会开始执行缓存/页面/对齐优化。在拥有可用的数据库之后,可以轻松地插入这些内容,并且与具有工作数据库正交。
答案 1 :(得分:3)
执行自己的分页的数据库管理系统也受益于大量研究工作的投入,以确保其分页算法在不同的系统和负载条件下运行良好。除非您拥有类似的资源,否则我建议不要采用这种方法。
您可以使用的操作系统分页系统已经受益于许多人的调整工作。
但是,您可以采取一些措施来调整操作系统以使数据库类型访问(大型顺序I / O操作)与典型的桌面调优(seq。和随机I / O的混合)相比。
简而言之,如果你是一个单独的团队或一个小团队,你可能应该使用现有的工具,而不是试图在那个特定领域自己动手。