sql-запрос выполняется медленно при записи данных кэша в кластер apache ignite

#java #sql #ignite

#java #sql #ignite

Вопрос:

Тест на apache ignite 2.7.0 и 2.3.0, если данные кэша не записываются, sql-запрос выполняется быстро, но когда я записываю данные, sql-запрос становится медленным, почему?

И как ускорить sql-запрос при записи данных в кэш apache ignite? Или как разделить чтение и запись кэша в apache ignite?

Определите объект кэша ABData, как показано ниже, и загрузите 3000 ABDATA с помощью Streamer.добавьте метод 10 раз. Каждый раз после того, как мы уже загрузили все ABData (предположим, через 10 минут, это означает, что 3000 ABDATA были добавлены в ignite cache), запускаем SqlFieldQuery(‘select * from ABData’), все ABDATA возвращаются в течение 5 миллисекунд. Но каждый раз, когда 3000 ABDATA все еще загружаются (например, каждый раз перед загрузкой ABData мы запускаем другой поток для запроса ABData с помощью SqlFieldQuery), запускаем SqlFieldQuery(‘select * from ABData’), все ABDATA возвращаются через 100 миллисекунд.

 public class ABData {

    @QuerySqlField(index = true)
    private String code;

    @QuerySqlField(index = false)
    private String configData;

    @QuerySqlField(index = false)
    private Integer categoryID;

}
  

Комментарии:

1. К сожалению, трудно ответить, не понимая ваших запросов или рабочей нагрузки.

2. Я обновил вопрос, посмотрим, может ли это помочь вам понять.

Ответ №1:

Трудно сказать, что здесь происходит. Я предлагаю вам отладить эту проблему, взяв, например, трассировки стека и попытавшись выяснить, на что тратится время / где происходит блокировка.

Тогда в вашем сценарии могут возникнуть некоторые проблемы, такие как создание недолговечных серверных узлов для выполнения потоковой передачи данных. Они будут запускать перебалансировку, когда они приходят или уходят.