или вы можете сохранить сообщение в сеансе, а затем на странице перенаправления сказать
if(isset( или вы можете сохранить сообщение в сеансе, а затем на странице перенаправления сказать
[110] не забудьте сбросить его, когда вы закончите
SESSION['message'])) echo или вы можете сохранить сообщение в сеансе, а затем на странице перенаправления сказать
[110] не забудьте сбросить его, когда вы закончите
SESSION['message']
не забудьте сбросить его, когда вы закончите
Unfortunately, as far as I know, there is no tool for that.
But there are some things you might want to check:
Сколько данных вы храните в HSQLDB? Я не думаю, что он хорошо работает при управлении большими наборами данных, поскольку он просто хранит все в файлах ...
Когда-то был инструмент под названием IronGrid / IronEye / IronTrackSql, который сделал именно то, что вы ищете. К сожалению, они ушли из бизнеса. Они открыли исходный код своего продукта в последнюю минуту, но я не мог найти источник или двоичный файл в течение достаточно долгого времени.
Я использовал YourKit для профилирования в последнее время, отчасти потому, что вы можете настроить его на время SQL, чтобы найти ваши наиболее вызываемые операторы и операторы с наибольшей продолжительностью. Это не так подробно, как IronGrid, но дает ценную информацию. В моем последнем сеансе настройки базы данных / гибернации проблема оказалась в спящем режиме, а также в том, как и когда она выполняла загрузку по сравнению с отложенной загрузкой и добавлением некоторых разумных переопределений по умолчанию при выборе большого количества элементов.
Здесь можно публиковать отчеты. У меня есть некоторые результаты, и я все еще ищу хорошие ответы.
Я нашел несколько инструментов, которые помогают:
VisualVM (с BTrace или встроенной трассировкой) утверждает, что помогает с трассировкой, но мне не удалось найти какой-либо инструмент, который показывает время при вызовах методов.
YourKit считается полезным; Я попросил лицензию с открытым исходным кодом.
Самая полезная вещь, которую я нашел, - встроенная статистика Hibernate. Если вы установите
hibernate.generate_statistics true
в своих свойствах вы можете отправить sessionFactory.getStatistics ()
и просмотреть подробную статистику о том, какие объекты были сохранены и извлечены и что влияет на кэши. Я нашел один из ответов, которые мне нужны, в qeuryStatistics, который сообщает для каждого скомпилированного запроса, попадания и пропадания кэша, количество выполнений запроса, сколько строк было возвращено, а также среднее, максимальное и минимальное время выполнения. Эти сроки совершенно ясно показали, куда идет время.
Затем я прочел кое-что о кешировании. Предложение Разенхи было правильным. [Сейчас я отмечу его ответ как правильный.] Я добавил hibernate.cache.use_query_cache true
в мои свойства и добавил query.setCacheable (true);
в большинство моих запросы. Я также добавил
в несколько моих файлов .hbm.xml. Сейчас большая часть моей статистики показывает значительное преобладание обращений к кешу, а производительность значительно выше.
Мне бы все еще хотелось, чтобы некоторые инструменты помогли мне отследить время выполнения, чтобы я мог атаковать не самые очевидные, а самые серьезные проблемы, но это большая помощь. Возможно, один из приведенных выше инструментов трассировки окажется полезным.
В Terracotta 3.1 вы можете отслеживать всю эту статистику в реальном времени с помощью Terracotta Developer Console. Вы можете просматривать исторические графики для статистики кэша, а также видеть статистику спящего режима или статистику кеширования в масштабе кластера или для каждого узла.
Terracotta - это открытый исходный код. Более подробная информация и загрузка находятся на Terracotta for Hibernate .