我正在对 SQLite3 数据库进行大批量插入,我试图了解我应该期待什么样的性能与我实际看到的性能。
我的表格是这样的:
cursor.execute(
"CREATE TABLE tweets(
tweet_hash TEXT PRIMARY KEY ON CONFLICT REPLACE,
tweet_id INTEGER,
tweet_text TEXT)"
)
我的插入看起来像这样:
cursor.executemany("INSERT INTO tweets VALUES (?, ?, ?)", to_write)
其中 to_write
是一个元组列表。
目前,数据库中有大约 1200 万行,插入 50000
行大约需要 16 分钟,在 2008 macbook 上运行。
这听起来合理吗,还是有什么严重的事情发生了?
最佳答案
据我了解,性能不佳的主要原因是您浪费时间来提交许多 SQLite 事务。怎么办?
删除索引,然后
PRAGMA synchronous = OFF (or NORMAL)
插入 N 行的 block (定义 N,尝试 N=5000 开始)。 在插入 block 之前做
BEGIN TRANSACTION
插入后做
COMMIT
关于python - 使用 python 和 sqlite3 插入的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17867605/