powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Низкая скорость выполнения запросов после загрузки значительного объема данных
25 сообщений из 35, страница 1 из 2
Низкая скорость выполнения запросов после загрузки значительного объема данных
    #39574798
pals
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Есть приложение написанное на Java 7, которое использует через JDBC (Jaybird 2.2) Firebird 2.5 в качестве БД в режиме Embedded Server. Приложение выполняет разбор и анализ реестров на основе классификаторов. Эти классификаторы имеют объем порядка 25 млн записей. Приложение при запуске проверяет наличие данных в классификаторах и если они отсутствуют, то перед началом разбора реестров происходит загрузка классификаторов с фиксацией через каждые 3000 записей.

Есть контрольный реестр для разбора и анализа с использованием этих классификаторов. Проблема в том, что если разбор и анализ реестра производился в рамках той же JVM (загрузка классификаторов в отдельном коннекте/ах к БД не изменяют картины), в которой происходила загрузка классификаторов, то при анализе реестров скорость работы запросов к БД к таблицам, хранящим данные классификаторов, снижается в несколько ДЕСЯТКОВ раз по сравнению со случаем, когда загрузка классификаторов производилась заранее (например при предыдущем запуске приложения).

Может у кого-нибудь есть мысли из-за чего может возникать такое падение производительности?
...
Рейтинг: 0 / 0
Низкая скорость выполнения запросов после загрузки значительного объема данных
    #39574802
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pals,

для начала Embedded Server работает в не сколько раз медленнее обычного. Во-вторых режим Embedded не родной для Java
...
Рейтинг: 0 / 0
Низкая скорость выполнения запросов после загрузки значительного объема данных
    #39574810
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
palsМожет у кого-нибудь есть мысли из-за чего может возникать такое падение производительности?Если действительно для нормаьлной производительности требуется рестарт приложения, то
- Firebird вряд ли тут "виноват"
- возможно проблемы (с памятью ?) у JVM после анализа реестров ?

Для того, чтобы окончательно исключить Firebird (или подтвердить его "вину") я бы снял трейс запросов
(с планами и счётчиками производительности) в обоих вариантах.
...
Рейтинг: 0 / 0
Низкая скорость выполнения запросов после загрузки значительного объема данных
    #39574811
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисpals,

для начала Embedded Server работает в не сколько раз медленнее обычного. Во-вторых режим Embedded не родной для JavaОба утверждения весьма спорны, на грани глупости. Не ожидал от тебя...
...
Рейтинг: 0 / 0
Низкая скорость выполнения запросов после загрузки значительного объема данных
    #39574812
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pals,

Вдогонку:
первое что сразу приходит в голову - отсутствие статистики у индексов после загрузки классификаторов и кривые планы последующих запросов.
Но, если действительно рестарт приложения после загрузки решает проблему, то планы тут не при чём.
...
Рейтинг: 0 / 0
Низкая скорость выполнения запросов после загрузки значительного объема данных
    #39574814
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
palsМожет у кого-нибудь есть мысли из-за чего может возникать такое падение производительности?

Это Ява. Следовательно - сборка мусора.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Низкая скорость выполнения запросов после загрузки значительного объема данных
    #39574815
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

первый мой вывод основан вот на этом http://www.sql.ru/forum/697278-1/fetch-v-embedded-v-razy-medlenney-chem-v-ss
Может оно уже и не так.

Про второе я возможно загнул.
...
Рейтинг: 0 / 0
Низкая скорость выполнения запросов после загрузки значительного объема данных
    #39574817
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Дениспервый мой вывод основан вот на этом http://www.sql.ru/forum/697278-1/fetch-v-embedded-v-razy-medlenney-chem-v-ss С чего ты взял, что у автора проблемы с фетчем ?
Зачем делать такие обобщения, да ещё и со 100% уверенностью ?
Тут уже есть один такой "обобщатель", не уподобляйся, плс

