Рекомендуется ли повысить производительность, используя PRAGMA синхронный = OFF

Из этого вопроса:
SQLite обновляет ОДНУ запись очень (относительно) медленно

Я вижу, что он получил большой прирост скорости, используя PRAGMA синхронный = OFF.

Я сталкиваюсь с очень медленным временем обновления sqlite (250 мс), и мне нужно сделать много обновлений из разных потоков.

У меня есть много открытых подключений к базе данных из разных потоков. Было бы лучше иметь только центральный класс DataBase, обертывающий БД блокировками, которые все потоки вызывают и используют PRAGMA синхронный = ВЫКЛ, чтобы добиться такого улучшения скорости?

0

Решение

PRAGMA synchronous влияет только на синхронизацию дисков; то есть. приостановка, чтобы убедиться, что данные, переданные в ОС, записываются на диск. Перемещение замка не поможет с этим.

Прямо сейчас кажется, что ты просто догадываешься; Вы должны сделать некоторое профилирование, прежде чем оптимизировать. Где твои медленные точки? Какие запросы медленные (используйте EXPLAIN QUERY PLAN)? Ты ANALYZEING?

Также обратите внимание, что SQLite не очень удобен для параллелизма; только одно соединение может записывать в базу данных одновременно. Если вам нужен высокий параллелизм, рассмотрите другую базу данных.

1

Другие решения

если у вас несколько потоков, я бы не советовал вам отключать синхронный режим. Сомневаюсь, что скорость увеличится, просто переместив замок наружу в ваш класс

Я хотел бы предложить, чтобы вы думали о норамализации базы данных, чтобы вам не приходилось каждый раз читать огромные данные.

0