System.Data.Sqlite:Cache Size = ...连接字符串参数似乎不起作用

时间:2011-05-18 12:12:28

标签: c# .net sql sqlite system.data.sqlite

我正在比较磁盘和内存数据库的速度。我正在尝试使用以下连接字符串向sqlite3数据库插入大约8mb的数据:

<configuration>
    <connectionStrings>
      <add name="Server" connectionString="Data Source=db.db3;Version=3;" providerName="System.Data.SQLite" />
   </connectionStrings>
</configuration>

它可以在4秒内插入我的数据。

当我将连接字符串更改为以下字符串时:

<configuration>
    <connectionStrings>
      <add name="Server" connectionString="Data Source=:memory:;Version=3;" providerName="System.Data.SQLite" />
   </connectionStrings>
</configuration>

我在0.5秒内插入数据。

但是当我按照以下方式更改设置时(注意Cache Size=16777216

<configuration>
    <connectionStrings>
      <add name="Server" connectionString="Data Source=db.db3;Version=3;Cache Size=16777216;" providerName="System.Data.SQLite" />
   </connectionStrings>
</configuration>

再次结果为4秒,结果与缓存量无关。根据我的理解,缓存大小是数据量的两倍应该使我的数据在内存中稳定下来。当没有剩余缓存时,应该发生磁盘迁移......

如何让sqlite更具响应性?

2 个答案:

答案 0 :(得分:3)

它的速度较慢,因为:内存意味着内存中的数据库,磁盘总是会变慢。您可以通过在事务中包装插入来加快速度,因为它只会在事务结束时刷新到磁盘一次。转换交易日志也会有所帮助,但会因崩溃和断电而更容易出现问题。

缓存不太可能加快速度,因为您不会多次使用同一页数据。

答案 1 :(得分:1)

根据SQL Lite Documentation,缓存大小的设置仅为建议。 “这项建议是否得到尊重,由Application Defined Page Cache”酌情决定。