在 TCHouse-C腾讯云云原生 ClickHouse中创建分布式表核心遵循 ClickHouse 的标准架构模式先创建存储数据的本地表Local Table再创建指向这些本地表的分布式表Distributed Table。TCHouse-C 作为云原生弹性版底层基于存算分离架构但在 SQL 语法层面完全兼容开源 ClickHouse 。1. 核心创建流程与代码示例创建过程分为两步首先定义数据落盘的本地表结构然后定义负责路由分发的分布式表。第一步创建本地表 (Local Table)本地表是实际存储数据的实体通常在集群的每个分片Shard上执行。需指定引擎为MergeTree系列并定义排序键。-- 在集群的每个节点上执行此语句 -- 数据库名default, 表名user_local CREATE TABLE default.user_local ON CLUSTER tchouse_c_cluster ( user_id UInt64 COMMENT 用户 ID, event_time DateTime COMMENT 事件时间, action_type String COMMENT 行为类型, amount Decimal(18, 2) COMMENT 金额 )ENGINE MergeTree() PARTITION BY toYYYYMM(event_time) -- 按月分区 ORDER BY (user_id, event_time) -- 排序键必须包含主键或常用查询字段 SETTINGS index_granularity 8192;注ON CLUSTER tchouse_c_cluster子句用于在 TCHouse-C集群的所有分片上自动同步执行建表语句无需手动逐台连接 。第二步创建分布式表 (Distributed Table)分布式表本身不存储数据仅作为路由层将写入请求分发到后端的本地表或将查询请求聚合后返回。-- 仅在任意一个节点执行一次即可若使用了 ON CLUSTER 则会自动同步 -- 数据库名default, 表名user_all CREATE TABLE default.user_all ON CLUSTER tchouse_c_cluster ( user_id UInt64, event_time DateTime, action_type String, amount Decimal(18, 2) ) ENGINE Distributed(tchouse_c_cluster, default, user_local, rand());参数解析tchouse_c_clusterTCHouse-C 实例内部的集群名称需在控制台确认具体集群名。default本地表所在的数据库名。user_local第一步创建的本地表名称。rand()分片键Sharding Key。此处使用随机函数将数据均匀打散到各分片若需按业务主键如user_id路由可替换为user_id。2. 关键配置与写入策略在通过分布式表写入数据时TCHouse-C 支持同步与异步两种模式需根据业务对一致性和吞吐量的要求进行配置。| 配置项 | 参数名称 | 默认行为 | 适用场景 | 风险/优势 || :--- | :--- | :--- | :--- :--- ||同步写入|insert_distributed_sync| 0 (异步) | 金融对账、强一致性要求场景 |优势确保数据已落盘到本地分片才返回成功。劣势延迟较高受限于最慢分片性能 。 ||异步写入|insert_distributed_sync0| 开启 | 日志采集、高吞吐实时监控 |优势写入极快立即返回。风险若节点故障缓冲区数据可能丢失需配合重试机制 。 ||批量聚合|async_insert| 0 (关闭) | 高频小批量写入场景 | 将多次小写入合并为一次大写入显著降低 MergeTree 合并压力提升吞吐量 。 |代码示例设置会话级同步写入以确保数据可靠性-- 在当前会话中开启同步写入确保 INSERT语句等待所有分片确认 SET insert_distributed_sync 1; -- 执行插入操作此时只有当数据在所有相关分片的本地表落盘后语句才会返回成功 INSERT INTO default.user_all (user_id, event_time, action_type, amount) VALUES (1001, 2023-10-27 10:00:00, click, 0.00), (1002, 2023-10-27 10:00:05, buy, 99.50);3. TCHouse-C 云原生特性适配在使用 TCHouse-C 构建实时数仓时需注意其云原生架构带来的最佳实践存算分离架构TCHouse-C 采用计算与存储分离设计创建表时无需关心底层磁盘挂载扩容计算节点即可提升写入/查询并发能力适用于 Oceanus (Flink) 等上游来源的高并发写入场景 。集群名称确认不同于自建 ClickHouse 修改config.xmlTCHouse-C 的集群名称如tchouse_c_cluster由云平台统一管理建表前务必在腾讯云控制台的实例详情页获取准确的集群标识否则ON CLUSTER语句会报错。分层设计建议在实时数仓建设中建议利用分布式表作为 ODS 层接入层配合 Flink DataSync 进行多链路分发再下沉至明细层DWD本地表以实现端到端延迟≤200ms 的性能指标 。参考来源OceanusTCHouse-C 构建轻量云原生实时数仓实战一文通览腾讯云大数据ES、数据湖计算、云数据仓库产品新版本技术创新【腾讯云 TDSQL-C Serverless 产品体验】TDSQL-C MySQL Serverless实践之路Clickhouse异步/同步写入配置详解大数据产品深度与广度并举腾讯云为数据价值释放带来最优解