Могу ли я временно приостановить процесс массовой загрузки RDF на некоторое время, а затем возобновить его работу?

В настоящее время я массово загружаю дампы данных DBpedia и Freebase в виртуозную версию с открытым исходным кодом v7, используя процедуру rdf_loader_run(). База данных находится на нашем сервере, и у меня есть еще один граф IRI в Virtuoso, работающий для онлайн-сервиса. Процесс загрузки в значительной степени влияет на скорость отклика сервиса. Могу ли я использовать rdf_loader_stop() в isql, чтобы временно приостановить потоки загрузки, и может ли он вернуться к прежнему состоянию процесса загрузки, снова запустив команду rdf_loader_run()?
Официальная вики не объясняет это хорошо.


person keepItSimple    schedule 07.09.2013    source источник


Ответы (3)


rdf_loader_stop() прекратит импорт после того, как файлы, которые импортируются прямо сейчас, будут завершены. На данный момент очередь фактически остается нетронутой. Строго говоря, он просто ставит флаг, который проверяют процессы импорта, прежде чем перейти к следующему файлу в очереди.

rdf_loader_run() продолжит со следующими файлами в очереди

person JimiDini    schedule 26.09.2013
comment
Разве команда не rdf_load_stop() вместо of rdf_loader_stop() ? - person cheseaux; 12.11.2014
comment
Я предлагал правки, но они были отклонены. - person Fontanka16; 01.03.2016

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, чтобы убедиться, что они будут обработаны.

person Fontanka16    schedule 01.03.2016

rdf_load_stop() это то, что вы ищете. Однако он просто останавливает загрузку следующего файла. Текущий файл должен закончиться первым.

По сути, он вставляет файл ##stop в таблицу db.dba.load_list, которая (я думаю) сначала проверяется, прежде чем Virtuoso обрабатывает следующий файл в таблице load_list.

person MFARID    schedule 27.10.2015