В чем причина получения OOM при открытии сотен TEXT-таблиц с использованием HSQLDB CREATE TEXT TABLE - PullRequest
0 голосов
/ 13 ноября 2010

Запуск с -Xmx1024m, попытка открыть 100 файлов CSV как CREATE TEXT TABLE, SET TABLE SOURCE.Где-то в середине, получая ООМ.Пытался уменьшить cache_scale до 1. Работает лучше, но все же OOM в какой-то момент.В чем причина?

Я обнаружил, что память активно используется для выделения множества org.hsqldb.PointerNode экземпляров.Есть ли основания этого избегать?

1 Ответ

1 голос
/ 13 ноября 2010

TEXT-таблицы - это специальные таблицы, которые используют CSV (значение, разделенное запятыми) или аналогичный файл в качестве источника данных. Эти таблицы могут использоваться как любая таблица SQL как для запроса, так и для записи данных.

Хотя данные хранятся в файле CSV, индексы и указатели на строки данных хранятся в памяти. По умолчанию в каждой таблице есть один индекс, который также поддерживает PRIMARY KEY таблицы, если он есть. Ограничения UNIQUE или FOREIGN KEY для этих таблиц поддерживаются индексами в памяти.

cache_scale (с HSQLDB 1.8.x) используется для контроля количества данных строк, которые кэшируются в памяти в любое время. Меньшее значение уменьшает объем памяти, используемой для кэширования данных, но не меняет объем памяти, необходимый для индексов.

...