Вычисление
В Tengri вычисление производится в виртуальных вычислительных пулах — вычислителях.
Вычислители
SQL-вычислитель — это легковесный контейнер, запускаемый на аппаратном кластере за ~100 миллисекунд.
SQL-вычислитель:
-
получает эксклюзивные ядра (vCPU) и RAM-бюджет
-
подгружает данные и выполняет SQL-запросы
-
отключается системой после некоторого периода ожидания (если простаивает без нагрузки)
За счет такой архитектуры вычислителей:
-
Каждый аналитик работает со своим SQL-вычислителем.
-
Аналитики не мешают друг другу.

Каждый аналитик в каждой сессии может выбрать размер вычислителя для SQL-запроса:
XS
/ S
/ M
/ L
/ XL
.
Каждый следующий размер вычислителя в два раза больше предыдущего.
Время выполнения теста TPC-H на вычислителях разного размера:

Код, использованный для выполнения этого теста
SELECT profit.nation AS nation,
profit.o_year AS o_year,
SUM(profit.amount) AS sum_profit
FROM (SELECT s100_nation.n_name AS nation,
EXTRACT(YEAR FROM s100_orders.o_orderdate) AS o_year,
s100_lineitem.l_extendedprice * (1 - s100_lineitem.l_discount) -
s100_partsupp.ps_supplycost * s100_lineitem.l_quantity AS amount
FROM s100_part, s100_supplier, s100_lineitem,
s100_partsupp, s100_orders, s100_nation
WHERE s100_supplier.s_suppkey = s100_lineitem.l_suppkey
AND s100_partsupp.ps_suppkey = s100_lineitem.l_suppkey
AND s100_partsupp.ps_partkey = s100_lineitem.l_partkey
AND s100_part.p_partkey = s100_lineitem.l_partkey
AND s100_orders.o_orderkey = s100_lineitem.l_orderkey
AND s100_supplier.s_nationkey = s100_nation.n_nationkey
AND s100_part.p_name LIKE '%' || 'black' || '%')
AS profit
GROUP BY profit.nation, profit.o_year ORDER BY nation, o_year
DESC NULLS FIRST LIMIT 1000;
В Tengri также поддерживаются вычислители Python.
Ускорение вычислений
Для ускорения вычислений в Tengri поддержаны:
- Morsel-driven parallelism
-
OLAP SQL-запросы работают быстрее за счет использования Morsel-алгоритмов, позволяющих загружать все vCPU, выделенные системой.
- SIMD-инструкции
-
OLAP SQL-запросы работают быстрее за счет использования SIMD-инструкций современных CPU.
-
Тесты производительности Tengri приведены в разделе Результаты тестов.
-
Подробности о работе с вычислителями можно узнать в разделе Вычислительные пулы.