sqlite tune只读表

时间:2014-02-22 20:33:27

标签: sql database performance sqlite

我的sqlite数据库中有一个表T,它只用于执行选择。

此表T由多个进程(最多16个)同时访问。由于此表是“只读”,我如何调整它以提高查询性能?

当日志模式=删除时,我收到以下错误消息: RS_SQLite_fetch:第一步失败:数据库已锁定,即使并发进程正在执行选择。然后我改变了日志模式= wal,我不再收到该消息了。所以我的问题是:

  1. 我可以设置哪些参数来告诉数据库该表是只读的。

  2. 我可以永久设置日志模式=关闭吗? Documentation表示每次打开数据库时都必须设置日志模式。只有当模式为wal或delete时才能永久设置。

  3. 我可以指定一些选项来将该表存储或缓存在内存中吗?我不能使用字符串:memory:,因为该表将由不同的进程访问。

  4. 我可以调整哪些其他参数?

1 个答案:

答案 0 :(得分:1)

SQLite不会锁定表格。 所有锁定都在整个数据库上完成。

要防止对任何其他表的任何写入干扰并发读取,您必须使用WAL模式,或将此表移动到单独的数据库中。

journal_mode = off不会禁用锁定。