SQLite Connection是否需要保持打开(连接)以利用Pragma Cache_size?

时间:2015-02-18 06:45:25

标签: c# database caching sqlite

我一直认为管理数据库连接的最佳做法是连接到它,执行查询并立即关闭数据库连接

然而,至于SQlite,我在他们的网站上偶然发现了关于PRAGMA CACHE_SIZE的以下片段 来自SQlite Website

  

PRAGMA cache_size; PRAGMA cache_size = pages; PRAGMA cache_size =   -kibibytes;

     

查询或更改建议的最大数据库磁盘页数   每个打开的数据库文件,SQLite将在内存中保留一次。   这个建议是否得到尊重是由酌情决定的   应用程序定义的页面缓存。构建的默认页面缓存   进入SQLite,尊重请求,但另类   应用程序定义的页面缓存实现可以选择解释   以不同方式建议的缓存大小或忽略它们   一起。默认建议的缓存大小为2000页。

     

如果参数N为正,则建议的高速缓存大小设置为   N.如果参数N为负,则缓存页数为   调整为使用大约N * 1024字节的内存。向后   兼容性说明:具有负N的cache_size的行为是   在3.7.10之前的SQLite版本中有所不同。在版本3.7.9和   之前,缓存中的页数设置为绝对值   N的值。

     

使用cache_size编译指示更改缓存大小时,更改   仅适用于本届会议。缓存大小恢复为   关闭并重新打开数据库时的默认值。

这是否意味着我可以从内存缓存中受益,我需要在应用程序的持续时间内保持与SQLite数据库文件的连接?我断开数据库的那一刻,所有缓存的内存都丢失了?

1 个答案:

答案 0 :(得分:1)

关闭连接时确实丢弃了缓存。

在SQLite和所有其他数据库中,打开连接都有一些开销。 使用许多短期连接永远不会一个好主意。

如果您确实有许多独立的,短期的工作(例如Web服务器),您通常可以通过使用连接池来解决这些低效问题。