Top.Mail.Ru

Уплотнение данных в StarRocks в архитектуре с общим доступом к данным

Уплотнение данных повышает эффективность и производительность хранилища, в том числе при использовании StarRocks. Уплотнение не ограничивается объединением небольших файлов в крупные, освобождением пространства и оптимизацией структуры данных для быстрого чтения и записи. Чтобы получить больше преимуществ, узнайте, как работает уплотнение и как оно влияет на StarRocks.

В этой статье вы рассмотрим, как уплотнение в архитектурах с общим доступом к данным помогает оптимизировать работу со StarRocks, и дадим простые советы по реализации уплотнения данных в вашей среде.

Что дает уплотнение данных

Рассмотрим пример, демонстрирующий пользу уплотнения данных. Если вы уже эксперт в этой области, перейдите к следующему разделу:

На схеме ниже после уплотнения файлов версий 1 и 2 удаляются устаревшие данные из версии 1 (id = 2, value = 11, id = 5, value = 30), что приводит к созданию нового файла данных версии 3.

Рис. 1. Пример уплотнения

Уплотнение дает несколько преимуществ:

  • Повышение производительности запросов. При записи в базу данных или озеро данных со временем данные фрагментируются, разделяясь по множеству файлов или сегментов. Путем уплотнения эти фрагменты объединяются в более крупные и цельные блоки, что позволяет сократить количество операций ввода-вывода при чтении данных и тем самым ускорить выполнение запросов. Кроме того, уплотнение влияет на выполнение операции order by. После уплотнения все данные объединяются в заданном порядке, поэтому их не приходится сортировать при поиске.
  • Освобождение пространства. StarRocks использует LSM-деревья, и при частых операциях записи в разных сегментах накапливаются удаленные и устаревшие данные. Уплотнение удаляет ненужные данные, освобождая место.
  • Предотвращение роста числа файлов. При постоянной записи данных быстро растет число мелких файлов. При уплотнении они объединяются в более крупные, что упрощает работу с метаданными и экономит память.

Функция уплотнения встроена в StarRocks. В архитектуре без разделения ресурсов (Shared-Nothing) она реализовано как набор потоков на бэкенде, которые выполняются периодически согласно политике уплотнения. В архитектуре с общим доступом к данным StarRocks оптимизирует работу: фронтенд управляет планированием задач, а бэкенд отвечает за их исполнение. Благодаря такому гибкому разделению можно поручить уплотнение группе вычислительных узлов, чтобы оно выполнялось независимо от пользовательских рабочих нагрузок и не препятствовало им.

Как работает уплотнение в StarRocks

Рассмотрев принципы уплотнения в общих чертах, давайте узнаем, как оно работает в StarRocks.

Управление версиями

Процесс уплотнения похож на операцию импорта, при которой каждый раз на стороне фронтенда создается новая версия, маркируемая в партиции. После завершения импорта последовательно увеличивается номер видимой версии данных в партиции.

Партиция может содержать несколько бакетов, или tablet (см. раздел о распределении данных) с единым номером версии данных. Даже если операция импорта затрагивает только часть бакетов, после подтверждения транзакции версия синхронно обновляется во всех бакетах в партиции.

Рис 2. Управление версиями при уплотнении

Например, на схеме выше партиция X содержит бакеты от 1 до N, а текущая видимая версия имеет номер 12. После подтверждения новой транзакции импорта номер видимой версии в партиции X обновляется до 13.

Архитектура

В архитектуре с общим доступом к данным за уплотнение отвечают два процесса: планировщик и исполнитель. Планировщик запускает задания уплотнения через удаленный вызов процедуры, а исполнитель выполняет их.

В качестве планировщика выступает фронтенд-узел, а бэкенд-узлы и вычислительные узлы выполняют уплотнение. У каждого исполнителя есть пул потоков для заданий уплотнения.

Рис. 3. Фронтенд-узел и вычислительные узлы для уплотнения в StarRocks

Планирование уплотнения

На фронтенде периодически запускается поток планировщика уплотнения, отвечающий за планирование всех соответствующих задач. В качестве базовой единицы для планирования используется партиция.

Для каждой партиции фронтенд хранит информацию о коэффициенте уплотнения, по которому определяется приоритет уплотнения для всех бакетов внутри партиции: чем выше коэффициент, тем больше необходимость в консолидации данных в партиции.

При каждом запуске своего потока планировщик уплотнения выбирает партиции с наибольшим коэффициентом и планирует задачи по уплотнению. Планировщик также контролирует максимальное количество задач, выполняемых за один цикл.

Логика планирования задач проста: планировщик получает информацию обо всех бакетах в партиции и планирует задачу уплотнения для каждого вычислительного узла. Задача содержит список бакетов, для которых конкретный вычислительный узел должен выполнить уплотнение.

Схематичное описание процесса:

Рис. 4

Рис. 4. Процесс планирования уплотнения

На схеме выше необходимо выполнить уплотнение в двух партициях: X и Y. Партиция X содержит 4 бакета (1–4), а партиция Y — 3 (5–7).

