Я запускаю шифровальный запрос слияния Neo4j в моем Java приложении, которое выполняет слияние на узле с меткой, а также индексируемым свойством. Независимо от совпадения или создания, я устанавливаю некоторые свойства для сопоставленного или созданного узла. Запрос в среднем занимает около 4-6se c. Фрагмент кода запроса:
@Query("MERGE (u:User {userId: {userId}}) set u.lat={lat}, u.lng={lng}, u.accuracy={accuracy}, "
+ " u.brandId={brandId}, u.updatedAt={updatedAt}, u.createdAt={createdAt} "
+ " return u")
User saveUserCypher(@Param("userId") Long userId, @Param("lat") Double lat, @Param("lng") Double lng,
@Param("accuracy") Integer accuracy, @Param("brandId") Integer brandId,
@Param("updatedAt") String updatedAt, @Param("createdAt") String createdAt);
- Версия сервера Neo4j: 3.3.2 (Community Edition)
- Автономный компьютер
- Конфигурация серверного оборудования: 72vCPU 144GB RAM (в основном с использованием экземпляра c5d.18xlarge AWS EC2 для размещения сервера neo4j)
Я уже пробовал использовать функцию сохранения Spring Data Neo4j, и это занимает еще больше времени, поэтому я вернулся к написанию шифра. Я также увеличил размер кеш-памяти сервера до 60 г. Ожидается ли такое большое время запроса? Я надеялся, что запрос будет выполнен за секунду. Подскажите, пожалуйста, какие оптимизации / улучшения можно сделать?
Заранее спасибо. Редактировать 1 : Добавлен профиль запроса