极速查询:StarRocks 存算分离 Compaction 原理 调优指南

作者:丁凯,StarRocks TSC member/镜舟科技云原生技术负责人

StarRocks 在数据摄入过程中,每次操作都会创建一个新的数据版本。在查询时,为了得到准确的结果,必须将所有版本合并。然而,随着历史数据版本的累积,需要合并的文件数量增多,这将显著降低查询效率。为了解决这个问题,StarRocks 会定期执行内部任务,通过合并历史数据版本来消除重复记录,这个过程被称为 Compaction。

举个例子:下图中 version 1 和 version 2 数据文件进行 Compaction 后,消除了 version 1 中的旧版本数据(id = 2, value = 11, id = 5, value = 30),最终生成了新的数据版本文件 version 3。

从上述说明可以看出, Compaction 是将不同版本的数据文件合并成大文件的过程,旨在减少系统中小文件数量、从而提升查询效率。 相比于存算一体表,StarRocks 存算分离实现了新的 Compaction 调度机制,具有以下特点:

  1. Compaction 调度由 FE 发起,BE 执行。FE 按照 Partition 为单位来发起 Compaction 任务

  2. Compaction 会生成一个新版本,也走导入的写数据、commit、publish version 的完整流程

本文旨在描述 StarRocks 存算分离表 Compaction 基本实现原理,帮助开发和运维人员能更好地理解并根据实际需要调整 Compaction 相关配置,以在实践中获得更优的性能表现。

数据版本更新机制

如前所述,每次导入都会在 FE 内生成一个新版本,而该版本被标记在 Partition 之上。一旦导入事务成功提交,便会更新 Partition 的可见数据版本号,Partition 的数据版本号单调递增。

需要注意的是,一个 Partition 内可能存在多个 Tablet,这些 Tablet 都共享相同的数据版本号,即使一次导入可能只涉及其中部分 Tablet,一旦导入事务成功提交,Partition 下所有的 Tablet 的版本都会相应地得到提升。

例如上图中,Partition X 内含 Tablet 1 ~ N,当前的可见版本为12。一旦产生新的导入事务 New Load Txn,且该事务成功提交,那么 Partition X 的可见版本就变成了 13。

基本框架

StarRocks 存算分离表 Compaction 由两个角色组成:调度者(Compaction Scheduer)和执行者(Compaction Executor)。 调度者通过 RPC 发起 Compaction 任务(Compaction Job),而执行者负责执行 Compaction Job。

在 StarRocks 存算分离中, FE 作为 Compaction Scheduler,而 BE 或者 CN 都作为 Compaction Executor。 每个 Compaction Executor 内都存在一个线程池专门用于执行 Compaction Job。

Compaction Scheduer 调度

FE 上存在一个周期性运行线程 Compaction Scheduler,负责调度发起所有的 Compaction Task。 FE 以 Partition 为调度的基本单位。

FE 上掌握了每个 Partition 的 Compaction Score 信息, 该信息用来表示 Partition 内所有 Tablet 的需要进行 Compaction 的优先级,Compaction Score 越高,表示 Partition 需要合并的紧急程度越高。

每次 Compaction Scheduler 线程运行时,会挑选出当前 Compaction Score 最高的 Partition,并为这些 Partition 构造 Compaction Task。 当然,Compaction Scheduler 也会控制每次最多发起的 Compaction Task 数量。

构造 Compaction Task 的逻辑相对比较简单,对于每个 Partition,Scheduler 会获得其所有的 Tablet,然后为每个 Compute Node (CN) 构造一个 Compaction Task,Task 内包含需要在该 CN 上执行 Compaction 任务的 Tablet 列表,然后发送 Task 给 CN 节点。

整个流程如下图所示:

在上图中,FE 上存在两个 Partition 需要执行 Compaction,分别为 Partition X 和 Partition Y。Partition X 内含4个 Tablet(1 ~ 4),而 Partition Y 内含3个 Tablet(5~7)。

Scheduler 通过计算发现:

