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