Каковы преимущества prepareThreshold = 5 в pgjdbc?

prepareThreshold в pgjdbc есть следующее определение:

Определите количество выполнений PreparedStatement, необходимых перед переключением на использование подготовленных операторов на стороне сервера. По умолчанию используется значение пять, что означает начало использования подготовленных операторов на стороне сервера при пятом выполнении того же объекта PreparedStatement. Более подробная информация о подготовленных инструкциях на стороне сервера доступна в разделе "Подготовленные сервером заявления".

Интересно, какую пользу это на самом деле приносит нам? Большинство веб-серверов не перезапускаются месяцами, поэтому все запросы к базе данных будут отправляться более 5 раз, так что дайте ему неделю или около того, и все подготовленные операторы будут храниться на сервере, не так ли? Это только для пользы настольных приложений? Или я что-то упускаю, например, "5 порогов за период времени"?

1 ответ

Решение

Я понимаю, что вы хотите знать, почему драйвер JDBC вообще ждет, прежде чем использовать подготовленный оператор на стороне сервера.

Не участвуя в процессе принятия решения, я бы сказал, что причина в том, что подготовка оператора подразумевает определенные накладные расходы (отправка вызова Prepare, Bind и Execute). Это имеет смысл делать только после того, как вы будете уверены, что заявление будет использовано повторно.

Не забывайте, что существуют другие способы использования подготовленных операторов, которые сохраняют шаг Parse для нескольких выполнений: это лучший способ избежать внедрения SQL. Одно это оправдывает подготовленное утверждение, даже если оно выполняется только один раз.

Другие вопросы по тегам