powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Оптимизация в Hibernate
13 сообщений из 13, страница 1 из 1
Оптимизация в Hibernate
    #33592273
Pomytkin Evgeny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня возникла проблема со скоростью в web-приложении с применением Hibernate. SQL запрос, который выполняется в Toad за 2 секунды, в приложении выполняется в разы медленнее.

Посоветуйте, где можно покопаться над повышением быстродействия.
...
Рейтинг: 0 / 0
Оптимизация в Hibernate
    #33592290
chernolyas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй ручками оптимизировать sql запросы.
а какая БД? Какой объем записей?
...
Рейтинг: 0 / 0
Оптимизация в Hibernate
    #33592464
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приведите trace к серверу
Приведи настройки SessionFactory
...
Рейтинг: 0 / 0
Оптимизация в Hibernate
    #33593175
Pomytkin Evgeny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
База - Oracle.

to chernolyas:
Не понял, зачем ручками оптимизировать запрос, вопрос в другом : почему разница в разы при выполнении в Toad и Hibernate. Не в пользу последнего.

to funikovyuri:
Тормозит на коде
Код: plaintext
query.list();
Запрос возвращает набор scalar'ов и сам запрос SQL, а не HQL.
Нужны ли еще trace при таком уточнении?

Настройки SessionFactory :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<session-factory>
        <property name="connection.username">xxx</property>
        <property name="connection.url">jdbc:oracle:thin:@our_server: 1521 :orc</property>
        <property name="dialect">org.hibernate.dialect.OracleDialect</property>
        <property name="connection.password">yyy</property>
        <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
        <property name="show_sql">true</property>
        <property name="use_reflection_optimizer">false</property>

        <property name="c3p0.acquire_increment"> 1 </property>
        <property name="c3p0.idle_test_period"> 300 </property>
        <property name="c3p0.min_size"> 1 </property>
        <property name="c3p0.max_size"> 100 </property>
        <property name="c3p0.timeout"> 60 </property>
</session-factory>

P.S. Установка use_reflection_optimizer в true на скорость не влияет
...
Рейтинг: 0 / 0
Оптимизация в Hibernate
    #33593378
chernolyas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да. ... тогда странно. ну тут можно посоветовать повнимательнее почитать логи, которые пишет hibernate. возможно там будет виднее что действительно тормозит. Само выполнение запроса или мапинг обектов на основании resultset'а.
...
Рейтинг: 0 / 0
Оптимизация в Hibernate
    #33594032
М.Голованов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chernolyasну тут можно посоветовать повнимательнее почитать логи, которые пишет hibernate

А если ничего подозрительного не найдете, не забудьте отключить логи (а также show_sql). Они сами по себе резко ухудшают производительность - по понятной, надеюсь. причине.
...
Рейтинг: 0 / 0
Оптимизация в Hibernate
    #33597060
Pomytkin Evgeny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем Hibernate оказался ни причем.

В Toad в запросе я использовал такую конструкцию:
Код: plaintext
1.
select * from xtable x
from x.begindate between trunc(sysdate) and sysdate;

А в Hibernate конструкция была несколько сложнее:
Код: plaintext
1.
select * from xtable x
from x.begindate between :start and :end;

Так вот выяснилось, что если я подставляю значения как тип Timestamp, то запрос выполняется значительно медленнее, чем если подставлять строки в запрос типа:
Код: plaintext
1.
select * from xtable x
from x.begindate between to_date(:start, :mask) and to_date(:end, :mask);

Пробовал через jdbc выполнить, результат тот же. Значит проблема не в Hibernate...
Сейчас я в задумчивости, почему же так происходит?
...
Рейтинг: 0 / 0
Оптимизация в Hibernate
    #33597077
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а поля в таблице какого типа? И еще думаю стоит план запроса посмотреть!?
...
Рейтинг: 0 / 0
Оптимизация в Hibernate
    #33604380
Pomytkin Evgeny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тип таблицы обычный.

Планы одинаковые.
...
Рейтинг: 0 / 0
Оптимизация в Hibernate
    #33606725
Sleepy_PIP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pomytkin EvgenyВ общем Hibernate оказался ни причем.

В Toad в запросе я использовал такую конструкцию:
Код: plaintext
1.
select * from xtable x
from x.begindate between trunc(sysdate) and sysdate;

А в Hibernate конструкция была несколько сложнее:
Код: plaintext
1.
select * from xtable x
from x.begindate between :start and :end;

Так вот выяснилось, что если я подставляю значения как тип Timestamp, то запрос выполняется значительно медленнее, чем если подставлять строки в запрос типа:
Код: plaintext
1.
select * from xtable x
from x.begindate between to_date(:start, :mask) and to_date(:end, :mask);

Пробовал через jdbc выполнить, результат тот же. Значит проблема не в Hibernate...
Сейчас я в задумчивости, почему же так происходит?


какого типа поле
x.begindate
в табличке?
...
Рейтинг: 0 / 0
Оптимизация в Hibernate
    #33608519
Pomytkin Evgeny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to funikovyuri:
посмотрел более внимательно - планы одинаковые, но стоимость разная: где используется to_date, стоимость меньше. Это на Oracle8i. А на тестовом сервере с Oracle 10g еще интересней - планы разные: где используется to_date, стоимость меньше и он короче.

to Sleepy_PIP:
Date
...
Рейтинг: 0 / 0
Оптимизация в Hibernate
    #33609355
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Снова проверить планы запросов
2. Проверить трейс к серверу
3. Проверить этот же запрос на вашем jdbc драйвере но без hibernate
...
Рейтинг: 0 / 0
Оптимизация в Hibernate
    #33611389
Pomytkin Evgeny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to funikovyuri:

Все это я уже делал.
1. Планы различаются ТОЛЬКО стоимостью.
2. Исходя из анализа трейса время тратится в основном на fetch. Пропорции cpu/fetch как в медленном, так и в быстром приблизительно одинаковое 3/7
3. При выполнении через jdbc имеет та же проблема.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Оптимизация в Hibernate
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]