Partition X 内,Tablet-2 和 Tablet-4 位于相同的 CN-1,而 Tablet-1 和 Tablet-3 位于相同的 CN-2,于是为 Partition X 构造了两个 Compaction Task(Task-1 与 Task-2),其中 Task-1 内包含 Tablet-2 和 Tablet-4,而 Task-2 内包含 Tablet-1 和 Tablet-3。

Partition Y 内,Tablet-5 和 Tablet-7 位于相同的 CN-1,而 Tablet-6 位于另外一个CN-2,于是为 Partition Y 也构造了两个 Compaction Task(Task-3 与 Task-4),其中 Task-3 内包含 Tablet-5 和 Tablet-7,而 Task-4 内包含 Tablet-6。

最终,每个 Task 被发往自己所属的 CN。CN 节点上存在专有线程池来处理这些 Task,且线程池数量可配置(即将支持动态配置)。每个线程会从 Compaction Task 任务队列中获取下一个要被执行的 Task。

Compaction 后的数据清理

目前 StarRocks 存算分离表使用了数据多版本技术,整体上的存储结构如下图所示:

上图中共产生了三次数据导入事务,其中:

  • Load Txn 1: 在事务数据写入阶段,生成了新数据文件 file 1 & file 2,且该事务提交后生成了 Tablet Meta V1,其中记录该版本可见的文件列表为 {file-1, file-2}

  • Load Txn 2: 在事务数据写入阶段,生成了新数据文件 file 3 & file 4。在提交时,根据前一个版本(即 Tablet Meta V1)然后加上本次导入事务生成的新数据文件(file-3 & file-4),生成了新的 Tablet Meta V2,因此,该版本可见的文件列表为 {file-1, file-2, file-3, file-4}

  • Load Txn 3: 在事务写入阶段,产生了新数据文件 file 5。该事务提交时,根据前一个版本(即 Tablet Meta V2)然后加上本次导入事务生成的新数据文件(file-5),产生了新的 Tablet Meta V3,因此,该版本的可见文件列表为 {file-1, file-2, file-3, file-4, file-5}

除了用户导入事务产生了新的数据版本,在存算分离表中,系统后台 Compaction 任务也会产生新数据版本。Compaction 的目的有二:

  1. 将多个版本的小文件合并为大文件,减少查询时的随机 I/O 次数;

  2. 消除重复数据记录,减少数据总量。

在存算分离表中,每次 Compaction 也会产生一个全新的版本。依然以上面为例,假如在上面 Txn 3 之后新的事务 Txn 4 为一次 Compaction 任务,并且将 file1 ~ file4 这4个文件合并成为 file-6,那么该事务提交时,生成的新版本 Tablet Meta V4 内记录的文件列表为 {file-5, file-6}。

观察上例并思考可知,如果系统在运行过程中一直不会进行 Compaction。那么系统中的数据文件永远也无法被删除。试想上例中我们可以将 Tablet Meta V1,Tablet Meta V2 文件删除,但我们无法删除 file-1、file-2、file-3 以及 file-4,因为这些文件依然被 Tablet Meta V3 所引用。

但有了数据合并(Compaction)后,情况就变得不一样了。上例中,由于发生了一次 Compaction(上图中的 Compact Txn 4),将 file-1、file-2、file-3、file-4 合并生成了新文件 file-6 并生成了新的 Tablet Meta V4。由于 file-1 至 file-4 中的内容已经在 file-6 中存在,所以当版本 V1、V2、V3 不再被访问,file-1 至 file-4 便可以被安全删除。此时的数据版本情况如下图所示:

因此,综合上面的讨论,我们可以发现,只有在 Compaction 完成后原始的数据文件方可被删除。因而,判断数据文件能否安全删除的最直观的规则是:该数据文件不再被任何 Tablet Meta 所引用。

Compaction 调优指南

查看分区的 Compaction score

注意:以下命令需要连接 Leader FE 节点执行

StarRocks 在内部为每个分区(Partition) 维护了一个 Compaction Score 值,它反映了分区当前数据文件合并情况,Compaction score 越高,代表了数据文件合并程度越低。

