Долгое время соединения с Azure Postgres
У меня есть база данных Azure для службы PostgreSQL (PaaS). Когда я пытаюсь запросить это с psql
тогда даже просто SELECT
запрос из одной таблицы занимает ~1,5 с. Когда я нахожусь в консоли postgres, тогда нет проблем, запросы выполняются менее чем за 100 мс. Что может вызвать эту задержку во времени соединения?
for I in {1..15} ; do /usr/bin/time -f "%es" psql -U postgres@user -h my-server.postgres.database.azure.com database_name -c "SELECT count(*) FROM table_name" > /dev/null ; done
1.86s
1.95s
1.60s
1.03s
1.59s
1.58s
1.60s
1.68s
1.60s
1.60s
1.62s
1.63s
1.61s
1.83s
1.70s
К вашему сведению: в таблице 11 записей
ОБНОВЛЕНИЕ Ниже доказательство теста это задержка соединения, а не сам запрос выполнения на postgres
$ psql -t -U postgres@resource-group -h postgresql-project.postgres.database.azure.com stage_table <<EOF
SELECT count(*), clock_timestamp() FROM my_table;
SELECT count(*), clock_timestamp() FROM my_table;
SELECT count(*), clock_timestamp() FROM my_table;
SELECT count(*), clock_timestamp() FROM my_table;
SELECT count(*), clock_timestamp() FROM my_table;
SELECT count(*), clock_timestamp() FROM my_table;
SELECT count(*), clock_timestamp() FROM my_table;
SELECT count(*), clock_timestamp() FROM my_table;
SELECT count(*), clock_timestamp() FROM my_table;
SELECT count(*), clock_timestamp() FROM my_table;
SELECT count(*), clock_timestamp() FROM my_table;
SELECT count(*), clock_timestamp() FROM my_table;
SELECT count(*), clock_timestamp() FROM my_table;
SELECT count(*), clock_timestamp() FROM my_table;
SELECT count(*), clock_timestamp() FROM my_table;
EOF
17 | 2019-07-23 13:26:11.475655+00
17 | 2019-07-23 13:26:11.506887+00
17 | 2019-07-23 13:26:11.553769+00
17 | 2019-07-23 13:26:11.585022+00
17 | 2019-07-23 13:26:11.616273+00
17 | 2019-07-23 13:26:11.64752+00
17 | 2019-07-23 13:26:11.678787+00
17 | 2019-07-23 13:26:11.710046+00
17 | 2019-07-23 13:26:11.74129+00
17 | 2019-07-23 13:26:11.772524+00
17 | 2019-07-23 13:26:11.803794+00
17 | 2019-07-23 13:26:11.835042+00
17 | 2019-07-23 13:26:11.86629+00
17 | 2019-07-23 13:26:11.897517+00
17 | 2019-07-23 13:26:11.944397+00
$
Я также читал о accelerated networking
на лазурном, но это похоже на применение только к самой ВМ. Могу ли я включить это ускорение на сервисе PostgreSQL? https://docs.microsoft.com/en-us/azure/virtual-network/create-vm-accelerated-networking-cli
1 ответ
Задержка - это длительное время, необходимое для установления соединения с базой данных.
1,5 секунды довольно хромает. Но это не должно быть убийцей, потому что вы должны использовать пул соединений и держать сеансы базы данных открытыми.
Чтобы быть уверенным, вы можете сравнить результат с
psql -U postgres@user -h my-server.postgres.database.azure.com database_name <<EOF
SELECT count(*), clock_timestamp() FROM table_name;
SELECT count(*), clock_timestamp() FROM table_name;
SELECT count(*), clock_timestamp() FROM table_name;
SELECT count(*), clock_timestamp() FROM table_name;
SELECT count(*), clock_timestamp() FROM table_name;
SELECT count(*), clock_timestamp() FROM table_name;
SELECT count(*), clock_timestamp() FROM table_name;
SELECT count(*), clock_timestamp() FROM table_name;
SELECT count(*), clock_timestamp() FROM table_name;
SELECT count(*), clock_timestamp() FROM table_name;
SELECT count(*), clock_timestamp() FROM table_name;
SELECT count(*), clock_timestamp() FROM table_name;
SELECT count(*), clock_timestamp() FROM table_name;
SELECT count(*), clock_timestamp() FROM table_name;
SELECT count(*), clock_timestamp() FROM table_name;
EOF
Это должно быть быстрее. Разница будет время соединения.