【发布时间】: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