@pgsql

Страница 903 из 1062
Andrey
24.07.2018
15:22:14
можно как-то высчитать место, которое освободится после VACUUM FULL?

Google
Tolya
24.07.2018
15:30:34
посмотреть долю bloat’а по таблице, это даст прикидки сколько данных высвободится

+ еще индексы перестроятся без дыр, тоже место можно прикинуть

Andrei
24.07.2018
15:38:11
касательно секционирования - лучшее, что нам светит в 11 - это импортчасти функционала от pg_pathman щт PgPro

так что если есть желание реально юзать таблицы размером > 1Tb - альтерантив этому расширению нету

особенно если нужно держать нагрузку одиночных быстрых выборок за весь период

Maksim
24.07.2018
15:39:43
можно как-то высчитать место, которое освободится после VACUUM FULL?
разница до и после pg_total_relation_size для таблицы и аналогичной функции для базы

Andrei
24.07.2018
15:40:32
ванильный инхерайтенс в 10ке + пранинг в бетке 11 пока очень сильно сливают

Yaroslav
24.07.2018
15:48:06
ванильный инхерайтенс в 10ке + пранинг в бетке 11 пока очень сильно сливают
А вы тестировали 11beta2 против pg_pathman, или где-то видели benchmark? Или это всё теоретически?

Tolya
24.07.2018
15:48:18
ну это вы сильно обобщили : )

Yaroslav
24.07.2018
15:55:48
так что если есть желание реально юзать таблицы размером > 1Tb - альтерантив этому расширению нету
Альтернатива называется "индексы". Более того, в некоторых ситуациях партиционирование им совсем не альтернатива (но на огромных таблицах скорее всего придётся "плакать, колоться" и т.д.). :(

Andrei
24.07.2018
15:58:22
А вы тестировали 11beta2 против pg_pathman, или где-то видели benchmark? Или это всё теоретически?
на нашем проекте чужые бенчи не прокатывают, под каждую фичу собираем отдельный кластер в облаке и активно юзаем

чтобы понять, да или нет

не могу ничего сказать плохого об этом расширении

Google
Andrei
24.07.2018
15:59:17
НО

мы стремимся уходить от всех левых экстеншенов

потому что, возможно, в будущем часть распредленной инфроструктуры решим хостить в AWS

а там нету ни пасмена, ни пг_крона, на которые у нас очень много логики завязано

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

а с пасменом через таски в pg_cron без проблем можно на старых партициях отрубать индексы для экономии места

ну и создавать кстати тоже)

Yaroslav
24.07.2018
16:04:10
если есть требование иметь горячими какой-то обьем данных, например месяц, вы же не будете каждый раз дропать и пересоздавать индекс по условию?
Зачем мне индекс по условию, вообще? Мне хватит и одного. ;) Проблема в его создании и/или обслуживании на огромных таблицах. :(

Andrei
24.07.2018
16:05:03
ну Вы же понимаете, что индекс по одному полю на таких таблицах бесполезен?

вот есть у меня сейчас в проде таблица 20Тб

Yaroslav
24.07.2018
16:05:18
все опять же зависит от поставленных задач
От запросов/структуры всё зависит, да. К некоторым задачам partitioning (как он есть сейчас) вообще не подходит.

Andrei
24.07.2018
16:05:41
там пару индексов еще под 10 тб выжирают

итого 30Тб мастер + 2 х30 два синхронных слейва + 30Тб асинхронный

итого 120Тб )

без партишинга мы бы умерли это все держать на SSD

а так спокойно старые партиции уводим на другое табличное пространство, отрубаем индексы ненужные

4 уровня теплоты данных, для каждого свой набор нужных индексов

Yaroslav
24.07.2018
16:08:15
ну Вы же понимаете, что индекс по одному полю на таких таблицах бесполезен?
Нет, не понимаю. Потому что это опять-таки зависит от запросов. ;) (Хотя, на практике, чаще всего он, эээ... сильно неудобен).

Andrei
24.07.2018
16:08:40
ну и естетсвенно, запросы к таблице, в которых нету условия по дате (ключ секционирования) караются безжалостно

Google
Andrei
24.07.2018
16:08:55
)))

в целом, конечно, все работает, но нужно уходить в GP

точнее уводить старые хвосты

Yaroslav
24.07.2018
16:11:41
без партишинга мы бы умерли это все держать на SSD
С частичными индексами так тоже можно "танцевать"... но только отчасти. И, опять-таки, временем их построения становится как-то нелегко пренебречь. ;(

Andrei
24.07.2018
16:12:13
мы написали функцию свою для создания индекса

она проверяет, есть ли у таблицы партиции

если есть, то по системному каталогу проверяет, нет ли с нужным набором полей

если нету - пихает стейтмент на создание индекса в служебную таблицу

туда раз в минуту ходит pg_cron

и смотрит - если для него задания

если есть - ранит через concurrently

вполне работе в несколько потоков

Admin
ERROR: S client not available

Andrei
24.07.2018
16:14:37
главное, чтобы одновременно не строились индексы на разные партиции одной таблицы - будет лок

для разных таблиц - без проблем

т.к. у нас много секционированных таблиц - то все уже испытано боем на кровавом продакшене)

Yaroslav
24.07.2018
16:18:50
т.к. у нас много секционированных таблиц - то все уже испытано боем на кровавом продакшене)
Так оно и должно работать... я о том, что время построения любого индекса по непартиционированной таблице по сравнению с построением его (по одной секции) с теми же данными в, например, 60 секциях... очень даже отличается.

Andrei
24.07.2018
16:19:13
это да

посекционно в раза два быстрее

Eugene
24.07.2018
17:18:04
юзер - это роль со свойством canlogin

Google
Eugene
24.07.2018
17:20:47
да

Yaroslav
24.07.2018
17:24:05
utf-8?

Vladimir
24.07.2018
17:32:54
Бесспорно utf-8

Ketzal
24.07.2018
18:36:42
pg_default, где и хранятся все датафайлы баз данных если не указано иное

Yaroslav
24.07.2018
18:37:50
https://www.postgresql.org/docs/current/static/manage-ag-tablespaces.html

Ketzal
24.07.2018
18:37:58
можете создать дополнительные табличные пространства на другом диске например

одна база на одном разделе, другая на другом, или таблицы по разным дискам разнести, одна на hdd, другая на ssd

или индексы

create tablespace fast location ‘/mount/path/to/ssd’

и далее create table veryFastTable(id int) tablespace fast;

типо того )

Yaroslav
24.07.2018
18:45:41
А вы из какой СУБД к нам пришли? ;)

Ketzal
24.07.2018
18:46:36
лучше при создании чем потом )

Yaroslav
24.07.2018
18:46:42
Тогда это типа data files / filegroups.

Ketzal
24.07.2018
18:47:48
хм, sqlite может? ))

Alex
24.07.2018
18:54:21
Друзья знаю что задача странная, но пока нормализую данные уйдет время а нужно на данный момент решить задачу. Есть таблица где имеется 3 столбца. В первом столбце записаны названия полей из другой таблицы . Как использовать данные чтобы сгенерировать динамически sql ? В list_prices много данных для примера привел только одну. P.S Архитектор не я :) http://sqlfiddle.com/#!15/0ab59/1

Yaroslav
24.07.2018
19:00:01
+1 ;)

Страница 903 из 1062