Сложность удаления Virtuoso Large RDF Graph

Я использую Virtuoso. Он установлен на серверной машине. Я пытаюсь удалить большой граф RDF из моего Virtuoso. Он содержит 2 590 994 053 тройки. Я пытался удалить график с помощью следующей команды.

SPARQL DROP SILENT GRAPH <http://ndssl.bi.vt.edu/chicago/>

Однако после долгой работы Virtuoso выдает следующую ошибку.

*** Error 08S01: [Virtuoso Driver]CL065: Lost connection to server at line 6 of Top-Level:SPARQL DROP SILENT GRAPH <http://ndssl.bi.vt.edu/chicago/>

Эта команда удаления также отключила мой сервер Virtuoso. Я также пытаюсь использовать команду SPARQL CLEAR. После долгой работы он также завершается.

Кстати, я увеличил объем памяти до 128 ГБ и установил следующие значения конфигурации. Однако это не работает.

NumberOfBuffers          = 10900000
MaxDirtyBuffers          = 8000000
MaxCheckpointRemap       = 650000000

Пожалуйста, дайте мне знать, как я могу удалить этот большой график из моего тройного магазина Virtuoso. У меня есть и другие графики в Virtuoso. Я не хочу их удалять.


person Beautiful Mind    schedule 29.05.2016    source источник
comment
Пожалуйста, задайте такой вопрос по конкретному инструменту в списке рассылки Virtuoso.   -  person UninformedUser    schedule 29.05.2016
comment
Как предлагает @AKSW, вопросы, касающиеся Virtuoso, лучше всего задавать в списке рассылки пользователей Virtuoso. или на форумах поддержки OpenLink. (Отказ от ответственности: я работаю на OpenLink Software, производителя Virtuoso.) Обратите внимание на соответствующие документы: Как удалить из Virtuoso Quad Store графики, содержащие большое количество троек?   -  person TallTed    schedule 06.06.2016


Ответы (1)


Как описано в разделе , как удалить графики, содержащие большое количество троек, из Virtuoso Quad. Магазин? --

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

Такие большие графы можно очистить, изменив режим журнала транзакций на autocommit перед удалением графов или троек. Это легко сделать с помощью функции Virtuoso log_enable() с настройками log_enable(3,1).

Эта функция может быть вызвана сама по себе, до операции удаления, через iSQL (либо из командной строки, либо в варианте Conductor), как показано ниже:

SQL> log_enable(3,1);
SQL> SPARQL CLEAR GRAPH <graph-name>;

log_enable() также может вызываться как прагма, указанная в запросе SPARQL/Update (примечание: этот запрос написан для выполнения через интерфейс SPARQL; если выполняется через интерфейс SQL, вы должны добавить ключевое слово SPARQL):

DEFINE sql:log-enable 3
CLEAR GRAPH <graph-name>

Тройки также можно удалить непосредственно из таблицы RDF_QUAD с помощью SQL, но обратите внимание, что этот метод не удалит любые данные индекса произвольного текста, которые могут быть связаны с графом, что CLEAR GRAPH ... сделает автоматически. Операция SQL будет выглядеть примерно так:

SQL> log_enable(3,1);
SQL> DELETE FROM rdf_quad WHERE g = iri_to_id ('http://mygraph.org');

person TallTed    schedule 09.09.2016
comment
Как можно узнать, сколько времени занимает эта процедура? Попробовав это, утилита командной строки isql теперь не отвечает в течение нескольких часов. - person Hubert Schumacher; 11.11.2018
comment
@HubertSchumacher - Время, которое потребуется, зависит от многих факторов. Я бы посоветовал вам поднять ваш конкретный вопрос в пространстве сообщества OpenLink, список рассылки пользователей Virtuoso, ошибка в проекте Github или Запрос в службу поддержки (при использовании Enterprise Edition)... - person TallTed; 12.11.2018