1. 发生 “close index channel failed” 和 “too many tablet versions” 错误应该如何处理?
上述报错是因为导入频率太快,数据没能及时合并 (Compaction) ,从而导致版本数超过支持的最大未合并版本数。默认支持的最大未合并版本数为 1000。可以通过如下方法解决上述报错:
-
增大单次导入的数据量,降低导入频率。
-
修改 BE 配置文件 be.conf 中相关参数的配置,以加快 Compaction:
-
对于明细表、聚合表和更新表,可以适当调大
cumulative_compaction_num_threads_per_disk
、base_compaction_num_threads_per_disk
和cumulative_compaction_check_interval_seconds
的值。例如:1
2
3cumulative_compaction_num_threads_per_disk = 4
base_compaction_num_threads_per_disk = 2
cumulative_compaction_check_interval_seconds = 2 -
对于主键表,可以适当调大
update_compaction_num_threads_per_disk
的值。适当调小update_compaction_per_tablet_min_interval_seconds
的值。
修改完成后,需要观察内存和 I/O,确保内存和 I/O 正常。
-
curl -XPOST http://172.20.85.188:8040/api/update_config?tablet_max_versions=10000
动态修改分桶是生效的
1 | ALTER TABLE BAOFOO_CM_V2.cm_entry_asy_ma SET ("dynamic_partition.buckets" = "9") |
动态修改分区周期是生效的,
1 | ALTER TABLE test_db.`yq_protocol_payment_order2` SET ("dynamic_partition.time_unit" = "month"); |
START (“2022-01-10”) END (“2025-01-01”) EVERY (interval 1 month) 这种方式添加分区要注意周期的结束时间
但是要注意结束的周期, 必须手动补全缺失的分区
例如 按小时分区改成按天分区,就会丢失15:00 到24点的分区
1 | PARTITION p2024081914 VALUES [("2024-08-19 14:00:00"), ("2024-08-19 15:00:00")), |
#小时到天是有问题的
#天到周没有问题,
1 | PARTITION p20240817 VALUES [('2024-08-17 00:00:00'), ('2024-08-18 00:00:00')), |
2.3版本不支持小时和年分区