StarRocks 提供了命令可查看 Partition 当前的 Compaction Score,FE 会以此作为发起 Compaction 任务的参考,用户也可以此作为判断当前 Partition 是否存在版本数过多的依据:

方法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 来查看系统所有 Partition 信息:

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-zhangjiakou/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-zhangjiakou/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-zhangjiakou/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-zhangjiakou/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-zhangjiakou/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-zhangjiakou/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-zhangjiakou/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-zhangjiakou/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-zhangjiakou/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-zhangjiakou/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-zhangjiakou/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-zhangjiakou/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-zhangjiakou/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-zhangjiakou/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-zhangjiakou/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-zhangjiakou/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-zhangjiakou/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-zhangjiakou/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-zhangjiakou/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-zhangjiakou/dingkai/536a3c77-52c3-485a-8217-781734a970b1/db10328/12216/12215 |
28 rows in set (0.04 sec)

需要关注以下参数:

  • AvgCS:当前 Partition 上所有 Tablet 平均 Compaction Score

  • MaxCS: 当前 Partition 上所有 Tablet 最大 Compaction Score

查看 Compaction 任务

随着导入任务的执行,系统内部也在不断地调度执行 Compaction 任务,这些任务会被发往计算节点 CN 执行,系统也提供了一系列命令可以查看当前 Compaction 任务执行情况。

首先,用户可以通过如下命令来观察系统当前所有 Compaction 任务的整体情况:

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                                                                   |
+----------------------------------------------------+--------+---------------------+------------+---------------------+---------------------------------------------------------------------------------+
1 rows in set (0.21 sec)

上面显示了当前有一个 Compaction 任务正在进行,其各字段含义如下:

Partition :当前正在进行的 Compaction 任务针对的 Partition TxnID :FE 为当前 Compaction 任务分配的事务 id StartTime :该 Compaction 任务的开始时间 CommitTime :该 Compaction 任务的 Commit 时间 FinishTime :该 Compaction 任务的结束时间 Error :该 Compaction 任务出错信息,如果一切正常,值为NULL

上面的命令展示了每个 Partition 上对应的 Compaction 任务总体情况。而每个 Compaction 任务底层会被按照 Tablet 分为多个子任务,系统也提供了如下命令来观察每个 Compaction 子任务的详细进展情况:

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     |
| 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:代表 Tablet 当前 Compaction 进展情况,为百分比

  • STATUS:代表任务状态,如果有错误,这里会展示错误详细信息

取消 Compaction 任务

用户可以通过下面的命令来取消特定的 Compaction 任务。需要注意的是,该命令需要连接 Leader FE 节点执行:

CANCEL COMPACTION WHERE TXN_ID = 123;

参数调优

StarRocks 中有如下参数来控制存算分离下的 Compaction 行为。

FE 参数
# 最小的Compaction score,低于该值的 Partition 不会发起Compaction任务
lake_compaction_score_selector_min_score = 10.0;# FE 上可同时发起的 Compaction Task 数量
# 默认值为-1,即FE会根据系统中 BE 数量自动计算
# 如果设置为0,则 FE 不会发起任何 Compaction 任务
lake_compaction_max_tasks = -1;# 控制show proc '/compactions' 显示的结果数量,默认为12
lake_compaction_history_size = 12;
lake_compaction_fail_history_size = 12;

FE 所有上述 Compaction 相关参数均可通过 SQL 命令动态修改,例如:

admin set frontend config ("lake_compaction_max_tasks" = "0");
BE / CN 参数
# 控制 BE/CN 上同时执行 Compaction 任务的线程数,默认值为4
# 也即 BE 上可同时为多少个 Tablet进行 Compaction
compact_threads = 4 # BE 上 Compaction任务队列大小,控制可接收来自FE的最大Compaction 任务数
# 默认值为100
compact_thread_pool_queue_size = 100# 单次 Compaction 任务最多合并的数据文件数量,默认为1000
# 在实践中我们建议将该值调整为100,这样,每个 Compaction Task 可以更快速地结束
# 且消耗更少的资源
max_cumulative_compaction_num_singleton_deltas=100

