72 похожих чатов

Привет, у меня несколько таблиц на миллионы строк, некоторые из

них имеют foreign keys друг на друга. Запросы занимают часто много десятков секунд.

Как можно было бы улучшить производительность бд? Какие-то индексы построить, как-то правильно нормализовать или денормализовать бд, может стоит ещё что настроить? Ещё есть проблема пагинации, у меня сейчас она через limit и offset и тоже медленно работает, может есть советы как ускорить пагинацию? У меня постгрес.

13 ответов

14 просмотров

Построить какие-то индексы, как-то правильно нормализовать бд, ещё что настроить. Паджинация не нужна, выбросить.

__- Автор вопроса
Ilya Zviagin
Построить какие-то индексы, как-то правильно норма...

Ну если не нужна, то мне миллионы строк высылать? А нормализация ведь увеличит джоины и замедлит ещё сильнее запросы?

__
Ну если не нужна, то мне миллионы строк высылать? ...

Выбирай 101 строку. Если в наборе 100 и менее строк, не пишешь ничего. Если в наборе 101 строка, пишешь, что есть ещё данные и клиент может уточнить параметры поиска для получения более специфичных данных, нужных ему.

__
Ну если не нужна, то мне миллионы строк высылать? ...

Нормализация ни-че-го не замедляет. Join -ы - очень лёгкие части запросов, выполняются только по индексам.

Ilya Zviagin
Нормализация ни-че-го не замедляет. Join -ы - очен...

я вот с этим не согласен. Даже с качественно собранной статистикой и нужными индексами Oracle с большими таблицами с партициями может выбрать довольно хреновый план. Поэтому у них куча хинтов для исправления этой ситуации.

Ilya Zviagin
Значит, не хрен было партицировать...

а как обслуживать таблицу в которую идет запись 24 часа в сутки 7 дней в неделю. команда delete удаляет сутки за сутки и грузит бд. ?

Ilya Zviagin
А как тебе тут партишны помогут?

Удаляешь партицию и все. За секунду несколько милионов записей ушли.

Ilya Zviagin
Пуст грузит немного, не страшно

Много грузит. Даже если в цикле - это уже ощутимо.

Похожие вопросы

Обсуждают сегодня

Ребят, а за скок можно впарить анон чат с апишкой и веб админкой ?
Eugene Неелов
15
с помощью чего можно бота добавить как админа в чат? (условно в боте есть кнопка, нажатие на которую приводит тебя к выбору чата и выдаче прав боту)
ηє νєямσяє
5
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
а чем лучше всего сделать глобальный лок, если много нодов, до сотни? ну то есть мне надо, чтобы некоторые операции с объектом не происходили одновременно. перемещение между н...
Д. П.
15
Ты просто гитлеровскую эстетику плохо понимаешь. Он же всё под Цезаря делал. А это как бы запрещённый приём в политике. Пиджаки они зачем все носят? Чтобы показать что они тип...
Ivan Kropotkin
4
Всем привет, есть таблица компонентов (например материнка, процессор, видеокарта и тд) components и нужно еще реализовать механизм "совместимости" (те какой-то словарь, мол од...
Vladimir
2
'frakturBold' => ['𝖆', '𝖇', '𝖈', '𝖉', '𝖊', '𝖋', '𝖌', '𝖍', '𝖎', '𝖏', '𝖐', '𝖑', '𝖒', '𝖓', '𝖔', '𝖕', '𝖖', '𝖗', '𝖘', '𝖙', '𝖚', '𝖛', '𝖜', '𝖝', '𝖞', '𝖟', '𝕬', '𝕭', '𝕮', '𝕯'...
Roma
4
Подскажите как мне лучше держать websocket сединение и переодически передавать в него данные? Сначала я сделал так: for _ in 1...1000 { try? await ws.send("test") try...
Mihail Verenich
2
Добрый день, не подскажите, если в OC-V3 поменять страндартную директорию /storage/ на /storage2/ - не будет сильно много проблем ?
Max Dubovsky
32
Добрый день, подскажите как правильно сделать filter в backend-e. Есть модель (товар) у который связь belongsToMany (компания), компаний > 4k, поэтому выборку типа ->all(); н...
Max Dubovsky
7
Карта сайта