有谁知道如何将现有数据库(Sqlite 3)加载到内存中以便在 Perl、MATLAB 或 Java 中进行快速计算?Perl 是首选?
我正在做一个需要密集计算的项目,我想保持真实数据库的固定。所以我想将整个 Sqlite3 数据库读入内存并在内存中执行任何操作。
我知道内存数据库连接的基础知识,但似乎 Perl 只能使用这种方式创建一个新数据库,而不是加载现有数据库(这是我想要实现的选项)。
可以使用中的&sqlite_backup_from_file
方法DBD::SQLite
。如果您调用它的句柄在 ':memory:' 数据库上打开,则将外部数据库读入其中。相应的&sqlite_backup_to_file
方法允许您在完成后将其写回。这些函数实际上只是用于备份的C 接口的包装器
我不认为 SQLite 提供任何方法来自动将数据库加载到内存中。您所能做的就是在内存中创建一个新的空数据库。这不是 Perl 的限制。
您可以打开一个内存数据库,创建您的表,附加到您的磁盘数据库,插入到 memory.table select * from file.table为您的架构中的每个表,然后从磁盘数据库分离。
解决此问题的一种方法是将 SQLite 数据库保存在 RAMdrive 上。
在 Windows 上,我过去使用过以下 RAMDisk 驱动程序没有问题:
http://members.fortunecity.com/ramdisk/RAMDisk/ramdriv.htm
不是非常用户友好,但具有一些不错的功能。
在 Linux 中,您可以尝试以下操作:
# mkdir /mnt/ramdisk
# chmod 777 /mnt/ramdisk
# mount -t tmpfs -o size=128M tmpfs /mnt/ramdisk/