Планировщик составляет следующий план:

  • Для партиции X: бакет 2 и бакет 4 находятся на вычислительном узле 1, а бакет 1 и бакет 3 — на вычислительном узле 2. Соответственно, для партиции X создается две задачи уплотнения: задача 1 включает бакеты 2 и 4, а задача 2 — бакеты 1 и 3.
  • Для партиции Y: бакет 5 и бакет 7 находятся на вычислительном узле 1, а бакет 6 — на вычислительном узле 2. Соответственно, для партиции Y создается две задачи уплотнения: задача 3 включает бакеты 5 и 7, а задача 4 — бакет 6.

Каждая задача затем отправляется на свой вычислительный узел.

MVCC и переработка данных

В StarRocks для хранения и вычислений используется модель MVCC. Структура хранения приводится на схеме:

Рис. 5. Пример структуры хранения

Выполняется три транзакции импорта данных:

  • Загрузка 1 создает файлы 1 и 2, в результате чего возникают метаданные бакета V1 со списком {файл 1, файл 2}.
  • Загрузка 2 создает файлы 3 и 4, в результате чего возникают метаданные бакета V2 со списком { файл 1, файл 2, файл 3, файл 4}.
  • Загрузка 3 создает файл 5, в результате чего возникают метаданные бакета V3 со списком { файл 1, файл 2, файл 3, файл 4, файл 5}.

Фоновые задачи уплотнения также создают новые версии данных, объединяя мелкие файлы в более крупные, чтобы сократить количество операций произвольного чтения и записи и устранить дублирующиеся данные. Каждая операция уплотнения создает новую версию. Например, если транзакция 4 объединяет файлы 1–4 в файл 6, то в метаданных бакета V4 будет содержаться список {файл 5, файл 6}.

Без уплотнения файлы данных нельзя удалить. Например, метаданные бакета V3 ссылаются на файлы 1–4, но после уплотнения файлы 1–4 можно удалить, когда к версиям V1, V2 и V3 не будут обращаться, потому что все их содержимое перенесено в файл 6. Текущие версия данных приводится ниже:

Рис. 6. Пример ссылок на бакет

Очевидно, что исходные файлы данных можно удалить только после завершения уплотнения (хотя очистка метаданных бакетов зависит от других правил). Таким образом, самый простой способ определить, можно ли удалить файл, — проверить, что никакие метаданные бакетов больше не ссылаются на него.

Настройка уплотнения в StarRocks: практическое руководство

Мы разобрались с принципами работы уплотнения в StarRocks, а теперь рассмотрим его оптимизацию.

Проверка коэффициента уплотнения

Примечание. Следующие команды выполняются только на ведущем фронтенд-узле.

Для каждой партиции StarRocks рассчитывает коэффициент уплотнения, который отражает текущее состояние объединения файлов данных: чем выше значение, тем ниже степень объединения файлов.

StarRocks предоставляет команды для просмотра текущего коэффициента уплотнения партиции. На основе этого значения фронтенд запускает задачи уплотнения, а пользователи определяют, не накопилось ли в партиции слишком много версий:

Метод 1.

MySQL [(none)]> show proc ‘/DBS/load_benchmark/store_sales/partitions’;

+————-+—————+—————-+—————-+————-+——–+————–+——-+——————————+———+———-+———–+———-+————+——-+——-+——-+

| PartitionId | PartitionName | CompactVersion | VisibleVersion | NextVersion | State  | PartitionKey | Range | DistributionKey              | Buckets | DataSize | RowCount  | CacheTTL | AsyncWrite | AvgCS | P50CS | MaxCS |

+————-+—————+—————-+—————-+————-+——–+————–+——-+——————————+———+———-+———–+———-+————+——-+——-+——-+

| 38028       | store_sales   | 913            | 921            | 923         | NORMAL |              |       | ss_item_sk, ss_ticket_number | 64      | 15.6GB   | 273857126 | 2592000  | false      | 10.00 | 10.00 | 10.00 |

+————-+—————+—————-+—————-+————-+——–+————–+——-+——————————+———+———-+———–+———-+————+——-+——-+——-+

1 row in set (0.20 sec)

Метод 2.
В версиях 3.1.9 и 3.2.4 мы добавили системную таблицу partitions_meta, чтобы пользователи могли легко просматривать информацию обо всех партициях с помощью сложных SQL-запросов:

mysql> select * from information_schema.partitions_meta order by Max_CS;

+————–+—————————-+—————————-+————–+—————–+—————–+———————-+————–+—————+—————–+—————————————–+———+—————–+—————-+———————+—————————–+————–+———+———–+————+——————+———-+——–+——–+——————————————————————————————————–+

| DB_NAME      | TABLE_NAME                 | PARTITION_NAME             | PARTITION_ID | COMPACT_VERSION | VISIBLE_VERSION | VISIBLE_VERSION_TIME | NEXT_VERSION | PARTITION_KEY | PARTITION_VALUE | DISTRIBUTION_KEY                        | BUCKETS | REPLICATION_NUM | STORAGE_MEDIUM | COOLDOWN_TIME       | LAST_CONSISTENCY_CHECK_TIME | IS_IN_MEMORY | IS_TEMP | DATA_SIZE | ROW_COUNT  | ENABLE_DATACACHE | AVG_CS   | P50_CS | MAX_CS | STORAGE_PATH                                                                                           |

