wordpress什么删留言,海南seo快速排名优化多少钱,视频直播sdk快速接入,网站开发制作云盘返回#xff1a;SQLite—系列文章目录 上一篇#xff1a;SQLite使用的临时文件#xff08;二#xff09;
下一篇#xff1a;SQLite中的原子提交#xff08;四)
SQLite数据库通常存储在单个普通磁盘中文件。但是#xff0c;在某些情况下#xff0c;数据库可能… 返回SQLite—系列文章目录 上一篇SQLite使用的临时文件二
下一篇SQLite中的原子提交四)
SQLite数据库通常存储在单个普通磁盘中文件。但是在某些情况下数据库可能存储在内存。 强制SQLite数据库纯粹存在的最常见方法在内存中是使用特殊文件名打开数据库“内存”。换句话说而不是传递将真实磁盘文件放入sqlite3_open、sqlite3_open16()或sqlite3_open_v2()函数之一传入字符串“:memory:”。为例 rc sqlite3_open(:memory:, db);完成此操作后不会打开任何磁盘文件。相反将创建一个新数据库纯粹在内存中。一旦数据库停止存在数据库就不再存在连接已关闭。每个:memory:数据库都不同于其他。因此打开两个数据库连接每个连接都使用文件名“:memory:”将创建两个独立的内存数据库。 特殊文件名“:memory:”可以在数据库的任何位置使用允许使用文件名。例如它可以用作ATTACH命令中的文件名 ATTACH DATABASE :memory: AS aux1;注意为了应用特殊的“:memory:”名称并且创建一个纯内存数据库在文件名。因此可以通过在文件中预先添加来创建基于磁盘的数据库路径名如下所示“./:memory:”。 特殊的“:memory:”文件名在使用URI文件名时也有效。例如 rc sqlite3_open(file::memory:, db); 或者 ATTACH DATABASE file::memory: AS aux1;内存中数据库和共享缓存
如果使用URI文件名打开。如果使用朴素的“:memory:”名称若要指定内存中数据库则该数据库始终具有专用数据库缓存并且仅对最初打开了它。但是同一个内存数据库可以由两个或更多数据库连接如下 rc sqlite3_open(file::memory:?cacheshared, db); 或者 ATTACH DATABASE file::memory:?cacheshared AS aux1;这允许单独的数据库连接共享相同的数据库连接内存中数据库。当然所有数据库连接共享内存中数据库需要处于同一进程中。数据库是自动删除并在上次连接时回收内存到数据库关闭。 如果需要两个或多个不同但可共享的内存中数据库在单个进程中则modememory查询参数可以与URI文件名一起使用以创建命名的内存中数据库 rc sqlite3_open(file:memdb1?modememorycacheshared, db); 或者 ATTACH DATABASE file:memdb1?modememorycacheshared AS aux1;以这种方式命名内存中数据库时它只会共享其缓存与使用完全相同名称的另一个连接。
临时数据库
当传递给sqlite3_open()或ATTACH的数据库文件的名称为空字符串时将创建一个新的临时文件来保存数据库。 rc sqlite3_open(, db);ATTACH DATABASE AS aux2;每次都会创建一个不同的临时文件以便就像使用特殊的“:memory:”字符串两个数据库连接到临时每个数据库都有自己的私有数据库。临时数据库是当创建它们的连接关闭时自动删除。 即使为每个临时数据库分配了一个磁盘文件在练习临时数据库通常驻留在内存寻呼机缓存中因此纯内存数据库之间几乎没有区别由“:memory:”创建以及由空文件名创建的临时数据库。唯一的区别是“:memory:”数据库必须保留在内存中在任何时候临时数据库的某些部分都可能被刷新到磁盘如果数据库变大或SQLite处于内存压力之下。 前面几段描述了临时数据库的行为在默认的SQLite配置下。应用程序可以使用temp_store编译指示和SQLITE_TEMP_STORE编译时参数来如果需要强制临时数据库的行为为纯内存中数据库。