У меня есть приложение с открытым исходным кодом Java, которое использует Hibernate и HSQLDB для сохранения. Во всех моих игрушечных тестах все работает быстро, и все хорошо. У меня есть клиент, который работает в течение нескольких месяцев, и их база данных значительно выросла за это время, и производительность постепенно снижалась. Наконец-то мне пришло в голову, что проблема может быть в базе данных. Насколько я могу судить по операторам журнала, все вычисления на сервере происходят быстро, так что это согласуется с гипотезой о том, что БД может быть виновата.Как настроить производительность приложения hsqldb/hibernate
Я знаю, как сделать нормальное профилирование программы, чтобы выяснить, где горячие точки и что занимает значительное количество времени. Но все профилировщики, которых я знаю, контролируют время выполнения программы в рамках программы и не дают вам никакой помощи в вызовах внешних ресурсов. Какие инструменты используются людьми для профилирования программ, использующих внешние вызовы db, чтобы выяснить, где оптимизировать производительность?
Немного слепых, которые ищут вокруг, уже нашли несколько горячих точек - я заметил вызов, в котором я перечислял все объекты определенного класса, чтобы узнать, есть ли они. Однострочное изменение критерия [.setMaxResults (1)] изменило этот вызов с полусекундной на практически мгновенную. Я также вижу места, где я задаю один и тот же вопрос из db много раз в рамках одной транзакции. Я еще не понял, как кешировать ответ, но то, что я действительно хочу, - это инструмент, который поможет мне более систематически искать эти вещи.
У меня нет настройки производительности в конфигурации БД. Я предположил, что моя проблема, скорее всего, будет плохо продуманными запросами или слишком часто задавать неправильный вопрос. Наверное, я хотел бы сначала найти способ уменьшить количество запросов и их расход, а затем (после сокращения использования на 80%) ускорить сам db, используя кеширование и другие трюки на этой уменьшенной нагрузке. Но я не эксперт в настройке использования БД. Вы предлагаете настроить БД перед приложением? – PanCrit
Если вы уверены, что проблема в спящем режиме, настройка DB не поможет. Перед настройкой используйте инструмент профилирования или что-то, что поможет вам точно отслеживать корень ваших проблем с производительностью, а затем оптимизировать его. К сожалению, нет простого способа. Хорошей новостью является то, что все IDE сегодня имеют достойную поддержку профилирования. – razenha