【问题标题】:Sqlite insert performance for smartphone智能手机的 Sqlite 插入性能
【发布时间】:2015-02-25 01:17:28
【问题描述】:

我正在尝试优化 android 中 sqlite 的插入速度。我尝试了很多方法。比如设置pragma设置、日志模式等。

除此之外,我还尝试了单独的插入、准备好的语句和批量插入。请记住,所有这些都已包含在事务中。

对于 20 列的表,我的智能手机(三星 Galaxy SIII)的插入速度仅为每秒约 250 行。根据 Sqlite faq,sqlite 每秒可以轻松插入 50,000 次插入。因此,我非常乐观地认为插入件至少有数千个而不是数百个。但是,上述方法均无效。还是已经优化了 250 行插入?

请帮助我。谢谢。

问候, 德克斯特

【问题讨论】:

标签: android performance sqlite


【解决方案1】:

我在大公司规模的数据库中用于提高批量插入速度的一种方法是在进行批量插入时关闭索引。缺点是您需要拥有对数据库的独占访问权限,并且您必须在完成后重新打开索引。

在移动应用程序中,您可以通过设置“更新应用程序”屏幕轻松获得对数据库的独占访问权限。

SQLITE 您可以在执行批量插入之前删除任何非唯一索引。如果您的 20 列表有 20 个非唯一索引(每列一个)。删除 20 个索引。执行批量插入。创建您之前删除的 20 个索引。

还要确保您的代码紧凑,并且不会在插入循环内执行任何可以在循环之前完成的操作。例如,在插入循环之前查找列索引。

如果这不适用于您的应用,只需将其编入目录,作为您将来可能需要在后端数据库中执行的操作。

【讨论】:

  • 嗨,丹尼,感谢您的回复。我会试试看。如果我删除索引,我应该有什么期望?我要求在智能手机中每秒插入几千行是不是太高了?
  • Idk 我猜是 5-10%。但请记住,您必须保留主键索引和唯一键索引,因为它们保持数据库的完整性。我已经看到大型后端数据库在受限批量插入上的速度提高了 800%。
【解决方案2】:

您可以使用对象/关系映射 (ORM) 工具来获得更好的性能。 ORMLite、GreenDao 等

Greendao比较好,看看

http://greendao-orm.com/

特点 :-

  • 最高性能(可能是 Android 上最快的 ORM)
  • 易于使用的 API
  • 针对 Android 进行了高度优化
  • 最小的内存消耗
  • 图书馆规模小,专注于本质

ORM 工具的好处:-

  • ORM 可以为您提供关系持久性,从而实现最快的性能。
  • 开发工作更少

【讨论】:

    猜你喜欢
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-21
    • 1970-01-01
    相关资源
    最近更新 更多