У меня есть база данных SQLite, которая используется двумя процессами. Мне интересно, с самой последней версией SQLite, когда один процесс (соединение) запускает транзакцию для записи в базу данных, сможет ли другой процесс одновременно читать из базы данных?
87
Ответы:
Я собрал информацию из разных источников, в основном с sqlite.org, и собрал их вместе:
Во-первых, по умолчанию несколько процессов могут иметь одну и ту же базу данных SQLite, открытую одновременно, и несколько операций чтения могут выполняться параллельно.
В случае записи однократная запись в базу данных на короткое время блокирует базу данных, ничто, даже чтение, не может вообще получить доступ к файлу базы данных.
Начиная с версии 3.7.0, доступна новая опция «Write Ahead Logging» (WAL) , при которой чтение и запись могут выполняться одновременно.
По умолчанию WAL не включен. Чтобы включить WAL, обратитесь к документации SQLite.
источник
SQLite3 явно разрешает несколько подключений :
Для совместного использования подключений используйте общий кеш SQLite3 :
источник