Симонов ДенисПро второе я возможно загнул.Второе - вообще ни о чём
...
Рейтинг: 0 / 0
Низкая скорость выполнения запросов после загрузки значительного объема данных
    #39574821
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Дениспервый мой вывод основан вот на этом http://www.sql.ru/forum/697278-1/fetch-v-embedded-v-razy-medlenney-chem-v-ss Кстати, там тоже не всё прямолинейно, смотри реальные результаты вот тут 7822271 и дальше.
...
Рейтинг: 0 / 0
Низкая скорость выполнения запросов после загрузки значительного объема данных
    #39574882
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

собственно, влезу. У Java или .Net (пока не очень понятно, может и у обоих) есть такая фигня, что оно оставляет препарированные запросы незакрытыми, в результате чего может накопиться под сотню тысяч запросов (с нулевыми транзакциями) в mon$statements при 5-7 активных коннектах.
Полагаю, что если для мощного сервера это не так напряжно, то для embedded это будет кабздец, как и для mon$ даже на крутом сервере - там снимок с mon$ делается десять минут .

Рекомендую обратить внимание на эту хрень всем, кто использует коннекты из java и .net. Если начнете в этом случае обращаться к mon$ - вам (вашей системе) капец. Что 2.5, что 3.0 - пофиг, эффект один и тот же.
...
Рейтинг: 0 / 0
Низкая скорость выполнения запросов после загрузки значительного объема данных
    #39574885
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это от кода зависит, а не от .Net.
Если правильно писать - ничего не копится
и запросы не остаются незакрытыми.
Ну а если руки оттуда растут - то и Delphi
с С++ не спасут.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Низкая скорость выполнения запросов после загрузки значительного объема данных
    #39575292
pals
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladЕсли действительно для нормальной производительности требуется рестарт приложения, то
- возможно проблемы (с памятью ?) у JVM после анализа реестров ?
Мониторинг и анализ Heap Space не показывают рост использования памяти или большого количества каких-то не базовых java-классов. Загрузка классификатора (25 млн строк) идет около 45 минут и если бы была утечка памяти (или незакрытые препарированные запросы), то мы скорее всего смогли бы зафиксировать это.

Есть еще один момент о котором я не упомянул в своем первом посте. В момент загрузки классификаторов мы удаляем индексы и после окончания загрузки их заново создаем. Но при повторном запуске приложение анализирует наличие данных в классификаторе и повторно не загружает данные и соответственно не пересоздает индексы. Может у FB (или JDBC-драйвера) переполняются какие-то внутренние структуры, что мешает после только что выполненного создания индекса их правильно использовать (наличие статистики или еще что-то)?
...
Рейтинг: 0 / 0
Низкая скорость выполнения запросов после загрузки значительного объема данных
    #39575305
pals
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И еще один уточняющий момент

hvladСимонов Дениспервый мой вывод основан вот на этом http://www.sql.ru/forum/697278-1/fetch-v-embedded-v-razy-medlenney-chem-v-ss С чего ты взял, что у автора проблемы с фетчем ?


Проблем с fetch на мой взгляд быть не должно потому, что ResultSet почти у всех запросов составляет не более 2-3 записей. И основная задержка именно при выполнении запроса (excecuteQuery), а не при fetch
...
Рейтинг: 0 / 0
Низкая скорость выполнения запросов после загрузки значительного объема данных
    #39575306
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pals,

вытащи SQL запрос и выполни его отдельно в IBE или isql. Посмотри время выполнения. Проанализируй план запроса, возможно не хватает индексов. Есть ли BLOB поля?
...
Рейтинг: 0 / 0
Низкая скорость выполнения запросов после загрузки значительного объема данных
    #39575310
pals
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovpalsМожет у кого-нибудь есть мысли из-за чего может возникать такое падение производительности?

Это Ява. Следовательно - сборка мусора.


А что именно в сборке мусора может быть не так? На что вы предлагаете обратить внмание? Профилирование JVM не показывает ни утечек памяти ни увеличения времени запуска GC ни учащения запуска GC.
...
Рейтинг: 0 / 0
Низкая скорость выполнения запросов после загрузки значительного объема данных
    #39575363
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
palsА что именно в сборке мусора может быть не так?

