HSQLDB перестал обновлять большую БД с 1.8 до 2.4.1 - PullRequest
0 голосов
/ 09 ноября 2018

Итак, я унаследовал унаследованное приложение, работающее на HSQLDB 1.8.0.10 , в котором иногда возникали проблемы с восстановлением после потери питания. Со всеми улучшениями стабильности и настойчивости за последние 10 лет я планирую обновить его до последней 2.4.1 .

У меня есть несколько баз данных для тестирования. От нескольких КБ до самых больших размером 2 ГБ .

Обслуживание второй по величине БД, которая находится на 270MB (к сожалению, почти одна десятая следующего размера) не представляло проблем; Однако запуск сервера в файле 2GB привел к тому, что HSQL просто сидел, пытаясь загрузить файл.

Это не проблема v1.8, которая благополучно началась за считанные секунды. На v2.4 я ждал до 10 минут и сдавался (даже если он работал через 10 м, все равно в значительной степени недопустимо, чтобы сервер так долго запускался).

Я попытался включить трассировку:

HsqlProperties p = new HsqlProperties();
p.setProperty("server.database.0", "db/TheDb");
p.setProperty("server.dbname.0", "TheDb");
p.setProperty("server.port", port);
p.setProperty("server.silent", "false");
p.setProperty("server.trace", "true");
Server server = new Server();
server.setProperties(p);
server.start();

В результате получается следующее:

: run() entered
  ...
: server.root=.
: openServerSocket() entered
: Got server socket: ServerSocket[addr=0.0.0.0/0.0.0.0,localport=37011]
: Server socket opened successfully in 6 ms.
: openServerSocket() exiting
: openDatabases() entered
: Opening database: [file:db/TheDb]
// Stuck here forever

БД состоит из следующих файлов:

$ ls
 417028772  TheDb.backup
2147483608  TheDb.data
    430165  TheDb.log
       444  TheDb.properties
    196938  TheDb.script

И файл .properties в настоящее время выглядит следующим образом:

#HSQL Database Engine 1.8.0.10
hsqldb.script_format=0
runtime.gc_interval=0
sql.enforce_strict_size=false
hsqldb.cache_size_scale=8
readonly=false
hsqldb.nio_data_file=true
hsqldb.cache_scale=14
version=1.8.0
hsqldb.default_table_type=cached
hsqldb.cache_file_scale=1
hsqldb.log_size=200
modified=no
hsqldb.cache_version=1.7.0
hsqldb.original_version=1.8.0
hsqldb.defrag_limit=50
hsqldb.compatible_version=1.8.0

Не заданы свойства в файле .script. (с другими успешно обновленными БД я заметил, что реквизиты в основном перемещаются из .properties в .script)

Мне было интересно, совершал ли кто-либо еще подобное умение и / или видел подобное поведение с большими файлами pre-v2. Есть ли способ улучшить видимость трассировки для выявления проблем при загрузке файла данных?

Заранее спасибо.

1 Ответ

0 голосов
/ 09 ноября 2018

Рекомендуется выполнить SHUTDOWN SCRIPT с версией 1.8 перед открытием базы данных с версией 2.x ядра базы данных. Файл данных регенерируется в формате версии 2.x с помощью этого метода. Это займет много времени, но будущие стартапы будут быстрыми.

...