Size: a a a

pgsql – PostgreSQL

2020 August 21

s

sexst in pgsql – PostgreSQL
Seq Scan on csco_ifndq У вас тут гадит по большей части
источник

s

sexst in pgsql – PostgreSQL
Ну и просто вагон перебираемых данных, которые в кеш не влезают и диск насилуют
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Kosta
если железа выделят побольше, партиционность таблиц поможет? тк сейчас в качестве эксперимента csco_idesind_2008_2020 это кусок csco_idesind, а там данные с 1993 года, если с ней начать работы...
Только если большинство запросов относятся к небольшому подмножеству partitions (и это можно точно определить на этапе их планирования / выполнения!). Иначе будет только [намного] хуже, скорее всего.
источник

K

Kosta in pgsql – PostgreSQL
Yaroslav Schekin
Только если большинство запросов относятся к небольшому подмножеству partitions (и это можно точно определить на этапе их планирования / выполнения!). Иначе будет только [намного] хуже, скорее всего.
учту, спасибо еще раз.
источник

s

sexst in pgsql – PostgreSQL
Оперативки бы вам побольше. Явно и csco_ifndq с диска читается и временные файлы для хеша тоже не влезают и на диск пишутся, судя по  temp written=2256631
источник

K

Kosta in pgsql – PostgreSQL
sexst
Ну и просто вагон перебираемых данных, которые в кеш не влезают и диск насилуют
да, понимаю
источник

s

sexst in pgsql – PostgreSQL
Yaroslav Schekin
Только если большинство запросов относятся к небольшому подмножеству partitions (и это можно точно определить на этапе их планирования / выполнения!). Иначе будет только [намного] хуже, скорее всего.
Да вроде как как раз скан по периоду дат то как раз самый беспроблемный. БОльшая таблица (и, соответственно, индекс), конечно, ещё сильнее нехватку памяти усугубит, но тут уже гадание сплошное начинается - влезет нужное в кеш или не влезет, вытеснится или не вытеснится.
источник

s

sexst in pgsql – PostgreSQL
В целом я бы скорее не рассчитывал на эффект
источник

K

Kosta in pgsql – PostgreSQL
но пример с временной таблицей содеражей временной отрезок 2008-2020 (а это самый частый диапазон у дата саентологов) дает прирост существенный даже в текущих условиях.
источник

K

Kosta in pgsql – PostgreSQL
или создать 2 таблицы 1993-2008/2008-2020?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Kosta
но пример с временной таблицей содеражей временной отрезок 2008-2020 (а это самый частый диапазон у дата саентологов) дает прирост существенный даже в текущих условиях.
Так Вы эту временную таблицу, наверное, ещё как-то ограничиваете (не все поля выбираете, например)?
Вы, кажется, показывали, но я забыл и искать не хочется. ;)
источник

B

BAHR in pgsql – PostgreSQL
👍
источник

K

Kosta in pgsql – PostgreSQL
да, точно
источник

s

sexst in pgsql – PostgreSQL
Kosta
но пример с временной таблицей содеражей временной отрезок 2008-2020 (а это самый частый диапазон у дата саентологов) дает прирост существенный даже в текущих условиях.
А у вас на основной то все полезные и сработавшие рекомендации умных людей отсюда уже применены чтобы сравнивать равноценно? У вас может изначально эти таблицы тоже целиком читались вообще
источник

K

Kosta in pgsql – PostgreSQL
sexst
А у вас на основной то все полезные и сработавшие рекомендации умных людей отсюда уже применены чтобы сравнивать равноценно? У вас может изначально эти таблицы тоже целиком читались вообще
да, нужно анализатор и на них прогнать. после тюна постгреса не проверял.
источник

K

Kosta in pgsql – PostgreSQL
пока жду когда покрывающий индекс большой таблицы создастся
источник

s

sexst in pgsql – PostgreSQL
Kosta
да, нужно анализатор и на них прогнать. после тюна постгреса не проверял.
И индексы (если какие-то полезные создавались на частичной таблице) тоже нужно повесить, да. Если индекс по дате будет в память вмещаться и висеть там, то нужные строки по этому критерию выберутся быстро что с партиционированием, что без. Вот если не влезет индекс - вот тогда правильные партиции по дате сократят количество данных, которые нужно будет прочесть с диска.
источник

s

sexst in pgsql – PostgreSQL
Но до этого лучше не доводить, будет грустно
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
sexst
И индексы (если какие-то полезные создавались на частичной таблице) тоже нужно повесить, да. Если индекс по дате будет в память вмещаться и висеть там, то нужные строки по этому критерию выберутся быстро что с партиционированием, что без. Вот если не влезет индекс - вот тогда правильные партиции по дате сократят количество данных, которые нужно будет прочесть с диска.
Там условие по дате только в одной таблице (не факт, что в другой вообще даты есть).
Т.е. "правильное" партиционирование тут сделать непросто.
И даже в случае партиционирования по датам, выигрыш будет либо тогда, когда при заполнении таблицы происходит много updates/deletes (повторных inserts), либо тогда, когда условия запроса как раз делают выгодным этот индекс по датам не использовать вообще.
источник

s

sexst in pgsql – PostgreSQL
Kosta
aws m5.large vCPU 2, 8GB RAM
BTW, r5.large на 0.03$ дороже (0,126 vs 0,096 USD за час), но оперативки уже не 8гб, а хотя бы 16гб.
источник