Она просто не может не запуститься после того, как по памяти прогонят 25 миллионов объектов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Низкая скорость выполнения запросов после загрузки значительного объема данных
    #39575368
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovОна просто не может не запуститься после того, как по памяти прогонят 25 миллионов объектов.И? Типа, солнечно-пророческие идиоты вообще не в курсе, что сборка мусора - важная часть JVM?
...
Рейтинг: 0 / 0
Низкая скорость выполнения запросов после загрузки значительного объема данных
    #39575372
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovТипа, солнечно-пророческие идиоты вообще не в курсе, что сборка мусора - важная часть JVM?

По моим наблюдениям за Ява- и дотнет-программистами - это среди них весьма
распространённое явление.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Низкая скорость выполнения запросов после загрузки значительного объема данных
    #39575380
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дык, Джеймс Гослинг (James Gosling) ушел из-под Оракула.
к чему это приведёт, можем посмотреть на примере Андерса Хейлсберга.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Низкая скорость выполнения запросов после загрузки значительного объема данных
    #39575384
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovПо моим наблюдениям за Ява- и дотнет-программистами - это среди них весьма распространённое явление.Хорошо, я переведу.
"Есть приложение (Java7, JDBC) и embedded FB2.5. Если сделать первичную загрузку и начать делать инкрементальные - медленно. Если сделать первичную загрузку, завершить приложение, затем снова запустить для инкрементальных загрузок - нормально."
Пипец как много информации, но вместо того, чтобы отфутболить на "планы и мониторинг в FB" и на "профилирование JVM" - начинаются общечеловеческие рассуждения о сборке мусора, незакрытых курсорах и т.п. тряхомудии.
Я бы даже понял простое "воспроизведи с отдельным FB-сервером, а потом думай дальше".
...
Рейтинг: 0 / 0
Низкая скорость выполнения запросов после загрузки значительного объема данных
    #39575390
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий, я у же говорил что ты зануда?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Низкая скорость выполнения запросов после загрузки значительного объема данных
    #39575394
pals
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovpalsА что именно в сборке мусора может быть не так?

Она просто не может не запуститься после того, как по памяти прогонят 25 миллионов объектов.


Конечно GC запускается за время загрузки. Размер кучи установлен достаточно большой (1ГБ). Точное количество запусков Eden GC и Full GC я могу привести тоже, но не думаю, что это поможет в поиске проблемы.

Мне кажется, что проблема либо на стороне FB, либо на стороне JDBC-драйвера. Как я уже говорил после загрузки данных мы заново создаем индексы (ранее удаленные перед началом загрузки). Возможно FB не успевает собрать статистику или заполнить какие-то свои внутренние структуры для полноценного использования индексов, а может есть какие-то особенности работы FB с индексами в режиме Embedded Server?
...
Рейтинг: 0 / 0
Низкая скорость выполнения запросов после загрузки значительного объема данных
    #39575396
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МимопроходящийВасилий, я у же говорил что ты зануда?И? Это как нивелирует обоснованность моих претензий?
...
Рейтинг: 0 / 0
Низкая скорость выполнения запросов после загрузки значительного объема данных
    #39575399
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
palsМне кажется, что проблема либо на стороне FB, либо на стороне JDBC-драйвера.

И вот тут-то Вам пригодится совет Сидорова "воспроизведи с отдельным FB-сервером, а потом
думай дальше".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Низкая скорость выполнения запросов после загрузки значительного объема данных
    #39575401
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
palsособенности работы FB с индексами в режиме Embedded Server?

нет никаких особенностей. Единственное, что embedded скорее всего в режиме classic (super classic), следовательно страничный кеш не очень большой, но файловый кеш должен по идее компенсировать этот недостаток в какой-то мере
...
Рейтинг: 0 / 0
25 сообщений из 35, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Низкая скорость выполнения запросов после загрузки значительного объема данных
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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