将现有的Sqlite数据库加载到内存中以便快速计算

时间:2012-03-22 06:00:34

标签: database perl sqlite matlab in-memory

有谁知道如何将现有数据库(Sqlite 3)加载到内存中以便在Perl,MATLAB或Java中快速计算? Perl是首选吗?

我正在开发一个需要密集计算的项目,我希望保持真正的数据库不变。所以我想将整个Sqlite3数据库读入内存并在内存中执行任何操作。

我知道内存数据库连接的基础知识,但似乎Perl只能使用这种方式创建一个新数据库,而不是加载现有数据库(这是我想要实现的选项)。

3 个答案:

答案 0 :(得分:3)

我认为SQLite没有提供任何方法来自动将数据库加载到内存中。您所能做的就是在内存中创建一个新的空数据库。这不是Perl限制。

您可以打开一个内存数据库,为您的磁盘数据库创建表attach,为模式中的每个表创建insert into memory.table select * from file.table,然后从中创建detach -disk数据库。

答案 1 :(得分:3)

您可以使用&sqlite_backup_from_file中的DBD::SQLite方法。如果在':memory:'数据库上打开了调用它的句柄,则会将外部数据库读入其中。相应的&sqlite_backup_to_file方法允许您在完成后将其写回。这些函数实际上只是C interface备份

的包装器

答案 2 :(得分:1)

解决此问题的一种方法是将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/