всем привет.
у нас есть вот такие примерно селекты.
SELECT
domainName,
arrayFlatten(groupUniqArray(categories)) AS categoriesArray,
arrayFlatten(groupUniqArray(categoriesRoots)) AS categoriesRootsArray,
arrayFlatten(groupUniqArray(filterType)) AS filterTypesArray,
count() AS count
FROM decisions
PREWHERE
userID = '123412341234' AND
time >= toStartOfHour(subtractMonths(now(), 1)) AND
policyID = '943075093475' AND
campusID = '321846928346' AND
dnsType IN (15, 12, 8, 5) AND
hasAny(categories, ['#1', '#4', '#8', '#3', '#2']) AND
hasAny(categoriesRoots, ['root #1'])
GROUP BY domainName
ORDER BY count DESC
LIMIT 1000;
в массивах, передаваемых в hasAny может быть и больше элементов.
стоит задача: понять, возможно ли уменьшить время выполнения таких запросов путем апгрейда серверного оборудования.
прочитал документацию (разделы про скорость и производительность), из нее понял, что вроде как на такие большие единоразовые запросы главным образом влияет т.н. disk speed (скорость диска).
однако, до конца не понял - только ли она или нет? какие хардварные элементы можно проапгрейдить, чтобы увеличить скорость?
и еще вопрос: возможно ли увеличить производительность путем разбиения кластера на большее кол-во шардов?
или мб есть еще какие-то методы увеличения производительности?
p.s. прошу прощения, если написал что-нибудь не то, я +- новичок в этой области.