Postgresql10 JDBC параллельные запросы - PullRequest
0 голосов
/ 06 сентября 2018

Я наблюдал, что мои запросы никогда не выполнялись параллельно сервером PostgreSQL. Если я выполняю тот же запрос с помощью pgAdmin, Heidi и т. Д., Он выполняется указанным числом параллельных рабочих процессов. Но, похоже, нет параметра jdbc для включения или отключения этого поведения. Кто-нибудь знает решение для этого?

В качестве примера я использую 3 таблицы: файл, gps и ячейка (информация). Запрос, который я использую, вынуждает Postgres использовать последовательное сканирование, и один из них параллельный.

select lon,lat,level
  from t_qd_state_cell tc
  join t_qd_state_gps  tp on tp.id_state=tc.id_state
  join t_qb_file tf on tf.id = tc.id_file
 where lon is not null
   and level is not null
   and tf.id>6000000

Соответствующий план запроса можно найти здесь:

query plan image

При запуске из pgAdmin параллельное выполнение может отслеживаться с использованием состояния сервера или htop. Но из программ Java есть только один процесс.

1 Ответ

0 голосов
/ 11 декабря 2018

Это может быть связано с параметром preferQueryMode драйвера JDBC PostgreSQL. Значение по умолчанию extended, которое демонстрирует такое поведение. Значения simple и extendedForPrepared работают как положено.

...