Вы можете оптимизировать производительность запросов PostgreSQL на Node.js несколькими способами с помощью модуля node-postgres
, но, с учетом описанных вами случаев использования, я чувствую, что ни один из них не принесет существенного выигрыша в производительности.Общее tl; dr: относится к эталону, эталону, эталону.
Подготовленные операторы
Использование подготовленных операторов и пула соединений не являются взаимоисключающими, но планы запросовподготовленные операторы кэшируются только для каждого соединения.Пока эти соединения остаются активными (пока сам пул не закрыт), кэшированные планы запросов остаются неизменными и связываются с соединением, которое их выполнило.В худшем случае несколько соединений выполняют этап планирования для данного подготовленного запроса один раз.
Подготовленные операторы могут дать некоторые преимущества в производительности, поскольку node-postgres
не пропускает планирование запросаэтап для них после первого выполнения ( исходный код, JavaScript , исходный код, собственные привязки ).
Собственные привязки
Говоря о собственных привязках, автор модуля node-postgres
также поддерживает совместимый с Node.js набор привязок к встроенной библиотеке C libpq в упаковке node-pg-native
.Если ваша среда развертывания поддерживает совместимый компилятор, их, возможно, стоит изучить.
Документация предупреждает о возможной несовместимости крайнего случая между клиентом JavaScript и собственными привязками, поэтому обязательно примите это во внимание, прежде чемсделайте такой переход, чтобы больше ничего не прерывалось в вашем приложении.