tgoop.com/big_data_systems_analysis/30
Last Update:
Распределение (distribution) в Greenplum
В GP данные физически хранятся на разных сегментах, поэтому указывать распределение при создании таблицы обязательно.
Правила выбора хорошего ключа дистрибьюции
— Поле не должно иметь null-значений.
— Тип поля – integer.
— Не использовать в качестве ключа поля с типами: date, timestamp, boolean, decimal, большие строки.
— Значения поля должны быть уникальными.
— Поле чаще всего используется для соединения с большими таблицами.
— Максимум 2 поля, но лучше использовать 1.
— Поле не должно использоваться в качестве поля для партиционирования.
— Не нужно использовать поля, которые используются при фильтрации запросов в where, так как нагрузка при выполнении запроса будет распределена неравномерно.
Можно использовать случайное распределение, если не получается подобрать подходящие поля, но необходимо учитывать, что такое распределение хорошо работает только при вставке данных большими пакетами, так как GP распределяет данные по циклическому алгоритму, который запускается заново для каждой операции вставки, начиная с первого сегмента. Мелкие вставки приведут к неравномерному распределению данных по сегментам (перекосу).
#greenplum
BY В мире больших данных
Share with your friend now:
tgoop.com/big_data_systems_analysis/30