我想了解使用 Sqlite 的 ATTACH DATABASE
特性是否允许单个进程使用 2 个线程并行写入两个数据库。
有许多问题和答案阐明了使用 WAL 如何允许 Sqlite 支持多个写入器线程到数据库,但我找不到说明从不同线程写入到多个数据库的工作原理的文档或问题。
ATTACH DATABASE
的 documentation 说:
涉及多个附加数据库的事务是原子的,假设主数据库不是 ":memory:" 并且 journal_mode 不是 WAL。如果主数据库是 ":memory:" 或者如果 journal_mode 是 WAL,那么事务在每个单独的数据库文件中仍然是原子的。
这让我觉得 N 个数据库会有 N 个专用的 WAL,并且对数据库的写入将独立于其他数据库。
我希望可以为多个数据库使用多个文件,其中 db 文件驻留在不同的磁盘上。