Каковы преимущества prepareThreshold = 5 в pgjdbc? - PullRequest
2 голосов
/ 22 мая 2019

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

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

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

1 Ответ

1 голос
/ 22 мая 2019

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

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

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

...