我将使用SQLite来在实时环境中保存大量数据。
为了避免查找磁盘空间(或在DB文件中移动页面)以便将新数据实时写入数据库的过程,我想提前构建表并将最大的数据插入其中任何单元格都可以(根据其类型),因此在实时运行中,只会有“更新”查询。
以journal_mode=WAL
模式构建和插入数据。
我有6个不同的DB文件,我必须构建。每个数据库都有10到200个表,其中所有数据库中的所有表看起来都相同:
ID | TimeStart | Float data | Float data | Float data
--------------------------------------------------------------------------------
不同之处在于,有些表有100000行,有些表有500000行。
这些数据库构建在带有ARM9 CPU(在Linux上)的SD卡上,因此构建数据库需要很多时间。我说的是几天。
我如何加快建筑物的速度?我能做什么'Pragma'或技巧?我可以复制一张准备好的桌子吗?
重要的是要提到数据库的健壮性在构建过程中并不重要 - 速度对我来说比数据库的损坏可能性更重要。
答案 0 :(得分:1)
我同意@Graham Borland的回答,但是:如果你有任何索引,我建议你不要创建它们,直到之后你已经将所有数据添加到数据库中。如果您事先添加它们,每次插入新记录时索引都会自动更新,当您快速连续插入大量行时,这会使速度无法降低。
答案 1 :(得分:0)
在主机上预生成数据库,并在将应用程序安装到目标设备时将其复制。
答案 2 :(得分:0)
阅读this,这非常重要。 Graham Borland和Nick Shaw的答案也非常相关,并且是我给你的链接文件中的建议的一部分。