Использование gp_segment_id в качестве столбца раздела для параллельного получения данных из greenplum

#greenplum

Вопрос:

Могу ли я использовать несколько параллельных запросов с условием по gp_segment_id для параллельного выбора данных из таблицы greenplum? В чем недостатки этого метода? Возникнут ли у меня какие-либо проблемы с согласованностью результата?

Ответ №1:

Да. gp_segment_id будет вести себя как обычный столбец. единственное, что это скрыто.

 gpadmin=# select gp_segment_id,* from test1;  gp_segment_id | a --------------- ---  20 | 3  39 | 2  34 | 1 (3 rows) gpadmin=# select gp_segment_id,* from test2;  gp_segment_id | a --------------- ---  20 | 3  25 | 4  39 | 2  34 | 1 (4 rows) gpadmin=# select * from test1 p join test2 q on p.gp_segment_id=q.gp_segment_id;  a | a --- ---  2 | 2  1 | 1  3 | 3 (3 rows) gpadmin=#  

Вы можете использовать gp_segment_id в соединениях, где условия и т.д. Просто убедитесь, что комбинация параллельных запросов не вызывает перекос ресурсов.