gpt4 book ai didi

performance - 高性能 SQLite 的选项

转载 作者:行者123 更新时间:2023-12-03 15:27:31 25 4
gpt4 key购买 nike

我正在开发一个嵌入式系统,它需要非常频繁地存储和检索数据。我预计每秒可能有 100 次写入和 10 次读取。数据将以突发而不是连续的方式到达。

我想使用 SQLite 来存储所有这些数据,但由于它是一个闪存文件系统,写入(插入和更新)太慢了。我尝试设置 synchronous=off ,这确实提高了性能,但我对破坏数据库感到紧张。

在我的应用程序中,电源故障将是一种罕见但真实的可能性。我可以忍受丢失一些最近的数据,但绝对不能冒险因数据库损坏而丢失所有数据。

我还考虑使用内存中的 SQLite 数据库作为主数据库,并定期将其同步到文件系统,如 Synchronizing sqlite database from memory to file 中所述。

还有其他我应该考虑的选择吗?

最佳答案

当大量数据到达时,请确保在单个事务中执行一系列插入和更新。

sqlite3_exec(handle, "BEGIN TRANSACTION", NULL, NULL, NULL);

for ( ... ) {
// Do your inserts/updates
}

sqlite3_exec(handle, "END TRANSACTION", NULL, NULL, NULL);

默认情况下,SQLite 将每个插入/更新放在自己的事务中。如果底层文件系统很慢,这会使 SQLite 变得很慢。通过声明您自己的事务,您可以显着减少对文件系统进行的实际写入量,从而显着提高 SQLite 的性能。

关于performance - 高性能 SQLite 的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7583165/

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