Пакетное чтение строк с Go и pgx
Сначала запустите временную базу данных, затем выполните:
go -C examples/go-pgx run ./demo
Используются 127.0.0.1:55432, база pglc_demo и учётные данные demo /
demo-only. Если quickstart использует другой порт, задайте
PGLC_DEMO_PORT.
Демонстрация передаёт ключи как параметр запроса:
SELECT local_cache.mget('public.items'::regclass, $1::bigint[]);
mget возвращает text[]; каждый ненулевой элемент является JSON-строкой.
Пример запрашивает 42, 7, 42, NULL, 999999 и выводит строки в порядке
входных данных. Дубликат 42 остаётся в обеих позициях; null-вход и отсутствующий
999999 дают элементы null.
Сравнивайте строки, а не только обмены с сервером
Обычный запрос WHERE id = ANY($1::bigint[]) не сохраняет запрошенные позиции.
Восстановите порядок входных данных, дубликаты и отсутствующие строки перед
сравнением с mget; в руководстве по пакетному чтению
показаны клиентский и SQL-подходы.
Бенчмарк использует постоянные соединения и подготовленные операторы. Подготовка SQL не кэширует его строки результатов: см. руководство по кэшированию PostgreSQL. Общий бенчмарк проверяет Go и Node.js с одинаковыми ключами, размерами пакетов, числом соединений и длительностью через SQL и RESP. RESP не разделяет SQL-транзакцию вызывающего сеанса.
См. quickstart для настройки и проверок транзакций перед адаптацией пути чтения.
Обновлено .