Выполнение статических запросов SQL против DB2 без PureQuery

StackOverflow https://stackoverflow.com/questions/2471602

  •  20-09-2019
  •  | 
  •  

Вопрос

Я хотел бы использовать JPA через JDBC для нового приложения. Я строго использую названные запросы и основные методы CRUD Manager Entity Manager, что позволяет мне (с помощью Hibernate или любой другой реализации JPA) извлекать все собственные запросы SQL, которые будут выполняться в базе данных. С этим списком статических запросов я понимаю, что я могу построить пакет DB2, который является планами выполнения моих запросов.

Итак, мой вопрос: воспользуется ли выполнение этих запросов через JDBC против DB2 преимущества этих планов выполнения или нет? Я понимаю, что продукт PureQuery может запечатлеть список заказов SQL. Получает ли это, все еще через JDBC, а не через API специфики PureQuery, больше? Такая специфическая функция статической связывания DB2? или это эквивалентно JDBC?

Спасибо за любой ответ.

Это было полезно?

Решение

Приложения JDBC выполняют только Dynamic SQL (т.е. DB2 не использует статические пакеты).

Есть только 2 способа получить статический SQL (где запросы хранятся в пакете в базе данных): запишите свое приложение, используя SQLJ (который исключает JPA/Hibernate) или используйте PureQuery (который находится между JDBC и базой данных).

Имейте в виду, что даже при динамическом SQL DB2 делает кэширование планов выполнения запросов, поэтому, если они выполняются достаточно часто (т.е. они остаются в кэше), вы не увидите накладные расходы от сборника запросов. Кэш полезен только в том случае, если запросы представляют собой точное матч-байтовый, так что select * from t1 where c1 = 1 не то же самое, что select * from t1 where c1 = 2, как и select * from t1 where C1 = 1 (который дает тот же результат, но запрос отличается). Используя маркеры параметров (select * from t1 where c1 = ?) является ключевым. Ваш DBA может настроить размер кэша каталога, чтобы помочь максимизировать коэффициент попадания в этот кэш.

Хотя кэширование помогает избежать многократного составления запроса, оно не предлагает стабильность плана, которую делает статический SQL, так что YMMV.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top