一、内存数据库: 在SQLite中,数据库通常是存储在磁盘文件中的。然而在有些情况下,我们可以让数据库始终驻留在内存中。最常用的一种方式是在调用sqlite3_open()的时候,数据库文件名参数传递":memory:",如:复制代码 代码如下: rc = sqlite3_open(":
在SQLite中,数据库通常存储在磁盘文件里,不过有些场景下,让数据库完全驻留在内存中反而更方便。最常见的做法就是在调用sqlite3_open()时,把数据库文件名参数直接传成":memory:",比如这样:
rc = sqlite3_open(":memory:", &db);
长期稳定更新的攒劲资源: >>>点此立即查看<<<
执行完这行代码后,磁盘上不会有任何文件生成,取而代之的是一个纯内存数据库。当然,它没有持久化能力,当前数据库连接一关闭,数据就立刻消失。需要留意的是,多个数据库连接各自用":memory:"创建的内存数据库是相互独立的,彼此之间没有任何关联。不过,我们也可以借助ATTACH命令,把内存数据库像普通数据库一样附加到当前连接中:
ATTACH DATABASE ':memory:' AS aux1;
调用sqlite3_open()或执行ATTACH命令时,如果数据库文件参数传的是空字符串,SQLite会创建一个临时文件作为底层存储。例如:
rc = sqlite3_open("", &db);
或者
ATTACH DATABASE '' AS aux2;
这一点和内存数据库很像:两个连接创建的临时数据库也是各自独立的,连接关闭后自动消失,底层文件也会被自动删除。
话说回来,虽然磁盘文件被创建用来存储临时数据库的数据,但实际运行时,临时数据库通常也会像内存数据库一样驻留在内存中。唯一的区别在于:当临时数据库中的数据量过大时,SQLite为了保证有更多内存给其他操作,会把部分数据写到磁盘文件里;而内存数据库则始终把数据留在内存中,不会往磁盘上写。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述