【问题标题】:SQLite optimizationSQLite 优化
【发布时间】:2010-08-31 11:32:54
【问题描述】:

我考虑在桌面应用程序中使用 SQLite 来持久化我的模型。 我计划在用户打开项目时将所有数据加载到模型类中,并在用户保存时再次写入。我将写入所有数据,而不仅仅是更改的增量(因为我很难说)。

数据可能包含我需要插入的数千行。恐怕连续插入多行会很慢(初步测试证明了这一点)。

是否有针对这种情况的优化最佳实践/技巧?

编辑:我将 System.Data.SQLite 用于 .Net

【问题讨论】:

  • 看起来您不需要数据库来存储数据。平面文件效率更高。
  • 未来版本需要升级数据(添加字段、表格等)。我认为使用 DB 迁移数据/模式应该比使用文件容易得多(例如,我只运行一个 sql 脚本)。
  • 您是否在插入行之前开始事务?否则 SQLite 的插入很慢。
  • 如果您一次加载和保存所有内容,我也会选择平面文件。关系表示很难映射到对象。在 Java 中,如果它们是可序列化的,那么很容易加载/保存您的对象。我想 C# 或 VB 会有类似的功能。
  • 我看到序列化的两个问题:1.数据格式与类格式耦合。类中的任何重构都需要数据迁移。迁移 sql 数据比迁移平面文件容易得多。 2. db 是其他应用程序以后可以使用的中性格式。序列化与特定的实现相耦合。

标签: database optimization sqlite system.data.sqlite


【解决方案1】:

就像 Nick D 所说的:如果您要同时进行大量插入或更新,请将它们放入事务中。你会发现结果是天壤之别。我建议在事务中重新运行初步测试并比较结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-13
    相关资源
    最近更新 更多