我刚从命令行创建了一个新的SQLite数据库,并且我有一个到SQLite数据库的ODBC连接.
如果我发出查询,默认情况下,同步似乎是"开启",这实际上是在减慢INSERT性能的大时间.
如何在PRAGMA synchronous = OFF
不需要发送SQL命令的情况下将SQLite数据库设置为默认值?我可以创建一个.INI文件或其他东西来启用它吗?
dja*_*fan 10
Unfortunately for everyone, after letting this question sit for 6 days, I finally figured out the answer. The SQLite ODBC driver seems to be the answer. If you create a DSN, it allows you to set Sync to "OFF" in the DSN settings. Very convenient.
默认情况下,SQLite 以完全同步的方式运行。没有 INI,除了连接时没有什么可改变的。但是,每个会话只需设置一次,因此您可以更改项目的连接功能,在连接后添加“PRAGMA synchronous = OFF”命令。这实际上是最干净、最快捷的方法。
但是,如果您真的希望 SQLite 在默认情况下关闭同步打开您的数据库,您可能需要使用不同的默认值重新编译 SQLite。
对于当前版本 (3.7.3),safety_level
在sqlite- amlgamation源的sqlite.c 中查找变量:
改变:
safety_level = 3;
Run Code Online (Sandbox Code Playgroud)
到:
safety_level = 1;
Run Code Online (Sandbox Code Playgroud)
(是的,它与外壳设置不同。)在openDatabase
函数中(attachFunc
如果您愿意)。
如果您真的需要加速此过程,如评论中所述,您至少要考虑交易。在未来,这是首选的解决方案。它可能不是最简单的,或最可能的(毕竟时间是有限的),但从长远来看,它是最干净、最清醒、最容易维护的。(我只需要把它从我的胸膛上拿开。完成了!)
归档时间: |
|
查看次数: |
17806 次 |
最近记录: |