4

我对编写数据库管理系统有很大的兴趣。阅读了几页关于如何实现 SQL Server 2000 的内容后,我发现使用了 4KB 内存页面,每个页面都是硬盘上 4KB 页面的直接副本。这些页面根据需要加载到 RAM 中,然后在空闲时懒惰地写回磁盘(过于简单化)。

在我项目的规划阶段,我想知道在 CLR 上运行的代码中是否可以实现这种级别的控制。我意识到 C、C++ 或D可能更适合这项任务,但我想先向自己证明这一点。这背后的部分动机是我最终希望用我自己的实际覆盖 CLR 垃圾收集器,使用我的数据库作为堆,至少对于相对陈旧的对象。

是否可以直接从 CLR 控制内存?如果是这样,我该怎么做?

现在假设我的数据是一堆 256 字节宽的结构/类,存储在磁盘上的一个平面表中,并且我正在使用 64KB 页面。

4

1 回答 1

2

有点。您可以在 .NET 中使用内存映射文件,以便写入“内存”实际上是写入磁盘。

于 2012-09-12T04:00:47.967 回答