快速将内存中的数据库转储到文件中

Jim*_*Joo 6 python sqlite sqlalchemy

我希望利用在内存中保存SQLite数据库(通过SQLAlchemy)的速度优势,同时我经历一次插入内容的过程,然后将其转储到文件中,存储以供以后使用.

考虑以通常方式创建的沼泽标准数据库:

# in-memory database
e = create_engine('sqlite://')
Run Code Online (Sandbox Code Playgroud)

有没有更快捷的方法将其内容移动到光盘,除了创建一个全新的数据库并手动插入每个条目?

编辑:

对于我是否看到使用内存数据库有任何好处存在疑问.不幸的是,我已经看到了大约120倍的巨大时差.

这种混乱可能是由于我错过了问题中的一些重要细节.也许可能是由于我对我的缺乏了解:缓存/页面大小/等等.请允许我详细说明:

我正在运行我已经设置的系统的模拟,每个模拟都经历以下阶段:

  1. 对数据库进行一些查询.
  2. 根据这些查询的结果进行计算/运行模拟.
  3. insert 基于最新模拟的数据库中的新条目.
  4. 通过运行确保数据库是新条目的最新版本commit().

虽然我在每次模拟运行中只进行了十几次插入,但我会运行数百万次模拟,并且每次模拟的结果都需要可用于将来的模拟.正如我说的,这个阅读运行文件备份数据库时写入过程需要相当长的时间; 这是6个小时到一个月之间的差异.

希望这能澄清事情.我可以拼凑一个简单的python脚本,以便在必要时进一步概述我的过程.

Mar*_*ers 1

SQLAlchemy 和 SQLite 知道如何缓存并进行批量插入。

在这里使用内存 SQLite 数据库没有任何好处,因为该数据库使用页面就像磁盘版本一样,唯一的区别是最终这些页面会被写入基于磁盘的数据库的磁盘。性能差异仅为 1.5 倍,请参阅SQLite Performance Benchmark - 为什么 :memory: 这么慢...只有磁盘速度的 1.5 倍?

稍后也无法将内存数据库移动到基于磁盘的数据库,除非在内存数据库上运行查询并在两个单独的连接上向基于磁盘的数据库执行批量插入。