Как правильно организовать поиск по большому кол-во бд?

Есть несколько больших postgresql таблиц(по ≈ 1млн строк в каждой). Например с номерами телефонов и информации о их владельцах.
Пользователь вводит номер, ему выдаётся инфа из бд.
Как сделать поиск максимально производительным? Что использовать? Асинхронность? Многопоточность?
  • Вопрос задан
  • 230 просмотров
Пригласить эксперта
Ответы на вопрос 4
ThunderCat
@ThunderCat
{PHP, MySql, HTML, JS, CSS} developer
Как сделать поиск максимально производительным?
Вопрос из серии "какая машина самая крутая?". Нет решения которое подходит под любой вариант базы и структуры, иначе все только одним им и пользовались, логично?

Есть несколько больших postgresql таблиц(по ≈ 1млн строк в каждой).
Это таблицы среднего размера, ничего большого в них нет. Миллион записей это средняя таблица со статистикой, все должно работать достаточно быстро и без каких-то особых танцев.

Пользователь вводит номер, ему выдаётся инфа из бд.
Ну так сами пробовали сделать 20-30 рандомных запросов и посмотреть скорость, explain, использование индексов? Или мы "боимся заранее"?

Что использовать? Асинхронность? Многопоточность?
Мозги, используйте мозги, это гораздо эффективнее...
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Как сделать поиск максимально производительным? Что использовать? Асинхронность? Многопоточность?

Оптимизация запроса к БД начинается с того что вы выделяете сет активных запросов которые важны для вас.
Для каждого из них строите план исполнения запросов
EXPLAIN [ ANALYZE ] [ VERBOSE ] ......
Потом с этим планом приходите к специалисту (или сюда) и спрашиваете что надо улучшить в
тексте запроса или в таблице или в индексе чтоб было быстрее.

Добавление большего числа исполнительных потоков (сессий БД) обычно не улучшает ситуацию
а только ухудшает. Практика это показывает. Мы быстро выходим на пологую кривую пропускной
способности диска - и дальше хоть добавляй потоки - все будет только хуже.

Насчет асинхронных операций - не знаю. Если мы работаем через пул коннектов - то надо обсудить
построение абстракции асинхронности над абстракцией пула. Это тема отдельного топика.
Ответ написан
Комментировать
@calculator212
Есть несколько больших postgresql таблиц(по ≈ 1млн строк в каждой).
1млн не так много данных, но если не хватает скорости то можете попробовать создать индексы. Со стороны клиента можно создать пул соединений.
Ответ написан
@Vitsliputsli

Есть несколько больших postgresql таблиц(по ≈ 1млн строк в каждой).

Слейти их все в одну таблицу и не нужен вам никакой параллелизм.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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