Почему производительность H2 1.1.117 уступает Mac OS X? - PullRequest
0 голосов
/ 25 марта 2011

При выполнении одного и того же запроса (SELECT с парой INNER JOIN) для таблицы с 400-тысячными строками в Mac OS X это занимает почти в 30 раз больше времени, чем в Linux или Windows 7. Конечно, конфигурации оборудования различны,но не настолько, чтобы гарантировать такую ​​большую разницу.Мне удалось воспроизвести проблему производительности на нескольких компьютерах под управлением Mac OS X 10.6.Странно то, что я получил ожидаемую производительность один раз после того, как убил H2 в середине выполнения длинного запроса и позволил H2 восстановить базу данных при следующем запуске.Однако я не смог последовательно воспроизвести это.

Что я заметил в Mac OS X, так это то, что через пару секунд после отправки запроса загрузка процессора и диска падает почти до нуля и возвращается только назад.прямо перед возвратом результатов запроса.
На тестовых компьютерах были установлены следующие версии Java:

  • Mac OS X: среда выполнения Java (TM) SE (сборка 1.6.0_24-b07-)334-10M3326) Java HotSpot (TM) 64-разрядная серверная виртуальная машина (сборка 19.1-b02-334, смешанный режим)
  • Linux: среда выполнения Java (TM) SE (сборка 1.6.0_20-b02), Java64-разрядная серверная виртуальная машина HotSpot (TM) (сборка 16.3-b01, смешанный режим))
  • Windows: среда выполнения SE (Java) SE (сборка 1.6.0_24-b07) 64-разрядная версия Java HotSpot (TM)Виртуальная машина сервера (сборка 19.1-b02, смешанный режим)

Все компьютеры работали с H2 1.1.117.Хотя я знаю, что эта версия довольно старая, я бы предпочел придерживаться ее на данный момент, но мне нужно разобраться с этой явно зависящей от платформы проблемой производительности.Я гуглил сообщения об ошибках, но не нашел ничего связанного.

1 Ответ

1 голос
/ 25 марта 2011

Маловероятно, что это связано с операционной системой.

Если загрузка процессора и диска равна нулю, я предлагаю получить дамп полного потока (jps -l, а затем jstack -l <pid>) для поискачто делает процесс.

Вы запускали ANALYZE ?В более новых версиях H2 (1.3.x) это больше не требуется.

Если это не проблема, я предлагаю взглянуть на Настройка производительности базы данных документация.Я знаю, что многое из этого общего, но это все еще может помочь.Если проблема все еще не решена, см. Профилирование приложения и обновите вопрос с найденными результатами.

...