Вопрос по подготовленному заявлению на Java - PullRequest
3 голосов
/ 06 мая 2009

У нас есть подготовленный оператор в Java, и мы слышим, что он отличается от оператора в том, что этот подготовленный оператор не нужно компилировать при каждом его использовании.

Мой вопрос: где хранится это скомпилированное заявление? В коде клиента, который его использует или он хранится в базе данных?

Зачем БД хранить скомпилированный оператор, и если да, то как долго?

1 Ответ

4 голосов
/ 06 мая 2009

Базы данных имеют кеш запросов, что означает, что при выполнении запроса база данных кэширует запрос синтаксический анализ / скомпилированный и, возможно, план запроса для исключения будущих вычислений.

Подготовленные операторы обычно сначала кэшируются на уровне приложения, где контейнер приложения отвечает за управление кэшем операторов. Большинство контейнеров приложений имеют опции для управления кэшем подготовленных операторов (например: glassfish ).

Как вы можете видеть здесь , основное отличие такое, как вы заявили: с подготовленными утверждениями приложение снижает стоимость составления одного и того же утверждения снова и снова. Напомним, что для большинства контейнеров приложений оператор должен быть точно таким же (включая пробелы) для правильного повторного использования, поэтому будьте осторожны при использовании рукописных запросов.

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