我想利用在内存中保存 SQLite 数据库(通过 SQLAlchemy)的速度优势,同时我经历了插入内容的一次性过程,然后将其转储到文件中,存储以备后用。
考虑一个以通常方式创建的沼泽标准数据库:
# in-memory database
e = create_engine('sqlite://')
除了创建一个全新的数据库并手动插入每个条目之外,有没有更快的方法将其内容移动到光盘上?
编辑:
对于我是否会看到使用内存数据库的任何好处存在一些疑问。不幸的是,我已经看到了大约 120 倍的巨大时差。
这种混乱可能是由于我错过了问题中的一些重要细节。也可能是由于我对以下内容缺乏了解:缓存/页面大小/等。请允许我详细说明:
我正在运行我设置的系统的模拟,每个模拟都经过以下阶段:
- 对数据库进行一些查询。
- 根据这些查询的结果进行计算/运行模拟。
insert
基于最新模拟的数据库中的新条目。- 通过运行 确保数据库是最新的,包含新条目
commit()
。
虽然我在每次模拟运行中只进行了十几次插入,但我确实运行了数百万次模拟,并且每次模拟的结果都需要可供未来的模拟使用。正如我所说,在运行文件支持的数据库时,这个读写过程需要相当长的时间。这是6小时和一个月之间的差异。
希望这可以澄清事情。如有必要,我可以拼凑一个简单的 python 脚本来进一步概述我的过程。