+————–+—————————-+—————————-+————–+—————–+—————–+———————-+————–+—————+—————–+—————————————–+———+—————–+—————-+———————+—————————–+————–+———+———–+————+——————+———-+——–+——–+——————————————————————————————————–+

| tpcds_1t     | call_center                | call_center                |        11905 |               0 |               2 | 2024-03-17 08:30:47  |            3 |               |                 | cc_call_center_sk                       |       1 |               1 | HDD            | 9999-12-31 23:59:59 | NULL                        |            0 |       0 | 12.3KB    |         42 |                0 |        0 |      0 |      0 | s3://starrocks-cloud-data/dingkai/536a3c77-52c3-485a-8217-781734a970b1/db10328/11906/11905 |

| tpcds_1t     | web_returns                | web_returns                |        12030 |               3 |               3 | 2024-03-17 08:40:48  |            4 |               |                 | wr_item_sk, wr_order_number             |      16 |               1 | HDD            | 9999-12-31 23:59:59 | NULL                        |            0 |       0 | 3.5GB     |   71997522 |                0 |        0 |      0 |      0 | s3://starrocks-cloud-data/dingkai/536a3c77-52c3-485a-8217-781734a970b1/db10328/12031/12030 |

| tpcds_1t     | warehouse                  | warehouse                  |        11847 |               0 |               2 | 2024-03-17 08:30:47  |            3 |               |                 | w_warehouse_sk                          |       1 |               1 | HDD            | 9999-12-31 23:59:59 | NULL                        |            0 |       0 | 4.2KB     |         20 |                0 |        0 |      0 |      0 | s3://starrocks-cloud-data/dingkai/536a3c77-52c3-485a-8217-781734a970b1/db10328/11848/11847 |

| tpcds_1t     | ship_mode                  | ship_mode                  |        11851 |               0 |               2 | 2024-03-17 08:30:47  |            3 |               |                 | sm_ship_mode_sk                         |       1 |               1 | HDD            | 9999-12-31 23:59:59 | NULL                        |            0 |       0 | 1.7KB     |         20 |                0 |        0 |      0 |      0 | s3://starrocks-cloud-data/dingkai/536a3c77-52c3-485a-8217-781734a970b1/db10328/11852/11851 |

| tpcds_1t     | customer_address           | customer_address           |        11790 |               0 |               2 | 2024-03-17 08:32:19  |            3 |               |                 | ca_address_sk                           |      16 |               1 | HDD            | 9999-12-31 23:59:59 | NULL                        |            0 |       0 | 120.9MB   |    6000000 |                0 |        0 |      0 |      0 | s3://starrocks-cloud-data/dingkai/536a3c77-52c3-485a-8217-781734a970b1/db10328/11791/11790 |

| tpcds_1t     | time_dim                   | time_dim                   |        11855 |               0 |               2 | 2024-03-17 08:30:48  |            3 |               |                 | t_time_sk                               |      16 |               1 | HDD            | 9999-12-31 23:59:59 | NULL                        |            0 |       0 | 864.7KB   |      86400 |                0 |        0 |      0 |      0 | s3://starrocks-cloud-data/dingkai/536a3c77-52c3-485a-8217-781734a970b1/db10328/11856/11855 |

| tpcds_1t     | web_sales                  | web_sales                  |        12049 |               3 |               3 | 2024-03-17 10:14:20  |            4 |               |                 | ws_item_sk, ws_order_number             |     128 |               1 | HDD            | 9999-12-31 23:59:59 | NULL                        |            0 |       0 | 47.7GB    |  720000376 |                0 |        0 |      0 |      0 | s3://starrocks-cloud-data/dingkai/536a3c77-52c3-485a-8217-781734a970b1/db10328/12050/12049 |

| tpcds_1t     | store                      | store                      |        11901 |               0 |               2 | 2024-03-17 08:30:47  |            3 |               |                 | s_store_sk                              |       1 |               1 | HDD            | 9999-12-31 23:59:59 | NULL                        |            0 |       0 | 95.6KB    |       1002 |                0 |        0 |      0 |      0 | s3://starrocks-cloud-data/dingkai/536a3c77-52c3-485a-8217-781734a970b1/db10328/11902/11901 |

| tpcds_1t     | web_site                   | web_site                   |        11928 |               0 |               2 | 2024-03-17 08:30:47  |            3 |               |                 | web_site_sk                             |       1 |               1 | HDD            | 9999-12-31 23:59:59 | NULL                        |            0 |       0 | 13.4KB    |         54 |                0 |        0 |      0 |      0 | s3://starrocks-cloud-data/dingkai/536a3c77-52c3-485a-8217-781734a970b1/db10328/11929/11928 |

| tpcds_1t     | household_demographics     | household_demographics     |        11932 |               0 |               2 | 2024-03-17 08:30:47  |            3 |               |                 | hd_demo_sk                              |       1 |               1 | HDD            | 9999-12-31 23:59:59 | NULL                        |            0 |       0 | 2.1KB     |       7200 |                0 |        0 |      0 |      0 | s3://starrocks-cloud-data/dingkai/536a3c77-52c3-485a-8217-781734a970b1/db10328/11933/11932 |

| tpcds_1t     | web_page                   | web_page                   |        11936 |               0 |               2 | 2024-03-17 08:30:47  |            3 |               |                 | wp_web_page_sk                          |       1 |               1 | HDD            | 9999-12-31 23:59:59 | NULL                        |            0 |       0 | 43.5KB    |       3000 |                0 |        0 |      0 |      0 | s3://starrocks-cloud-data/dingkai/536a3c77-52c3-485a-8217-781734a970b1/db10328/11937/11936 |

| tpcds_1t     | customer_demographics      | customer_demographics      |        11809 |               0 |               2 | 2024-03-17 08:30:49  |            3 |               |                 | cd_demo_sk                              |      16 |               1 | HDD            | 9999-12-31 23:59:59 | NULL                        |            0 |       0 | 2.7MB     |    1920800 |                0 |        0 |      0 |      0 | s3://starrocks-cloud-data/dingkai/536a3c77-52c3-485a-8217-781734a970b1/db10328/11810/11809 |

| tpcds_1t     | reason                     | reason                     |        11874 |               0 |               2 | 2024-03-17 08:30:47  |            3 |               |                 | r_reason_sk                             |       1 |               1 | HDD            | 9999-12-31 23:59:59 | NULL                        |            0 |       0 | 1.9KB     |         65 |                0 |        0 |      0 |      0 | s3://starrocks-cloud-data/dingkai/536a3c77-52c3-485a-8217-781734a970b1/db10328/11875/11874 |

| tpcds_1t     | promotion                  | promotion                  |        11940 |               0 |               2 | 2024-03-17 08:30:47  |            3 |               |                 | p_promo_sk                              |       1 |               1 | HDD            | 9999-12-31 23:59:59 | NULL                        |            0 |       0 | 69.6KB    |       1500 |                0 |        0 |      0 |      0 | s3://starrocks-cloud-data/dingkai/536a3c77-52c3-485a-8217-781734a970b1/db10328/11941/11940 |

| tpcds_1t     | income_band                | income_band                |        11878 |               0 |               2 | 2024-03-17 08:30:48  |            3 |               |                 | ib_income_band_sk                       |       1 |               1 | HDD            | 9999-12-31 23:59:59 | NULL                        |            0 |       0 | 727B      |         20 |                0 |        0 |      0 |      0 | s3://starrocks-cloud-data/dingkai/536a3c77-52c3-485a-8217-781734a970b1/db10328/11879/11878 |

| tpcds_1t     | catalog_page               | catalog_page               |        11944 |               0 |               2 | 2024-03-17 08:30:52  |            3 |               |                 | cp_catalog_page_sk                      |      16 |               1 | HDD            | 9999-12-31 23:59:59 | NULL                        |            0 |       0 | 1.8MB     |      30000 |                0 |        0 |      0 |      0 | s3://starrocks-cloud-data/dingkai/536a3c77-52c3-485a-8217-781734a970b1/db10328/11945/11944 |

| tpcds_1t     | item                       | item                       |        11882 |               0 |               2 | 2024-03-17 08:30:51  |            3 |               |                 | i_item_sk                               |      16 |               1 | HDD            | 9999-12-31 23:59:59 | NULL                        |            0 |       0 | 37.1MB    |     300000 |                0 |        0 |      0 |      0 | s3://starrocks-cloud-data/dingkai/536a3c77-52c3-485a-8217-781734a970b1/db10328/11883/11882 |

| tpcds_1t     | store_returns              | store_returns              |        11755 |               3 |               3 | 2024-03-17 09:02:48  |            4 |               |                 | sr_item_sk, sr_ticket_number            |      32 |               1 | HDD            | 9999-12-31 23:59:59 | NULL                        |            0 |       0 | 11.3GB    |  287999764 |                0 |        0 |      0 |      0 | s3://starrocks-cloud-data/dingkai/536a3c77-52c3-485a-8217-781734a970b1/db10328/11756/11755 |

| tpcds_1t     | date_dim                   | date_dim                   |        11828 |               0 |               2 | 2024-03-17 08:30:47  |            3 |               |                 | d_date_sk                               |      16 |               1 | HDD            | 9999-12-31 23:59:59 | NULL                        |            0 |       0 | 1.5MB     |      73049 |                0 |        0 |      0 |      0 | s3://starrocks-cloud-data/dingkai/536a3c77-52c3-485a-8217-781734a970b1/db10328/11829/11828 |

| tpcds_1t     | catalog_sales              | catalog_sales              |        12215 |               3 |               3 | 2024-03-17 11:44:37  |            4 |               |                 | cs_item_sk, cs_order_number             |     256 |               1 | HDD            | 9999-12-31 23:59:59 | NULL                        |            0 |       0 | 94.7GB    | 1439982416 |                0 |        0 |      0 |      0 | s3://starrocks-cloud-data/dingkai/536a3c77-52c3-485a-8217-781734a970b1/db10328/12216/12215 |

| tpcds_1t     | store_sales                | store_sales                |        12474 |               3 |               3 | 2024-03-17 13:33:04  |            4 |               |                 | ss_item_sk, ss_ticket_number            |     256 |               1 | HDD            | 9999-12-31 23:59:59 | NULL                        |            0 |       0 | 133.4GB   | 2879987999 |                0 |        0 |      0 |      0 | s3://starrocks-cloud-data/dingkai/536a3c77-52c3-485a-8217-781734a970b1/db10328/12475/12474 |

| _statistics_ | histogram_statistics       | histogram_statistics       |        11729 |               0 |               1 | 2024-03-17 08:29:45  |            2 |               |                 | table_id, column_name                   |      10 |               1 | HDD            | 9999-12-31 23:59:59 | NULL                        |            0 |       0 | 0B        |          0 |                1 |        0 |      0 |      0 | s3://starrocks-cloud-data/dingkai/536a3c77-52c3-485a-8217-781734a970b1/db10004/11730/11729 |

| _statistics_ | external_column_statistics | external_column_statistics |        11742 |               0 |               1 | 2024-03-17 08:29:45  |            2 |               |                 | table_uuid, partition_name, column_name |      10 |               1 | HDD            | 9999-12-31 23:59:59 | NULL                        |            0 |       0 | 0B        |          0 |                1 |        0 |      0 |      0 | s3://starrocks-cloud-data/dingkai/536a3c77-52c3-485a-8217-781734a970b1/db10004/11743/11742 |

| tpcds_1t     | catalog_returns            | catalog_returns            |        12180 |               3 |               3 | 2024-03-17 08:51:32  |            4 |               |                 | cr_item_sk, cr_order_number             |      32 |               1 | HDD            | 9999-12-31 23:59:59 | NULL                        |            0 |       0 | 7.4GB     |  143996756 |                0 |        0 |      0 |      0 | s3://starrocks-cloud-data/dingkai/536a3c77-52c3-485a-8217-781734a970b1/db10328/12181/12180 |

| _statistics_ | table_statistic_v1         | table_statistic_v1         |        11703 |               0 |               4 | 2024-03-17 10:24:32  |            5 |               |                 | table_id, column_name, db_id            |      10 |               1 | HDD            | 9999-12-31 23:59:59 | NULL                        |            0 |       0 | 55KB      |         77 |                1 |      2.8 |      3 |      3 | s3://starrocks-cloud-data/dingkai/536a3c77-52c3-485a-8217-781734a970b1/db10004/11704/11703 |

| tpcds_1t     | inventory                  | inventory                  |        11963 |               3 |               3 | 2024-03-17 08:52:40  |            4 |               |                 | inv_item_sk                             |      64 |               1 | HDD            | 9999-12-31 23:59:59 | NULL                        |            0 |       0 | 1.4GB     |  783000000 |                0 | 1.046875 |      0 |      4 | s3://starrocks-cloud-data/dingkai/536a3c77-52c3-485a-8217-781734a970b1/db10328/11964/11963 |

| tpcds_1t     | customer                   | customer                   |        11909 |               0 |               2 | 2024-03-17 08:33:36  |            3 |               |                 | c_customer_sk                           |      16 |               1 | HDD            | 9999-12-31 23:59:59 | NULL                        |            0 |       0 | 640.6MB   |   12000000 |                0 |   3.0625 |      3 |      5 | s3://starrocks-cloud-data/dingkai/536a3c77-52c3-485a-8217-781734a970b1/db10328/11910/11909 |

| _statistics_ | column_statistics          | column_statistics          |        11716 |              14 |              23 | 2024-03-17 10:19:27  |           24 |               |                 | table_id, partition_id, column_name     |      10 |               1 | HDD            | 9999-12-31 23:59:59 | NULL                        |            0 |       0 | 1.4MB     |        348 |                1 |      7.7 |      8 |      9 | s3://starrocks-cloud-data/dingkai/536a3c77-52c3-485a-8217-781734a970b1/db10004/11717/11716 |

+————–+—————————-+—————————-+————–+—————–+—————–+———————-+————–+—————+—————–+—————————————–+———+—————–+—————-+———————+—————————–+————–+———+———–+————+——————+———-+——–+——–+——————————————————————————————————–+

28 rows in set (0.04 sec)

Обратите внимание на следующие параметры:

  • AvgCS: средний коэффициент уплотнения всех бакетов в текущей партиции.
  • MaxCS: максимальный коэффициент уплотнения всех бакетов в текущей партиции.

Просмотр задач уплотнения

При импорте данных система непрерывно планирует задачи уплотнения и отправляет их на вычислительный узел для выполнения. Мы можем просмотреть текущий статус задач уплотнения.

Команды для задач уплотнения

Следующая команда позволяет просмотреть общий статус всех задач уплотнения в системе:

MySQL [(none)]> show proc ‘/compactions’;

+—————————————————-+——–+———————+————+———————+———————————————————————————+

| Partition                                          | TxnID  | StartTime           | CommitTime | FinishTime          | Error                                                                           |

+—————————————————-+——–+———————+————+———————+———————————————————————————+

| load_benchmark.store_sales.store_sales             | 197562 | 2023-05-24 15:50:33 | 2023-05-24 15:51:00 | 2023-05-24 15:51:02 | NULL                                                                            |

+—————————————————-+——–+———————+————+———————+———————————————————————————+

13 rows in set (0.21 sec)

Как видите, сейчас выполняется одна задача уплотнения:

  • Partition: партиция, в которой выполняется задача.
  • TxnID: идентификатор транзакции, назначенный текущей задаче фронтендом.
  • StartTime: время начала задачи.
  • CommitTime: время подтверждения задачи.
  • FinishTime: время завершения задачи.
  • Error: сведения об ошибках или NULL, если ошибок нет.

Эта команда также показывает общий статус задач уплотнения для каждой партиции. Каждая задача уплотнения делится на несколько подзадач на уровне бакета. Следующая команда отображает ход выполнения каждой подзадачи:

MySQL [(none)]> select * from information_schema.be_cloud_native_compactions where TXN_ID = 197562;

+——-+——–+———–+———+———+——+———————+———————+———-+——–+

| BE_ID | TXN_ID | TABLET_ID | VERSION | SKIPPED | RUNS | START_TIME          | FINISH_TIME         | PROGRESS | STATUS |

+——-+——–+———–+———+———+——+———————+———————+———-+——–+

| 36027 | 197562 |     38033 |     365 |       0 |    1 | 2023-05-24 15:50:34 | 2023-05-24 15:50:38 |      100 | OK     |

| 36027 | 197562 |     38038 |     365 |       0 |    1 | 2023-05-24 15:50:34 | 2023-05-24 15:50:38 |      100 | OK     |

| 36027 | 197562 |     38039 |     365 |       0 |    1 | 2023-05-24 15:50:34 | 2023-05-24 15:50:39 |      100 | OK     |

| 36027 | 197562 |     38040 |     365 |       0 |    1 | 2023-05-24 15:50:34 | 2023-05-24 15:50:39 |      100 | OK     |

| 36027 | 197562 |     38044 |     365 |       0 |    1 | 2023-05-24 15:50:38 | 2023-05-24 15:50:42 |      100 | OK     |

| 36027 | 197562 |     38047 |     365 |       0 |    1 | 2023-05-24 15:50:38 | 2023-05-24 15:50:43 |      100 | OK     |

| 36027 | 197562 |     38055 |     365 |       0 |    1 | 2023-05-24 15:50:39 | 2023-05-24 15:50:43 |      100 | OK     |

| 36027 | 197562 |     38056 |     365 |       0 |    1 | 2023-05-24 15:50:39 | 2023-05-24 15:50:43 |      100 | OK     |

| 36027 | 197562 |     38058 |     365 |       0 |    1 | 2023-05-24 15:50:42 | 2023-05-24 15:50:47 |      100 | OK     |

| 36027 | 197562 |     38060 |     365 |       0 |    1 | 2023-05-24 15:50:43 | 2023-05-24 15:50:47 |      100 | OK     |

| 36027 | 197562 |     38063 |     365 |       0 |    1 | 2023-05-24 15:50:43 | 2023-05-24 15:50:48 |      100 | OK     |

| 36027 | 197562 |     38066 |     365 |       0 |    1 | 2023-05-24 15:50:43 | 2023-05-24 15:50:48 |      100 | OK     |

| 36027 | 197562 |     38070 |     365 |       0 |    1 | 2023-05-24 15:50:47 | NULL                |       85 | OK     |

| 36027 | 197562 |     38071 |     365 |       0 |    1 | 2023-05-24 15:50:47 | NULL                |       61 | OK     |

| 36027 | 197562 |     38080 |     365 |       0 |    1 | 2023-05-24 15:50:48 | NULL                |       33 | OK     |

| 36027 | 197562 |     38083 |     365 |       0 |    1 | 2023-05-24 15:50:48 | NULL                |       29 | OK     |

| 36027 | 197562 |     38085 |     365 |       0 |    0 | NULL                | NULL                |        0 | OK     |

| 36027 | 197562 |     38086 |     365 |       0 |    0 | NULL                | NULL                |        0 | OK     |

| 36027 | 197562 |     38090 |     365 |       0 |    0 | NULL                | NULL                |        0 | OK     |

| 36027 | 197562 |     38091 |     365 |       0 |    0 | NULL                | NULL                |        0 | OK     |

| 36027 | 197562 |     38094 |     365 |       0 |    0 | NULL                | NULL                |        0 | OK     |

| 36026 | 197562 |     38031 |     365 |       0 |    1 | 2023-05-24 15:50:34 | 2023-05-24 15:50:39 |      100 | OK     |

| 36026 | 197562 |     38037 |     365 |       0 |    1 | 2023-05-24 15:50:34 | 2023-05-24 15:50:38 |      100 | OK     |

| 36026 | 197562 |     38042 |     365 |       0 |    1 | 2023-05-24 15:50:34 | 2023-05-24 15:50:38 |      100 | OK     |

| 36026 | 197562 |     38043 |     365 |       0 |    1 | 2023-05-24 15:50:34 | 2023-05-24 15:50:38 |      100 | OK     |

| 36026 | 197562 |     38045 |     365 |       0 |    1 | 2023-05-24 15:50:38 | 2023-05-24 15:50:42 |      100 | OK     |

| 36026 | 197562 |     38048 |     365 |       0 |    1 | 2023-05-24 15:50:38 | 2023-05-24 15:50:43 |      100 | OK     |

| 36026 | 197562 |     38049 |     365 |       0 |    1 | 2023-05-24 15:50:38 | 2023-05-24 15:50:43 |      100 | OK     |

| 36026 | 197562 |     38051 |     365 |       0 |    1 | 2023-05-24 15:50:39 | 2023-05-24 15:50:43 |      100 | OK     |

| 36026 | 197562 |     38054 |     365 |       0 |    1 | 2023-05-24 15:50:42 | 2023-05-24 15:50:46 |      100 | OK     |

| 36026 | 197562 |     38057 |     365 |       0 |    1 | 2023-05-24 15:50:43 | 2023-05-24 15:50:47 |      100 | OK     |

| 36026 | 197562 |     38062 |     365 |       0 |    1 | 2023-05-24 15:50:43 | 2023-05-24 15:50:47 |      100 | OK     |

| 36026 | 197562 |     38069 |     365 |       0 |    1 | 2023-05-24 15:50:43 | 2023-05-24 15:50:48 |      100 | OK     |

| 36026 | 197562 |     38073 |     365 |       0 |    1 | 2023-05-24 15:50:46 | NULL                |       98 | OK     |

| 36026 | 197562 |     38074 |     365 |       0 |    1 | 2023-05-24 15:50:47 | NULL                |       77 | OK     |

| 36026 | 197562 |     38075 |     365 |       0 |    1 | 2023-05-24 15:50:47 | NULL                |       51 | OK     |

| 36026 | 197562 |     38077 |     365 |       0 |    1 | 2023-05-24 15:50:48 | NULL                |       33 | OK     |

| 36026 | 197562 |     38078 |     365 |       0 |    0 | NULL                | NULL                |        0 | OK     |

| 36026 | 197562 |     38079 |     365 |       0 |    0 | NULL                | NULL                |        0 | OK     |

| 36026 | 197562 |     38081 |     365 |       0 |    0 | NULL                | NULL                |        0 | OK     |

| 36026 | 197562 |     38082 |     365 |       0 |    0 | NULL                | NULL                |        0 | OK     |

| 36026 | 197562 |     38084 |     365 |       0 |    0 | NULL                | NULL                |        0 | OK     |

| 36026 | 197562 |     38089 |     365 |       0 |    0 | NULL                | NULL                |        0 | OK     |

| 10004 | 197562 |     38032 |     365 |       0 |    1 | 2023-05-24 15:50:34 | 2023-05-24 15:50:38 |      100 | OK     |

| 10004 | 197562 |     38034 |     365 |       0 |    1 | 2023-05-24 15:50:34 | 2023-05-24 15:50:38 |      100 | OK     |

| 10004 | 197562 |     38035 |     365 |       0 |    1 | 2023-05-24 15:50:34 | 2023-05-24 15:50:38 |      100 | OK     |

| 10004 | 197562 |     38036 |     365 |       0 |    1 | 2023-05-24 15:50:34 | 2023-05-24 15:50:38 |      100 | OK     |

| 10004 | 197562 |     38041 |     365 |       0 |    1 | 2023-05-24 15:50:38 | 2023-05-24 15:50:42 |      100 | OK     |

| 10004 | 197562 |     38046 |     365 |       0 |    1 | 2023-05-24 15:50:38 | 2023-05-24 15:50:42 |      100 | OK     |

| 10004 | 197562 |     38050 |     365 |       0 |    1 | 2023-05-24 15:50:38 | 2023-05-24 15:50:42 |      100 | OK     |

| 10004 | 197562 |     38052 |     365 |       0 |    1 | 2023-05-24 15:50:38 | 2023-05-24 15:50:42 |      100 | OK     |

| 10004 | 197562 |     38053 |     365 |       0 |    1 | 2023-05-24 15:50:42 | 2023-05-24 15:50:46 |      100 | OK     |

| 10004 | 197562 |     38059 |     365 |       0 |    1 | 2023-05-24 15:50:42 | 2023-05-24 15:50:47 |      100 | OK     |

| 10004 | 197562 |     38061 |     365 |       0 |    1 | 2023-05-24 15:50:42 | 2023-05-24 15:50:46 |      100 | OK     |

