Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winforms 我应该使用dataset类作为缓存来加速SQLite加载吗_Winforms_Sqlite_Vb.net 2010 - Fatal编程技术网

Winforms 我应该使用dataset类作为缓存来加速SQLite加载吗

Winforms 我应该使用dataset类作为缓存来加速SQLite加载吗,winforms,sqlite,vb.net-2010,Winforms,Sqlite,Vb.net 2010,在我的WinForms应用程序中,我正在将大量数据从二进制文件加载到SQLite数据库中。我会查找数据库,以确定是否要添加每个新数据段,例如 If LookUpResult Then AddNewData Else DiscardNewData End If 这太慢了。插入似乎需要很长时间。我应该使用DataTable或DataSet类将数据加载到RAM,然后作为后台任务写入SQLite DB吗?或者一次从DataTable对象插入多行的成本会更低吗 我以前将所有数据加载到一个自定

在我的WinForms应用程序中,我正在将大量数据从二进制文件加载到SQLite数据库中。我会查找数据库,以确定是否要添加每个新数据段,例如

If LookUpResult Then
   AddNewData
Else
   DiscardNewData
End If
这太慢了。插入似乎需要很长时间。我应该使用DataTable或DataSet类将数据加载到RAM,然后作为后台任务写入SQLite DB吗?或者一次从DataTable对象插入多行的成本会更低吗

我以前将所有数据加载到一个自定义类中,虽然速度很快,但很可能会达到内存限制,因此迁移到DB。我本以为SQLite会将插入缓存到RAM中,但事实似乎并非如此


感谢您的建议。

为了确保崩溃一致性,更改的数据在每个事务结束时与磁盘同步。 如果不使用显式事务,则每个命令将获得自己的自动事务,这意味着您将获得每个命令的同步开销

对所有插入使用一个事务。
(只要您通过相同的数据库连接,您自己的更改将可见。)

为了确保崩溃一致性,更改的数据在每个事务结束时与磁盘同步。 如果不使用显式事务,则每个命令将获得自己的自动事务,这意味着您将获得每个命令的同步开销

对所有插入使用一个事务。
(只要您通过相同的DB连接,您自己的更改就会可见。)

您使用事务吗?不,因为我直到现在才听说:)这似乎是一种执行多个插入然后一次性执行所有操作的方法,大概是为了提高速度。我认为这对我不起作用,因为我需要对已经添加的数据进行查找,以决定是否应该添加新数据。据推测,SELECT查询不会返回尚未提交的插入。是否使用事务?不,因为我到现在为止还没有听说过它们:)这似乎是一种执行多个插入,然后一次性执行所有插入的方法,大概是为了提高速度。我认为这对我不起作用,因为我需要对已经添加的数据进行查找,以决定是否应该添加新数据。据推测,SELECT查询不会返回尚未提交的插入。啊,那么未提交的插入将显示在SELECTs中?这听起来正是我需要的,而且似乎是缓存工作的一种合乎逻辑的方式。我是唯一的用户/连接,因此这不应该是一个问题。我很快就会试试,然后回来。谢谢,效果很好!添加了两行代码(BeginTransaction和Commit),大大缩短了时间。谢谢啊,那么非承诺插入将显示在选择?这听起来正是我需要的,而且似乎是缓存工作的一种合乎逻辑的方式。我是唯一的用户/连接,因此这不应该是一个问题。我很快就会试试,然后回来。谢谢,效果很好!添加了两行代码(BeginTransaction和Commit),大大缩短了时间。谢谢