Каким образом организовать хранение большого количества записей в БД?

Ситуация следующая. Есть БД (SQLite, Windows) с одной таблицей, в которой всего три столбца:
- Идентификатор записи (текст, уникальный)
- Email владельца (нормализованные)
- Дополнительный текст (может быть весьма объёмным)

Выполняемые операции:
- Добавление новых записей
- Проверка наличия идентификатора в таблице (чтобы не допустить дублей)
- Выборка записей по email

С малым количеством данных никаких проблем не было. Но сейчас БД разрослось до 15 гигабайт и всё ворочается очень медленно. С записью проблем нет, а вот запросы на выборку по email могут длиться минутами. И каждый запрос на чтение блокирует таблицу для записи, что критично.

Вопросы:
- Возможно ли реализовать быстрое добавление и параллельные запросы к БД оставаясь на SQLite или переехать на другую СУБД?
- Как ускорить время выполнения запросов?
  • Вопрос задан
  • 2969 просмотров
Решения вопроса 3
@eandr_67
web-программист (*AMP, Go, JavaScript, вёрстка).
Проще переехать на любую нормальную SQL-базу (начиная с MySQL) с индексами для столбцов идентификатор и e-mail. Там такие запросы будут выполняться быстро.
Ответ написан
KorsaR-ZN
@KorsaR-ZN
Вынесите объемный текст, в отдельную таблицу, а в таблицы, где хранится email сделайте связку по ключу на таблицу с текстом.

пример:
table1:
  id, key, email, text_id

table2:
  id, text


и расширте мой вариан ответом от @Fesor
Ответ написан
alexclear
@alexclear
A cat
Не надо пытаться использовать SQLite для таких задач - для конкурентной работы он, к сожалению, не предназначен вообще. Это встраиваемая база данных.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы