pg_clickhouse 0.10: подзапросы уезжают в ClickHouse целиком
ClickHouse выпустил расширение Postgres pg_clickhouse 0.10.0, которое отдаёт аналитические запросы на ClickHouse. Планировщик теперь отправляет коррелированные подзапросы целиком, не строчка за строчкой. На TPC-H полностью «спущенных» запросов стало 16 из 22 вместо 12.
Q17 с расчётом среднего `l_quantity` ускорился с 32,7 сек до 37 мс (Postgres даёт 2,1 с). Гибрид обгоняет как старую версию, так и родной план Postgres.
Также переписали бинарный драйвер на новую C-библиотеку и исправили ошибки многопоточности.
Шесть запросов (Q13, Q15, Q16, Q18, Q20, Q21) всё ещё не уезжают: Postgres разворачивает их подзапросы в anti/semi-join, а деparser не может обойти деревья соединений с двух сторон. Перед использованием проверьте EXPLAIN VERBOSE, чтобы убедиться, что Remote SQL содержит полный запрос.
🔗 Подробнее
@nuancesprog #Data #Postgres
ClickHouse выпустил расширение Postgres pg_clickhouse 0.10.0, которое отдаёт аналитические запросы на ClickHouse. Планировщик теперь отправляет коррелированные подзапросы целиком, не строчка за строчкой. На TPC-H полностью «спущенных» запросов стало 16 из 22 вместо 12.
Q17 с расчётом среднего `l_quantity` ускорился с 32,7 сек до 37 мс (Postgres даёт 2,1 с). Гибрид обгоняет как старую версию, так и родной план Postgres.
Также переписали бинарный драйвер на новую C-библиотеку и исправили ошибки многопоточности.
Шесть запросов (Q13, Q15, Q16, Q18, Q20, Q21) всё ещё не уезжают: Postgres разворачивает их подзапросы в anti/semi-join, а деparser не может обойти деревья соединений с двух сторон. Перед использованием проверьте EXPLAIN VERBOSE, чтобы убедиться, что Remote SQL содержит полный запрос.
🔗 Подробнее
@nuancesprog #Data #Postgres
Как одна строка SQL превращает Postgres в read-only
Клиент PlanetScale получил лавину ошибок 25006: запись перестала работать без видимых причин. Причина — один эндпоинт выполнял
PgBouncer в режиме транзакций переиспользует соединения между клиентами. Настройка сессии осталась в соединении и «отравила» пул для всех последующих запросов.
Быстрое лечение —
🔗 Подробнее
@nuancesprog #Infrastructure #Postgres
Клиент PlanetScale получил лавину ошибок 25006: запись перестала работать без видимых причин. Причина — один эндпоинт выполнял
SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLY.PgBouncer в режиме транзакций переиспользует соединения между клиентами. Настройка сессии осталась в соединении и «отравила» пул для всех последующих запросов.
Быстрое лечение —
DISCARD ALL на всех соединениях пула, а не только на подозрительных. Надёжнее не трогать сессию вообще: читающий трафик отправляй на реплику.🔗 Подробнее
@nuancesprog #Infrastructure #Postgres
👍3