如果在SQLite3 WAL模式下发生并发写入,数据库文件是否会被破坏

时间:2018-01-09 08:17:12

标签: database concurrency sqlite

正如SQLite Doc所提到的那样,

  

WAL提供更多的并发性,因为读者不会阻止编写者,而编写者不会阻止读者。阅读和写作可以同时进行。

     

作家只是将新内容附加到WAL文件的末尾。因为作家不会干扰读者的行为,所以作家和读者可以同时运行。但是,由于只有一个WAL文件,一次只能有一个编写器。

我尝试通过JMeter发送多个请求来模拟场景,如下所示:

https://i.stack.imgur.com/HdKBf.png

模拟后没有出错。但我担心的是:

  1. 这是否意味着在WAL模式下,SQLite本身会处理多个写请求?
  2. 我是否以正确的方式模拟了场景? (有没有更好的工具呢?)
  3. 先谢谢。

1 个答案:

答案 0 :(得分:0)

回答你的标题问题:不,WAL模式下的SQLite3不会破坏你的数据库文件。

预先写入日志记录将使您能够独立读写,但即使您同时将它们发送到SQLite数据库,写入仍将一个接一个地执行。

您可以在SQLite-Wiki - WAL

中查找WAL模式的更多优点或优点