ram磁盘镜像物理磁盘的一部分

我想要做的是:

某种types的应用程序/驱动程序创build一个实际分配了驱动器号的RAM驱动器/分区(例如D :)。 此驱动器号应该基于/镜像物理目录的特定目录(例如C:\ MyDBData)。

在应用程序/驱动程序启动时,我期望应用程序/驱动程序将目录中的所有文件读入内存,并locking它们以防止其他应用程序写入这些文件。 所有文件然后在RAM驱动器上可用。 每个读取操作都可以从内存中完成,我想这将是一个主要的性能提升。任何写操作都应该对物理目录进行“直写”,或者使用最大1秒的缓冲区。 (所以在电力损失的情况下,损失将是最小的。)

当然这个应用程序/驱动程序需要一些自己的RAM,并且会在CPU负载上产生一些轻微的开销。 不过,我预计主要performance会有所提升。

我想用它的是:

为了加快我的5 GB的MySQL数据库,我想将所有表移动到我的8 GB的RAM。

即使MySQL确实支持内存表,但是这个限制让我无法实现。 例如,堆表中不允许使用text / blob字段。

对于5 GB RAM的8 GB RAM是否足够,上述应用程序/驱动程序的开销,mysqld本身以及操作系统的其他部分,还是一个猜测。 但我可以考虑升级到12GB甚至16GB的内存。

我的问题是

我认为这种技术已经存在。 它叫什么,我在哪里可以find它的一个很好的实现? (最好是开源的,适用于Windows)

即使有关Mysql vs内存的提示是受欢迎的,也许这个想法我不是解决Mysql问题的最好方法,但我仍然想探索一下我所拥有的目录到内存的问题。

编辑:我刚才在类似的问题阅读是,这被称为文件系统caching,并存在于大多数现代操作系统。 但是,如果这是要走的路,我该如何指示我的操作系统增加文件系统caching,并在任何时候专门保持整个5GB目录在该caching中?

操作系统和数据库已经包含了以最好的方式pipe理内存中的数据的function,以适应大多数使用,而不会增加数据丢失的风险。 比你更聪明的人,或者我已经在这个问题上工作,并没有魔法更快的select,他们只是决定closures它的乐趣。 🙂

除非你有一个特定的用例,并且知道你在做什么,否则不会比仅仅遵循数据库性能的最佳实践做出更好的改进。