Можно ли временно приостановить процесс массовой загрузки RDF, а затем восстановить его для обработки?
В настоящее время я выполняю массовую загрузку дампов данных DBpedia и Freebase в виртуальную открытую версию v7, используя процедуру rdf_loader_run(). База данных находится на нашем сервере, и у меня есть еще один график IRI в Virtuoso, запущенный для онлайн-сервиса. Процесс загрузки в значительной степени влияет на скорость отклика сервиса. Могу ли я использовать rdf_loader_stop() в isql, чтобы временно приостановить загрузку потоков, и способен ли он вернуться к прежнему состоянию загрузки, снова запустив команду rdf_loader_run()?
Официальная вики плохо объясняет это.
3 ответа
rdf_loader_stop()
прекратит импорт после завершения импорта файлов На этом этапе очередь фактически остается нетронутой. Строго говоря, он просто устанавливает флаг, который проверяет процесс импорта, прежде чем перейти к следующему файлу в очереди.
rdf_loader_run()
продолжит со следующими файлами в очереди
rdf_load_stop()
прекратит импорт, и вы можете перезапустить его в любое время, запустив rdf_loader_run()
снова.
Если вам нужен грубый форс, введите txn_killall(1)
,
Вы можете проверить статус вашего импорта, открыв новое окно isql и набрав следующий запрос: SELECT ll_state, COUNT(ll_state) FROM load_list GROUP BY ll_state
ll_state = 0:
файлы еще не обработаныll_state = 1:
файлы, которые в настоящее время обрабатываютсяll_state = 2:
файлы, которые завершены
Если вы сделали грубую остановку, вам придется снова изменить строки ll_state=1 на ll_state=0, чтобы убедиться, что они будут обработаны.
rdf_load_stop()
это то, что вы ищете. Тем не менее, он просто останавливает загрузку следующего файла. Текущий файл должен закончиться первым.
Это в основном вставляет ##stop
файл в db.dba.load_list
таблица, которая (я полагаю) проверяется первой перед тем, как Virtuoso обработает следующий файл в load_list