初用sqlite3插入数据时,插入每条数据大概需要100ms左右。如果是批量导入,可以引进事物提高速度。但是假设你的业务是每间隔几秒插入几条数据,显然100ms是不能容许的。
解决办法是,在调用sqlite3_open函数后添加下面一行代码:
解决办法是,在调用sqlite3_open函数后添加下面一行代码:
sqlite3_exec(db,"PRAGMA synchronous = OFF; ",0);
磁盘同步
1.如何设置:
PRAGMA synchronous = FULL; (2)
PRAGMA synchronous = NORMAL; (1)
PRAGMA synchronous = OFF; (0)
2.参数含义:
当synchronous设置为FULL (2),sqlite
数据库引擎在紧急时刻会暂停以确定数据已经写入磁盘。这使
系统崩溃或电源出问题时能确保数据库在重起后不会损坏。FULL synchronous很安全但很慢。
当synchronous设置为NORMAL,sqlite数据库引擎在大部分紧急时刻会暂停,但不像FULL模式下那么频繁。 NORMAL模式下有很小的几率(但不是不存在)发生电源故障导致数据库损坏的情况。但实际上,在这种情况 下很可能你的硬盘已经不能使用,或者发生了其他的不可恢复的硬件错误。
设置为synchronous OFF (0)时,sqlite在传递数据给系统以后直接继续而不暂停。若运行sqlite的应用程序崩溃, 数据不会损伤,但在系统崩溃或写入数据时意外断电的情况下数据库可能会损坏。另一方面,在synchronous OFF时 一些操作可能会快50倍甚至更多。在sqlite 2中,缺省值为NORMAL.而在3中修改为FULL。 www.2cto.com
3.建议:
如果有定期备份的机制,而且少量数据丢失可接受,用OFF。
原文链接:https://www.f2er.com/sqlite/199662.html