gpt4 book ai didi

performance - sqlite 在 SSD 磁盘上更新缓慢(1720 条记录需要 15 秒)

转载 作者:行者123 更新时间:2023-12-03 16:19:25 26 4
gpt4 key购买 nike

亲爱的开发人员,由于某种原因,在 SSD 磁盘上更新 1720 条记录需要大约 15 秒(尤其是在启用修剪时)。

我使用以下文档调整了 sqlite 设置(效果很好)
http://web.utk.edu/~jplyon/sqlite/SQLite_optimization_FAQ.html

我有以下 PRAGMA 设置来优化性能,并且我确实在完整的更新集周围使用事务。

sqlite3_exec(database, "PRAGMA cache_size=500000;", nil, nil, nil);
sqlite3_exec(database, "PRAGMA synchronous=OFF", nil, nil, nil);
sqlite3_exec(database, "PRAGMA count_changes=OFF", nil, nil, nil);
sqlite3_exec(database, "PRAGMA temp_store=MEMORY", nil, nil, nil);

SSD 似乎做得太多(例如删除块等),这使得它仅在 1720 条简单记录更新时就阻塞了 15 秒。

奇怪的是:插入 2500 条记录几乎是即时的。
你能帮助我并给我一些如何解决这个问题的指示吗?

最佳答案

我通过做一些很好的旧测试和尝试找到了答案。
当在一个事务中一个接一个地执行大量单个 UPDATE 语句时,sqlite 似乎会在带有 TRIM 的 SSD 上卡住。

我现在更改了代码:
a) 准备一个命令,并为所有要更新的记录重用该命令。
b) 每 1500 条记录 COMMIT 和 BEGIN 一个新事务

这似乎解决了 sqlite 中的卡住问题。简而言之:重用准备好的 sql 语句并确保事务不会变得太大。

关于performance - sqlite 在 SSD 磁盘上更新缓慢(1720 条记录需要 15 秒),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6070085/

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