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

Добрый вечер, подскажите правильно ли я думаю насчёт индексов. Допустим

есть у меня такая таблица

CREATE TABLE IF NOT EXISTS tbl0 (id SERIAL, n TEXT, h TEXT, w INTEGER, t INTEGER, i TEXT, e TEXT, s INTEGER);

И запрос к этой таблице

"select n,h,w,t,i,e from tbl0 where s = 0 limit 1"

Индексы нужно строить по s, верное утверждение?

16 ответов

17 просмотров

Да

Q- Автор вопроса
Guzya
Да

спасибо. а могут индексы помочь на инсертах? а то при большой нагрузке бд не вывозит. или в этом случае только горизонтально масштабировать?

Q
спасибо. а могут индексы помочь на инсертах? а то ...

Индексирование сделает ситуацию с инсертами хуже

Q
спасибо. а могут индексы помочь на инсертах? а то ...

Нет, наоборот. При вставке и обновлении нужно ещё и индексы обслужить.

Вообще говоря нет.

Q- Автор вопроса
Q
Почему?

Потому что необходимость индексов показывает EXPLAIN (ANALYZE, BUFFERS)... И в общем случае, в приведённом DDL ПГ далеко не всегда будет использовать индексы.

а сортировка где?

Q
Почему?

раз: https://habr.com/ru/company/postgrespro/blog/578196/ два: https://habr.com/ru/company/postgrespro/blog/326096/

Q
Почему?

Вам тут ужэ оба пункта сказали -- но повторюсь. Во-первых индэкс не всегда полезен дажэ конкретно при таком запросе. Во-вторых -- оцэнивать его пользу лучшэ комплексно, поскольку индэкс небесплатен и можэт оказаться, что выигрыш в этом вопросе он даёт несущественный для бизнеса, но при этом занимает место на диске, в памяти и замедляет все модицыикацыи данных.

Q- Автор вопроса
Ilya Anfimov
Вам тут ужэ оба пункта сказали -- но повторюсь. В...

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

Q
это я понял. я просто не представляю как мне высчи...

Напишыте скрипты нагрузочного тэстирования, отладьте, прокрутите много раз, чтобы были варианты разбитых в перемешку данных -- а потом возьмите в аренду инстанс на амазоне, чтобы посмотреть -- чего хватает, чего нет.

Q
это я понял. я просто не представляю как мне высчи...

И да, это, в принцыпе, копеечные объёмы -- если нет чего-то своеобразного, то с таким сейчас домашние компы справляются.

Q- Автор вопроса
Ilya Anfimov
И да, это, в принцыпе, копеечные объёмы -- если не...

в том и дело, домашняя машинка у меня держит любую нагрузку, а на впс 4 ядра/4 ОЗУ всё отдано постгресу и на полной нагрузке оно ложится на инсертах

Q
в том и дело, домашняя машинка у меня держит любую...

Тогда скорее всего дело в IO отграничениях инстанса, у того же Амазона на штатных ес2 сам по себе IOPS ужасный - оно конечно SSD, но проходит через дико подрезающий контроллер. Там конкретно лучше брать машины с NVMe диском выделенным , но у них там нюанс что такие диски не персистентны у них

а что мешает наполнить базу и прогнать оба варианта, и посмотреть как будет вести себя планировщик. тут много факторов которые планировщик анализирует, включая статистику. иногда кроме как попробовать оба варианта решение и не принять Но да. Если вы применяете равенство, то скроее всего будет работать index scan. Т.е. чем уже выборка тем выше вероятность использования индекса

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

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

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта