Правила оценки стоимости запросов к YDB через специализированные API
ReadTable
Операция ReadTable позволяет эффективно вычитывать большие диапазоны данных таблицы. Стоимость запроса зависит только от объема прочитанных данных и составляет 128 RU за 1 МБ. При расчете стоимости объем округляется в большую сторону до значения, кратного 1 МБ.
BulkUpsert
BulkUpsert позволяет эффективно загружать данные в базу. Стоимость записи строки в рамках операции BulkUpsert составляет 0,5 RU за 1 КБ записанных данных. При расчете стоимости объем данных округляется в большую сторону до значения, кратного 1 КБ. Итоговая стоимость операции рассчитывается как сумма стоимости всех записанных строк с округлением до ближайшего большего целого.
Пример расчета стоимости
Например, в рамках операции BulkUpsert вы записываете четыре строки данных объемом 2500 байт, 100 байт, 1200 байт и 1024 байта.
Стоимость такой операции составит:
0,5 RU × 3 + 0,5 RU × 1 + 0,5 RU × 2 + 0,5 RU × 1 = 3,5 RU
Итого, после округления в большую сторону: 4 RU
Где:
- 0,5 — стоимость в единицах запросов за 1 КБ записанных данных.
- 3 — объем первой строки в КБ после округления в большую сторону (2500 байт = 1024 байта + 1024 байта + 452 байта).
- 1 — объем второй строки в КБ после округления в большую сторону.
- 2 — объем третьей строки в КБ после округления в большую сторону (1200 байт = 1024 байта + 176 байт).
- 1 — объем четвертой строки в КБ.
Построение вторичного или векторного индекса
Стоимость построения индекса учитывает суммарную стоимость следующих операций:
- операций ввода-вывода (IO), стоимости которых складываются:
- чтения данных из индексируемой и промежуточных таблиц —
ReadTable; - записи данных в индексные и промежуточные таблицы —
BulkUpsert;
- чтения данных из индексируемой и промежуточных таблиц —
- для векторных индексов дополнительно отдельно учитывается потребление вычислительных ресурсов CPU.
Процесс построения индекса может быть отменен пользователем; в таком случае стоимость определяется по фактически обработанному объему данных и использованным ресурсам до отмены операции.
Построение вторичного индекса
Для вторичного индекса стоимость определяется как сумма стоимостей операций чтения из индексируемой таблицы и записи в индексную таблицу.
Построение векторного индекса
Для векторного индекса дополнительно учитываются особенности построения и повышенное потребление вычислительных ресурсов.
Для векторного индекса типа vector_kmeans_tree
- Суммарный объем прочитанных данных составляет порядка от объема индексируемой таблицы (
levels— число уровней дерева индекса). - Суммарный объем записанных данных составляет порядка от объема индексируемой таблицы.
- Потребление вычислительных ресурсов учитывает все время использования CPU на всех этапах построения индекса.
Итоговая стоимость определяется следующим образом: считается сумма стоимостей операций чтения и записи данных (IO), отдельно рассчитывается стоимость потребления CPU, и финальной стоимостью построения индекса считается максимум из этих двух значений.