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

3

有人知道如何在Perl、MATLAB或Java中将现有的数据库(Sqlite 3)加载到内存中以进行快速计算吗?首选Perl。

我正在开发一个需要大量计算的项目,我想保持真实数据库不变。因此,我想将整个Sqlite3数据库读入内存,并在内存中执行任何操作。

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

3个回答

3
您可以使用&sqlite_backup_from_file方法在DBD::SQLite中进行操作。如果您在':memory:'数据库上打开它,外部的数据库将被读入其中。相应的&sqlite_backup_to_file方法允许您在完成后将其写回。这些函数实际上只是备份的C接口的包装器。

2
我认为SQLite没有提供自动将数据库加载到内存的方式。你只能在内存中创建一个新的空数据库。这不是Perl的限制。
你可以打开一个内存数据库,创建表格,连接到你的磁盘数据库,对于模式中的每个表格,使用insert into memory.table select * from file.table,然后从磁盘数据库分离

谢谢cjm!这个回答很有用,因为我一直在想它是否只适用于Perl。你的回答似乎解决了我部分的疑惑。 - z080328

1

解决这个问题的一种方法是将SQLite数据库保存在RAM驱动器上。

  • 在 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/
    

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接