Из этого вопроса:
SQLite обновляет ОДНУ запись очень (относительно) медленно
Я вижу, что он получил большой прирост скорости, используя PRAGMA синхронный = OFF.
Я сталкиваюсь с очень медленным временем обновления sqlite (250 мс), и мне нужно сделать много обновлений из разных потоков.
У меня есть много открытых подключений к базе данных из разных потоков. Было бы лучше иметь только центральный класс DataBase, обертывающий БД блокировками, которые все потоки вызывают и используют PRAGMA синхронный = ВЫКЛ, чтобы добиться такого улучшения скорости?
PRAGMA synchronous
влияет только на синхронизацию дисков; то есть. приостановка, чтобы убедиться, что данные, переданные в ОС, записываются на диск. Перемещение замка не поможет с этим.
Прямо сейчас кажется, что ты просто догадываешься; Вы должны сделать некоторое профилирование, прежде чем оптимизировать. Где твои медленные точки? Какие запросы медленные (используйте EXPLAIN QUERY PLAN
)? Ты ANALYZE
ING?
Также обратите внимание, что SQLite не очень удобен для параллелизма; только одно соединение может записывать в базу данных одновременно. Если вам нужен высокий параллелизм, рассмотрите другую базу данных.
если у вас несколько потоков, я бы не советовал вам отключать синхронный режим. Сомневаюсь, что скорость увеличится, просто переместив замок наружу в ваш класс
Я хотел бы предложить, чтобы вы думали о норамализации базы данных, чтобы вам не приходилось каждый раз читать огромные данные.