2013-05-14 1 views
1

Я кодирую приложение для Android, которому нужна база данных. Я не буду использовать sqlite, потому что я хочу чистое ядро ​​Java без каких-либо зависимостей от библиотеки андроидов. Чтобы упростить доступ к базе данных, я использую ORMLite.Проблемы с использованием базы данных H2 с OrmLite на Android

Так что я только что сравнил ORMLite android examples HelloAndroid и HelloAndroidH2. Я уменьшил функциональность обоих примеров для чтения операций. Таблицы тестов (2 colums, primary_key; value) содержат 2 набора данных.

Результат:

  • SQLite: результаты сразу появляется
  • H2: требуется около двух секунд, чтобы загрузить результаты.

Где ошибка или она правильная? Действительно ли h2 действительно требуется такое долгое время для загрузки двух небольших наборов данных? Любой другой опыт?

+0

Ах, извините, открытие и закрытие соединений требует такого долгого времени! O_o Но это очень быстро! – user2379652

+0

Могу я спросить _why_ вы не хотите «зависимостей от библиотеки андроидов»? Вы работаете на Android, так что это совершенно невозможно. – Gray

+0

@Gray Я не хочу никаких зависимостей, потому что проект - это своего рода проект библиотеки, который должен поддерживать разные поверхности (приложение, сеть, свинг). – user2379652

ответ

1

Открытие базы данных H2 с использованием параметров по умолчанию относительно медленное на Android, as documented. Есть несколько способов, чтобы улучшить, что большинство из них является documented in the Android section of H2:

  • file_lock = FS (использовать родную блокировку файла, сохраняют не менее 20 мс)
  • PAGE_SIZE = 1024 (с использованием меньшего размера страницы кажется для повышения производительности здесь)
  • CACHE_SIZE = 8192 (чтобы избежать слишком много памяти кучи для кэша)

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

Но в любом случае, я думаю, вы не сможете получить такую ​​же скорость открытия, как SQLite в ближайшем будущем, извините.

Смежные вопросы