| 10004 | 197562 |     38064 |     365 |       0 |    1 | 2023-05-24 15:50:42 | 2023-05-24 15:50:47 |      100 | OK     |

| 10004 | 197562 |     38065 |     365 |       0 |    1 | 2023-05-24 15:50:46 | NULL                |       99 | OK     |

| 10004 | 197562 |     38067 |     365 |       0 |    1 | 2023-05-24 15:50:46 | NULL                |       92 | OK     |

| 10004 | 197562 |     38068 |     365 |       0 |    1 | 2023-05-24 15:50:47 | NULL                |       87 | OK     |

| 10004 | 197562 |     38072 |     365 |       0 |    1 | 2023-05-24 15:50:47 | NULL                |       89 | OK     |

| 10004 | 197562 |     38076 |     365 |       0 |    0 | NULL                | NULL                |        0 | OK     |

| 10004 | 197562 |     38087 |     365 |       0 |    0 | NULL                | NULL                |        0 | OK     |

| 10004 | 197562 |     38088 |     365 |       0 |    0 | NULL                | NULL                |        0 | OK     |

| 10004 | 197562 |     38092 |     365 |       0 |    0 | NULL                | NULL                |        0 | OK     |

| 10004 | 197562 |     38093 |     365 |       0 |    0 | NULL                | NULL                |        0 | OK     |

+——-+——–+———–+———+———+——+———————+———————+———-+——–+

64 rows in set (0.22 sec)

 

Обратите внимание на два поля:

  • PROGRESS: текущий прогресс уплотнения бакета в процентах.
  • STATUS: статус задачи; при возникновении ошибки — подробная информация об ошибке.

Отмена задач уплотнения

Пользователи могут отменять определенные задачи уплотнения следующей командой. Команда выполняется только на ведущем фронтенд-узле:

CANCEL COMPACTION WHERE TXN_ID = 123;

Настройка параметров

В StarRocks можно настроить следующие параметры уплотнения в архитектурах с общим доступом к данным.

Параметры фронтенда

# Минимальный коэффициент сжатия; пока значение в партиции ниже этого порога, задачи уплотнения не будут запускаться

lake_compaction_score_selector_min_score = 10.0;

 

# Сколько задач уплотнения можно одновременно запустить на фронтенде

# Значение по умолчанию -1, то есть фронтенд автоматически рассчитывает значение на основе числа бэкенд-узлов

# Если 0, фронтенд не будет запускать задачи уплотнения

lake_compaction_max_tasks = -1;

 

# Задает число результатов, отображаемых командой show proc ‘/compactions’, по умолчанию 12

lake_compaction_history_size = 12;

lake_compaction_fail_history_size = 12;

Все эти параметры уплотнения на фронтенде можно задавать динамически с помощью SQL-команд:

admin set frontend config (“lake_compaction_max_tasks” = “0”);

Параметры бэкенда/вычислительных узлов

# Задает число потоков, выполняющих задачи уплотнения на бэкенде/вычислительных узлах, по умолчанию 4

# То есть бэкенд сможет выполнять уплотнение одновременно в нескольких бакетах

compact_threads = 4

 

# Размер очереди задач уплотнения на бэкенде, задает максимальное число задач уплотнения, полученных от фронтенда

# По умолчанию 100

compact_thread_pool_queue_size = 100

 

# Максимальное число файлов данных в одной задаче уплотнения, по умолчанию 1000

# На практике рекомендуется установить 100, чтобы задачи выполнялись быстрее и требовали меньше ресурсов

max_cumulative_compaction_num_singleton_deltas=100

В последней версии все эти параметры уплотнения на бэкенде можно задавать динамически следующим образом:

mysql> update information_schema.be_configs set value = 8 where name = “compact_threads”;

Query OK, 0 rows affected (0.01 sec)

Дополнительные рекомендации

Поскольку уплотнение значительно влияет на производительность запросов, рекомендуется отслеживать статус фонового объединения данных в таблицах и партициях. Советы по поддержанию оптимальной производительности:

  1. Отслеживайте коэффициент уплотнения. Задайте оповещения для этой метрики, чтобы следить за срочностью выполнения задач по уплотнению. Шаблон мониторинга StarRocks Grafana включает эту метрику.
  2. Отслеживайте потребление ресурсов. Обращайте особое внимание на потребление памяти при уплотнении. Эта метрика также входит в шаблон мониторинга StarRocks Grafana.
  3. Оптимизируйте параллельное выполнение задач. Увеличьте число параллельных потоков уплотнения на вычислительных узлах в период простоя, чтобы ускорить выполнение задач по уплотнению.


Поделиться
{{ responsive_img( url='/../../static/upload/news/detail-image.jpg',lazy=true, img_attrs={ class: "img-fluid lazy" }, formats=['webp'] ) }}

Рассылка новостей

    Продолжая пользоваться сайтом, вы даёте Согласие на автоматический сбор и анализ ваших данных, необходимых для работы сайта и его улучшения, использование файлов cookie.