当前位置 : 主页 > 网络安全 > 测试自动化 >

性能 – SSD磁盘上的sqlite更新速度很慢(1720条记录为15秒)

来源:互联网 收集:自由互联 发布时间:2021-06-22
亲爱的开发人员,出于某种原因,在SSD磁盘上更新1720条记录大约需要15秒(特别是在启用修剪时). 我使用以下文档调整了sqlite设置(效果很好) http://web.utk.edu/~jplyon/sqlite/SQLite_optimization_FAQ.ht
亲爱的开发人员,出于某种原因,在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条记录执行一次新的交易

这似乎已经修复了sqlite中的冻结.简而言之:重用已准备好的sql语句并确保事务不会变得太大.

网友评论