2012-01-04 34 views
0

我正在使用SQLITE明确创建事务,即:如何让SQLITE缓冲插入?

sqlite3_exec(db,“BEGIN”,NULL,NULL,NULL);

做了一堆刀片

sqlite3_exec(分贝, “END”,NULL,NULL,NULL);

我希望数据库这对之间缓冲插入,直到最后被击中,那么这一切刷新到磁盘。

它似乎并没有做到这一点,每隔一定时间,而不是刷新到磁盘。

我也注意到,我有时不能成功地从一个不同的进程执行相同的数据库上select语句,我怀疑这可能与我的交易策略的使用。在这些情况下,由于db上的LOCK或BUSY状态,选择失败。

有谁知道如何盯人手柄SQLITE所以缓冲插入有更好的表现?

非常感谢!

回答

1

事务使SQLite无法提交到数据库文件,直到事务完成(或回退),但它不会阻止它写入光盘,因为它仍需要更新日志文件。

您可以通过内存数据库使用,然后写入内存数据库到基于文件的数据库来解决这个问题。这里更多的信息:In-Memory Databases

此外,SQLite的标准模型杂志支持单作家,或多个读者,而不是两个,这就是为什么你得到一个LOCK/BUSY状态,当您尝试选择。为了解决这个问题,你应该考虑使用WAL日志方法而不是回滚方法。这里更多的信息:Write-Ahead Logging