背景
最近有代码需要在网关复位时,删除Sqlite3的数据库文件,然后重启网关。在删除文件后的一小段时间内,其他线程可能正在调用sqlite3的数据库接口操作数据库,比如select,update等等,那在数据库文件被删除后,调用这些接口会有什么效果呢,所以做了一个小测试
测试内容
1.初始化数据库,打开数据库文件
2.删除数据库文件
3.调用select,update接口查看效果
测试的数据库的table就几个item.
测试结果是,删除数据库文件对后续的select和update没有影响。猜测可能是sqlite3在初始化数据库时就将内容缓存到内存了,为了提高效率。但是如果数据量很大的情况,不知道能不能全部缓存的了.
之前我怀疑只缓存已经调用了select,update等接口的数据,后面发现是在打开数据库文件时就缓存了。
以此记录下这个结果,确定就算数据库文件被删除了,数据库接口的调用暂时不会受到太大的影响