BE 所有上述 Compaction 相关参数在最新版本中已经支持动态修改,可以通过如下方式修改:

mysql> update information_schema.be_configs set value = 8 where name = "compact_threads";
Query OK, 0 rows affected (0.01 sec)

最佳实践

由于 Compaction 对于查询性能的影响至关重要,我们建议用户时刻关注系统中表与分区的后台数据合并情况。以下是几点最佳实践建议:

  1. 关注 Compaction Score,根据指标配置告警。StarRocks 自带的 Grafana 监控模板已经包含了该指标 (备注1)

  2. 关注 Compaction 消耗的资源情况,尤其是内存。StarRocks 自带的 Grafana 监控模板已经包含了该指标(备注1)

  3. 在资源较空闲时可增加计算节点上并行 Compaction 工作线程数,以加快 Compaction 任务的执行

备注:

  1. 使用 Prometheus 和 Grafana 监控报警:https://docs.starrocks.io/zh/docs/administration/management/monitoring/Monitor_and_Alert/

更多交流,联系我们:https://wx.focussend.com/weComLink/mobileQrCodeLink/33412/8da64

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/29786.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于 MySQL 5.7 升级 8.0 时 INT 显示问题分析

本案例中的客户是从 MySQL 5.7.36 升级到 MySQL 8.0.35,升级完成后业务反馈表结构有变化,升级前某个表的字段数据类型为 INT(10),升级后变成了 INT,客户咨询有什么影响没有? 作者:张昊,DBA&…

JavaScript日期对象、DOM节点操作(查找、增加、克隆、删除)

目录 1. 日期对象2. DOM节点操作2.1 查找节点2.2 增加节点2.3 克隆节点2.4 删除节点 1. 日期对象 实例化日期对象: 获取当前时间: new Date()获取指定时间: new Date(2023-12-1 17:12:08) 日期对象方法: 方法作用说明getFullYear()获得年份获取四位年份getMonth…

logback-spring.xml 小记

为什么不用logback.xml 名字 加载顺序:logback.xml>application.yml>logback-spring.xml 使用xml中使用到配置文件属性时,就会报错 为什么logback中记录不到运行时报错 logback获取不到堆栈错误 解决办法:在全局错误出使用log.error()指定输出 为什么打印不出来myba…

“首秀”欧洲杯,海信冰箱欧洲市占率居国产品牌首位

随着欧洲杯的火热开赛,挑灯夜战、观看球赛的时刻已经来临。此时,你需要何物相伴?是打开冰箱,取出真空腌制的食材,亲手烹饪一场观赛盛宴?还是取出极致保鲜的荔枝、樱桃,一边观赛一边品味&#xf…

部署yum仓库

目录 安装软件包 yum 配置文件 缓存功能操作步骤 创建并配置本地仓库文件 yum相关命令 yum install __ yum repolist yum list __ yum info __ yum search __ yum whatprovides __ yum remove __ yum -y update __ yum history yum grouplist yum groupinstall…

如何使用Vue3和ApexCharts轻松创建交互式图表

本文由ScriptEcho平台提供技术支持 项目地址:传送门 基于Vue3的ApexCharts动态图表展示 应用场景 本代码段适用于在Vue3应用中使用ApexCharts库创建交互式、可视化的图表。这些图表可以用于展示各种数据,例如销售额、支出、利润等,从而帮…

006 spring事务支持

文章目录 事务回顾事务介绍事务并发问题(隔离性导致)事务隔离级别 Spring框架事务管理相关接口Spring框架事务管理的分类编程式事务管理(了解)声明式事务管理(重点) 事务管理之XML方式业务层持久层单元测试代码配置事务管理的AOP 事务管理之混合方式事务管理之基于AspectJ的纯注…

不重新安装Anaconda找回不见的Anaconda Prompt

