gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 06:26:38 32 4
gpt4 key购买 nike

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

考虑一个沼泽标准数据库 created in the usual way :

# in-memory database
e = create_engine('sqlite://')

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

编辑:

我什至怀疑使用内存数据库是否有任何好处。不幸的是,我已经看到了大约 120 倍的巨大时差。

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

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

  1. 对数据库进行一些查询。
  2. 根据这些查询的结果进行计算/运行模拟。
  3. 根据最近的模拟将新条目插入 到数据库中。
  4. 通过运行 commit() 确保数据库与新条目保持同步.

虽然每次模拟运行时我只插入了十几个左右,但我确实运行了数百万次模拟,并且每次模拟的结果需要可用以便将来进行模拟。正如我所说,在运行文件支持的数据库时,这个读写过程需要相当长的时间;这是 6 小时和一个月的区别。

希望这能澄清事情。如有必要,我可以拼凑一个简单的 Python 脚本来进一步概述我的过程。

最佳答案

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

在这里使用内存中的 SQLite 数据库没有任何好处,因为该数据库使用页面就像磁盘版本一样,唯一的区别是最终这些页面会写入磁盘以用于基于磁盘的数据库。性能相差仅1.5倍,见SQLite Performance Benchmark -- why is :memory: so slow...only 1.5X as fast as disk?

也没有办法在以后将内存数据库移动到基于磁盘的数据库,缺少在内存数据库上运行查询并在两个单独的连接上对基于磁盘的数据库执行批量插入.

关于python - 快速将内存中的数据库转储到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15835495/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com