Я страдаю от производительности N1QL. У меня есть установка кластера с 3 узлами 4.1, с 6 ГБ на каждый узел и 1 набором реплик. Всего вставлено 2 миллиона документов среднего размера 100k. При выборе документа с помощью N1QL запрос имеет соединение в том же ведре, поэтому может выглядеть как его самосоединение. Я получаю данные за 21 минуту. Что ужасно. По ключе, который у меня есть, я уже создал index. Что еще мне не хватает. На мой взгляд, если ForestDB действительно работает, результат должен быть меньше секунды. Ищу ответ здесь. Однако не получил особой поддержки на форумах couchbase.
Производительность N1QL с объединением
comment
Можете ли вы сказать нам, в каком документе первичным ключом является №_, а в каком - №_ в качестве внешнего ключа? Я маскирую N и X. То есть N документов имеет No_ в качестве первичного ключа, или документы X имеют No_ в качестве первичного ключа?
- person geraldss   schedule 07.02.2016
comment
Не могли бы вы обновить свой вопрос с помощью запроса N1QL? Это может пролить свет на проблему ...
- person user1697575   schedule 08.02.2016
comment
Как написано, это не вопрос, и обсуждение этой оптимизации производительности находится здесь: forum.couchbase.com/t/perfomance-issue-with-n1ql-self-join/. Я не уверен, почему вы сказали, что не получили особой поддержки, поскольку мои коллеги из Couchbase пытаются вам помочь в этом.
- person Matt Ingenthron   schedule 10.02.2016
comment
Конечно, я перевожу это туда. В основном я оцениваю производственное использование, и производительность, которую я получал, была в минутах, даже не в секундах. Вот почему я также разместил здесь, чтобы получить поддержку и некоторые очевидные ответы от других. Похоже, я только один пытаюсь использовать N1QL.
- person siddhusingh   schedule 10.02.2016
Ответы (1)
Создайте следующий индекс и попробуйте запрос под ним.
CREATE INDEX idx_gle_type_balance2 ON NAV(No_, Balance, Type) WHERE (Type = 'GLEntry') USING GSI;
select
X.No_ AS No_,
IFNULL(Sum(X.Balance),0) as Balance
from NAV X USE INDEX (idx_gle_type_balance2)
Where X.Type = "GLEntry"
and X.Balance IS NOT MISSING
AND X.No_ IS NOT MISSING
Group by X.No_;
----- Обновление от Siddu: с новым индексом запрос выполняется примерно за 1,7 секунды.
person
Keshav Murthy
schedule
12.02.2016