При выполнении одного и того же запроса (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.Хотя я знаю, что эта версия довольно старая, я бы предпочел придерживаться ее на данный момент, но мне нужно разобраться с этой явно зависящей от платформы проблемой производительности.Я гуглил сообщения об ошибках, но не нашел ничего связанного.