Проблемы производительности при использовании H2 DB во встроенном режиме с большой загрузкой данных в базу - PullRequest
7 голосов
/ 21 марта 2012

Я работаю в Java-приложении, используя базу данных H2 во встроенном режиме.Мое приложение потребляет 150 Мб кучи памяти.

Проблема: Шаги Когда я загружаю базу данных H2 с 2 Мб данных, доступ к базе данных быстрый и размер кучи памяти 160 Мб.

Но когда я загружаю базу данных H2с 30 МБ данных (размер файла h2 дБ = 30 МБ).Тогда доступ к базе данных из моего приложения очень медленный.причина кроется в том, что размер кучи моего приложения сильно вырос до 300 МБ, а следовательно, снизилась производительность.Я подтвердил использование JConsole.

Итак, насколько я понимаю, база данных H2 разрабатывается с использованием java, и поскольку я использую базу данных H2 во встроенном режиме, размер кучи базы данных H2 добавляется в мое приложение, которое нарушает работу приложения.

Проблема заключается в увеличении размера базы данных H2, снижении производительности моего приложения.

Как решить проблему?

Я указал соединение как

 rurl = "jdbc:h2:file:/" + getDBPath() + dbname + ";CACHE_SIZE=" + (1024 * 1024) + ";PAGE_SIZE=512";

для увеличения кеша H2.

1 Ответ

8 голосов
/ 22 марта 2012

В большинстве случаев проблемы с производительностью на самом деле не связаны с размером кэша или размером страницы.Для анализа проблем с производительностью см. Документацию H2, в частности:

Если вы вручную установите размер кэша 1024 * 1024, то H2 будет использовать 1 ГБ динамической памяти.Этот параметр следует использовать только в том случае, если для виртуальной машины Java доступно более 1 ГБ физической памяти (с использованием java -Xmx2048m или аналогичной).В противном случае я предлагаю использовать настройки по умолчанию (размер кэша 16 МБ).

Использование меньшего размера страницы, чем по умолчанию, может снизить производительность.Это зависит от жесткого диска и, возможно, от схемы доступа.Тем не менее, нет списка правил, когда следует использовать размер страницы не по умолчанию - единственный способ выяснить это - попробовать другие настройки.

...