Итак, я унаследовал унаследованное приложение, работающее на 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. Есть ли способ улучшить видимость трассировки для выявления проблем при загрузке файла данных?
Заранее спасибо.