我想实现一个应用程序,该应用程序存储来自多个传感器的数据,例如加速度,陀螺仪,环境光和触摸(压力,位置)。保存数据有两种可能性。我可以使用Android提供的SQLite数据库或纯CSV文件。我主要关心的是性能,因为传感器的采样率很高。
内置SQLite数据库或CSV文件的性能是否更高?还是有其他可能提供更好的性能?对于数据库,我可以为每个流使用一个数据库,或者对于所有流仅使用一个数据库,对于CSV文件,我可以为每个流使用一个文件。
答案 0 :(得分:1)
根据使用方式,SQLite可能比直接文件系统I / O更快。 35% Faster Than The Filesystem。
上述内容的摘录(结论):-
因此,请您大致了解一下:SQLite的读/写延迟为 与磁盘上单个文件的读/写延迟相比具有竞争力。经常 SQLite更快。有时,SQLite几乎一样快。无论哪种方式 文章反驳了关系数据库的一般假设 必须比直接文件系统I / O慢。
当然,这里只考虑原始数据访问,然后考虑blob(可能更有利,也可能不更有利)。当索引开始涉及时,基本上就是在添加必须更新的其他表。这可能是一个合理的假设,即读数可能会大于单个值,并且读数类型(由传感器进行读数的类型)以及在进行读数时也将被记录为值,因此需要将这些额外值被认为可以很好地建立索引(也许在需要时创建索引,然后在完成时将其删除可能是有益的)。
因此,很可能在某个阶段,如果索引了这些值,则文件系统将更快。但是,这很可能是以更复杂和更慢的检索为代价的。
还有一些系统参数,例如sqlite PRAGMA's (page size linked)可用于调整某些设置。
您可能不想加入 AUTOINCREMENT What are the overheads of using AUTOINCREMENT for SQLite on Android? 。
简而言之,您可能很需要考虑一段时间内的性能平衡/优化/实验。