android文档描述" EnableWriteAheadLogging"在这里:
"此方法支持从同一数据库中的多个线程并行执行查询"
但是,根据SQLite文档:https://www.sqlite.org/threadsafe.html
SQLite有两种多线程:"序列化"和" Mulit-thread"。使用" EnableWriteAheadLogging"?
时使用哪一个此外,如果我的应用程序和后台服务都需要访问我的数据库,那么使用EnableWriteAheadLogging是否有帮助?我应该采取哪些措施来确保以线程安全的方式完成此操作?
答案 0 :(得分:2)
这与线程安全性无关。
在WAL模式下,编写器不会阻止读者,因此Android框架认为在这种情况下使用更大的连接池是个好主意。
或者可能不是,正如this comment所示:
private void setMaxConnectionPoolSizeLocked() {
if ((mConfiguration.openFlags & SQLiteDatabase.ENABLE_WRITE_AHEAD_LOGGING) != 0) {
mMaxConnectionPoolSize = SQLiteGlobal.getWALConnectionPoolSize();
} else {
// TODO: We don't actually need to restrict the connection pool size to 1
// for non-WAL databases. There might be reasons to use connection pooling
// with other journal modes. For now, enabling connection pooling and
// using WAL are the same thing in the API.
mMaxConnectionPoolSize = 1;
}
}