|
Низкая скорость выполнения запросов после загрузки значительного объема данных
|
|||
---|---|---|---|
#18+
Василий, зануда - человек который даже на РИТОРИЧЕСКИЙ вопрос отвечает вопросом. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 13:44 |
|
Низкая скорость выполнения запросов после загрузки значительного объема данных
|
|||
---|---|---|---|
#18+
palsчто мешает после только что выполненного создания индекса их правильно использовать (наличие статистики или еще что-то)? вообще-то после создания индекса статистика для них наисвежайшая ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 13:46 |
|
Низкая скорость выполнения запросов после загрузки значительного объема данных
|
|||
---|---|---|---|
#18+
МимопроходящийВасилий, зануда - человек который даже на РИТОРИЧЕСКИЙ вопрос отвечает вопросом.Диалог в трамвае: - Прости, вы на следующей выходите? - Да. - А вы впереди спрашивали? - Да. - И что они вам ответили? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 13:46 |
|
Низкая скорость выполнения запросов после загрузки значительного объема данных
|
|||
---|---|---|---|
#18+
Basil A. Sidorovно вместо того, чтобы отфутболить на "планы и мониторинг в FB" и на "профилирование JVM" - начинаются общечеловеческие рассуждения о сборке мусора, незакрытых курсорах и т.п. тряхомудии. Я бы даже понял простое "воспроизведи с отдельным FB-сервером, а потом думай дальше". 1. Профилированием приложения мы и занимаемся. Пока профилированием нас приводит к тому, что медленно выполняется метод executeQuery. Мы предполагаем, что далее запрос попадает к FB и он доступными ему средствами формирует resultset, который доступен далее для нас. 2. Относительно планов запроса. А возможно ли получить план в ходе выполнения приложения через JDBC? Не задумывался на этот счет. Надо посмотреть описание JDBC-драйвера. Но я уже говорил, что один и тот же алгоритм (включающий несколько запросов к БД) выполняется медленно (~1c на запись) в случае если в рамках этого же сеанса JVM прошла загрузка и быстро (~0.04) если загрузка шла в другом сеансе (возможно завершившемся несколько секунд назад). Т.к. тестовые данные одинаковые и классификатор одинаковый, то мы считаем что и запросы должны идти одинаковые. А значит, что велика вероятность что и планы у них будут одинаковые (если конечно статистика по индексам и таблицам к моменту выполнения запроса собралась). Может кстати в статистике собака зарыта? 3. Относительно FB-сервера. К сожалению заказчик просит чтобы приложение переносилось копированием к одной машины на другую, поэтому режим сервера нами не тестировался и не рассматривался вообще в рамках этого приложения. Даже если мы увидим, что в рамках сервера приложение работает быстрее, нам все равно надо добиться приемлимой проивзодительности в режиме Embbeded. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 14:10 |
|
Низкая скорость выполнения запросов после загрузки значительного объема данных
|
|||
---|---|---|---|
#18+
palsОтносительно планов запроса. А возможно ли получить план в ходе выполнения приложения через JDBC? не знаю что там можно средствами самого JDBC, но через трассировку точно можно план и множество других подробностей. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 14:14 |
|
Низкая скорость выполнения запросов после загрузки значительного объема данных
|
|||
---|---|---|---|
#18+
pals3. Относительно FB-сервера. К сожалению заказчик просит чтобы приложение переносилось копированием к одной машины на другуюНаличие отдельного сервера БД никак не препятствует копированию приложения, работающего с этой базой. Не станете же вы делать какой-нибудь embedded facebook, чтобы задействовать его, скажем, REST API этого FB. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 14:24 |
|
Низкая скорость выполнения запросов после загрузки значительного объема данных
|
|||
---|---|---|---|
#18+
Basil A. Sidorovвместо того, чтобы отфутболить на "планы и мониторинг в FB"См. мой первый ответ в этой ветке. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 14:27 |
|
Низкая скорость выполнения запросов после загрузки значительного объема данных
|
|||
---|---|---|---|
#18+
palsМне кажется, что проблема либо на стороне FB, либо на стороне JDBC-драйвераНе нужно гадать. Нужно использовать имеющиеся инструменты для определения причин проблемы. Повторить вот это ещё раз 21057248 ? palsВозможно FB не успевает собрать статистику или заполнить какие-то свои внутренние структуры для полноценного использования индексов, а может есть какие-то особенности работы FB с индексами в режиме Embedded Server?Я могу придумать десяток разных вариантов, но - см. выше. Я понимаю, что вы работаете с Java и имеете слабое понятие об Firebird, но нужно таки осваивать используемы инструмент. А там, глядишь, и понравится :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 14:32 |
|
Низкая скорость выполнения запросов после загрузки значительного объема данных
|
|||
---|---|---|---|
#18+
palsвыполняется медленно (~1c на запись) в случае если в рамках этого же сеанса JVM прошла загрузка и быстро (~0.04) если загрузка шла в другом сеансе (возможно завершившемся несколько секунд назад).принудительно перезапустить программу и забыть о проблеме? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 17:37 |
|
Низкая скорость выполнения запросов после загрузки значительного объема данных
|
|||
---|---|---|---|
#18+
pals...Проблема в том, что <...> скорость работы запросов к БД к таблицам <...>, снижается в несколько ДЕСЯТКОВ раз по сравнению со случаем, когда загрузка классификаторов производилась заранее (например при предыдущем запуске приложения). Может у кого-нибудь есть мысли из-за чего может возникать такое падение производительности? Было у меня на Delphi (не на Яве!) приложение, которое сильно тормозило при первом (после перезагрузки) коннекте, при этом сервер на той же машине, что и клиент. Второй и последующий коннекты - нормально. Чем больше была база - тем дольше первый запуск. Как выяснилось, приложение при старте выполняло непотребные действия, время выполнения которых зависело от размера одной из табличек. При повторном запуске файл базы фактически уже был в кэше СУБД и ОС, и тормоза не ощущались. В данном случае лекарством стал отказ от непотребных действий приложения при старте. Но вполне работал и другой метод: вынесение сервера на другой комп, т.е., поддержание базы в "горячем" (когда данные в кэше) состоянии. Конечно, с эмбеддед версией второй метод не сработает, но остается первый: оптимизируйте работу с базой. Исследуйте код, найдите узкие места, добавьте(или уберите) индексы и т.п. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2017, 17:38 |
|
|
start [/forum/topic.php?fid=40&msg=39575404&tid=1561292]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
67ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 185ms |
0 / 0 |