Инструмент loadrdf Graphdb загружает онтологию и данные очень медленно
Я использую инструмент GraphDB loadrdf для загрузки онтологии и довольно больших данных. Я установил pool.buffer.size=800000 и jvm -Xmx на 24g. Я пробовал как параллельный, так и последовательный режимы. Они оба замедляются после того, как общие итоги репо превышают 10 тыс. Это в конечном итоге замедляется до 1 или 2 операторов в секунду. Кто-нибудь знает, является ли это нормальным поведением loadrdf или есть способ оптимизировать производительность?
Изменить Я увеличил Tuple-индекс-памяти. Смотрите часть моей конфигурации репо ttl:
owlim:entity-index-size "45333" ;
owlim:cache-memory "24g" ;
owlim:tuple-index-memory "20g" ;
owlim:enable-context-index "false" ;
owlim:enablePredicateList "false" ;
owlim:predicate-memory "0" ;
owlim:fts-memory "0" ;
owlim:ftsIndexPolicy "never" ;
owlim:ftsLiteralsOnly "true" ;
owlim:in-memory-literal-properties "false" ;
owlim:transaction-mode "safe" ;
owlim:transaction-isolation "true" ;
owlim:disable-sameAs "true";
Но как-то процесс все равно замедляется. Начинается с "Глобальная средняя скорость: 1 402 ст / с". Но замедляется до "Глобальной средней ставки: 20 st/s" после "Заявлений в репо: 61 831". Я даю свой JVM: -Xms24g -Xmx36g
2 ответа
Можете ли вы опубликовать конфигурацию вашего хранилища? Внутри него есть параметр tuple-index-memory - он будет определять количество изменений (страниц диска), которые нам разрешено хранить в памяти. Чем больше это значение, тем меньшее количество сбросов мы собираемся сделать.
Проверьте, не установлено ли это значение, как 20G, и повторите процесс еще раз.
Я смотрел на вас конфигурации хранилища TTL. Есть такой параметр: entity-index-size = 45333, значение которого необходимо увеличить, например, установить его на 100 миллионов (entity-index-size=100000000). Значение по умолчанию для этого параметра в GraphDB 7 составляет 10 МБ, но, поскольку вы установили его явно, оно переопределяется.
Вы можете прочитать больше об этом параметре здесь