У меня есть около 200 таблиц в базе данных SQLite с сотнями до миллионов строк. Эти таблицы запрашиваются многими параллельными процессами приложения OLTP.
Каждую таблицу необходимо периодически обновлять полным обновлением - удалите все строки, а затем вставьте разные, все в рамках транзакции. Для больших таблиц это занимает почти одну минуту, но такое обновление происходит только несколько раз в день для стола.
Мне нужно убедиться, что читателям не нужно ждать завершения обновления - следует использовать старую версию табличных данных до завершения транзакции, а затем использовать новую версию. Любое ожидание в случае необходимости должно выражаться в миллисекундах, а не в секундах или минутах.
Может ли это быть достигнуто, то есть избежать каких-либо блокировок базы данных или блокировок таблиц, блокирующих считыватели? Я не беспокоюсь о писателях, они могут ждать и сериализовать.
Это приложение Python с pysqlite.