Apache Ignite Query Cursor getAll очень медленно - PullRequest
0 голосов
/ 29 мая 2018

У меня есть 200 кешей, загруженных в одну область данных.Среди них у меня есть customerCache с 300K записями.Имеет много проиндексированных полей, включая номер клиента.

Когда я выполняю запрос с использованием SQLFieldsQuery в этом конкретном кэше (где условие имеет только номер клиента =?), Для запроса клиента требуется около 280мс !

При детальном анализе я обнаружил, что SQLFieldQueryCursor.getAll () потребляет 99% времени (получение экземпляра кэша и выполнение запроса завершается с интервалом от 1 нс до 1 мс).Есть ли способ настроить cursor.getAll () или любой альтернативный способ получить данные из курсора.

Дополнительная информация

Я аннотировал номер клиента с помощью @Id, поэтому предположим, что он был проиндексирован, а все запрашиваемые поля аннотированы с помощью @ QuerySqlField

CacheКонфигурация указана ниже:

dataRegionCfg.setInitialSize(8L * 1024 * 1024 * 1024);
dataRegionCfg.setMaxSize(8L1024*1024);
dataRegionCfg.setPersistenceEnabled(false);
dataStorageCfg.setDataRegionConfigurations(dataRegionCfg);
dataStorageCfg.setPageSize(4096);
customerCacheConfig = new CacheConfiguration<>("customerCache");
customerCacheConfig.setIndexedTypes(CustomerKey.class, Customer.class);
customerCacheConfig.setReadThrough(false);
customerCacheConfig.setAtomicityMode(ATOMIC);
customerCacheConfig.setCacheMode(CacheMode.LOCAL);

Мой запрос был:

select customerName,customerId from CustomerMaster where customerNumber = ?;
*1024* Пожалуйста, дайте несколько советов по улучшению производительности или дайте мне знать, если я что-то здесь упустил.

1 Ответ

0 голосов
/ 01 июня 2018

Спасибо Аламару за правильное направление.Мой jar, развернутый в узле сервера, пропустил опцию index = true.

Также ignite не ожидает индексации в классе ключей.Опять же, производительность не улучшится при увеличении числа или индексов, как H2.

...