2013-05-06 4 views
0

У нас есть относительно большая таблица в базе данных H2 с до 12 миллионами строк. Таблица содержит информацию о состоянии, которую пользователь должен видеть в веб-интерфейсе. Пользователя в основном интересуют только последние несколько сотен/тысяч записей или записи за последние n дней. Конечно, иногда также необходимо запросить все записи, но мы можем предположить, что это происходит редко и может занять свое время. Теперь наша основная проблема заключается в том, что у нас нет полномасштабного сервера в качестве целевой платформы, но более встроенное решение и таблицы, размер которых, встроенная система занимает пару секунд, чтобы ответить, и веб-интерфейс ui (с ajax и т. Д.) Чувствует вялый.Кэширование новейших строк с H2

Чтобы сделать запрос быстрее, мы уже добавили индексы, max_row_memory и кеширование. Это делает запрос впечатляюще быстрее, но все еще не в том диапазоне, в котором мы хотели бы быть. Как я понимаю, H2 удаляет кеш таблицы, если INSERT/UPDATE/DELETE выполняется в таблице. Большая часть приложения зависит от последних n строк, и я ищу способ всегда держать эти n-строки в кеше, так что если запрос SELECT для получения последних n строк вызывается даже после предыдущего INSERT, строки собираются из кеша. Поскольку я не нашел решения в H2 напрямую, моим первым подходом было бы реализовать кэширование как второй уровень внутри приложения. Решение было бы в порядке, но с дизайнерской точки зрения было бы более привлекательным иметь его внутри H2. У кого-нибудь есть идея, как я могу решить это с помощью H2?

+0

Вы уже просмотрели [H2 performance tips] (http://h2database.com/html/performance.html#database_profiling)? –

ответ

0

H2 не очищает кеш от модификации. Ваш лучший выбор - запустить профайлер над вашим приложением, чтобы узнать, где будет время.

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