找回Anaconda Prompt只需三步 系统:win11 x641.cd Anaconda的安装目录2. Anaconda Prompt又回来了 系统:win11 x64 1.cd Anaconda的安装目录 winR 输入cmd 进入命令行,进入到Anaconda的安装目录 eg:我的Anaconda安装在&#xff…

一个简单的信号发射电路的构建

在基本的信号发射电路中,线圈(电感器)和电阻的组合可以产生振荡信号,而天线(通常通过线圈)用于发射信号。 LC振荡电路: **线圈(L1)和电容器(C)**串…

Ubuntu24多版本python解释器使用

1.前言 已给树莓派5安装了Ubuntu24.04,带有python3.12.3,现在用视觉需要用到3.11版本的python解释器 2.实操过程 主要是对用到的命令进行备份,方便后面查询 2.1 安装python3.11 sudo add-apt-repository ppa:deadsnakes/ppa sudo apt-ge…

底价竞拍成功,兴业法拍网何淑帅助高先生圆梦三居~

今日我们荣幸地向大家宣告一条喜讯。三部法拍经理何淑帅以其卓越的能力与竭诚的服务态度,成功助力高先生起拍价成交顺义裕龙六区的一套三居室。 高先生经朋友介绍与三部经理何淑帅结缘,他本身对该小区有所知晓,且正好在周边工作,何…

2.什么是计算机程序

什么是计算机程序? 计算机程序是为了告诉计算机"做某件事或解决某个问题"而用"计算机语言编写的命令集合(语句) 只要让计算机执行这个程序,计算机就会自动地、有条不紊地进行工作,计算机的一切操作都是由程序控制的,离开程序,计算机将一事无成 现实生活中你如…

JVM 基本组成

一、为什么要学习 JVM ? 1. “ ⾯试造⽕箭,⼯作拧螺丝” , JVM 属于⾯试官特别喜欢提问的知识点; 2. 未来在⼯作场景中,也许你会遇到以下场景: 线上系统突然宕机,系统⽆法访问,甚⾄直…

在向量数据库中存储多模态数据,通过文字搜索图片

在向量数据中存储多模态数据,通过文字搜索图片,Chroma 支持文字和图片,通过 OpenClip 模型对文字以及图片做 Embedding。本文通过 Chroma 实现一个文字搜索图片的功能。 OpenClip CLIP(Contrastive Language-Image Pretraining&…

Ps:脚本与动作

有三种脚本语言可用于编写 Photoshop 脚本:AppleScript(macOS)、JavaScript 和 VBScript(Windows)。 Photoshop 脚本文件默认文件夹 Win:C:\Program Files\Adobe\Adobe Photoshop 2024\Presets\Scripts Mac…

代码随想录-Day35

134. 加油站 在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。 给定两个整数数组 …

Java阻塞队列:DelayQueue

Java阻塞队列:DelayQueue 在Java的并发编程中,阻塞队列是一种非常有用的数据结构,它不仅提供了线程安全的队列操作,还在必要时会自动阻塞获取操作,直到队列变得不为空。本文将重点介绍一种特殊的阻塞队列——DelayQue…

递归与回溯 || 排列问题

目录 前言: 全排列 题解: 全排列 II 题解: 子集 题解: 组合 题解: 组合总和 题解: 电话号码的字母组合 题解: 字母大小写全排列 题解: 优美的排列 题解:…

AI虚拟数字人上线需要办理哪些资质?

近年来,随着AI 技术快速发展,虚拟数字人行业也进入了新的发展阶段。AI 技术可覆盖虚拟数字人的建模、视频生成、驱动等全流程,一方面使虚拟数字人的制作成本降低、制作周期缩短,另一方面,多模态 AI 技术使得虚拟数字人…

[面试题]缓存

[面试题]Java【基础】[面试题]Java【虚拟机】[面试题]Java【并发】[面试题]Java【集合】[面试题]MySQL[面试题]Maven[面试题]Spring Boot[面试题]Spring Cloud[面试题]Spring MVC[面试题]Spring[面试题]MyBatis[面试题]Nginx[面试题]缓存[面试题]Redis 什么是缓存?…