Предположим, у вас есть база данных на диске с именем disk_logs и таблица с именем events.Вы можете присоединить базу данных в памяти к существующей базе данных:
ATTACH DATABASE ':memory:' AS mem_logs;
Создать таблицу в этой базе данных (которая будет полностью в памяти) для получения входящих событий журнала:
CREATE TABLE mem_logs.events(a, b, c);
Затем перенесите данные из таблицы в памяти в таблицу на диске во время простоя приложения:
INSERT INTO disk_logs.events SELECT * FROM mem_logs.events;
И затем удалите содержимое существующей таблицы в памяти.Повторите.
Это довольно сложно, хотя ... Если ваши записи охватывают несколько таблиц и связаны между собой внешними ключами, может быть трудно поддерживать их синхронизацию при копировании из таблиц в памяти вТаблицы на диске.
Прежде чем пытаться что-то ( неудобно перегружено ), как это, я бы также предложил попытаться сделать SQLite максимально быстрым .SQLite должен легко обрабатывать записи> 50K в секунду.Несколько записей журнала дважды в секунду не должны вызывать существенного замедления.