脐橙在伦敦改简历
08-13·中兴通讯员工
DISTRIBUTED BY (xx) 是分布式数据库(如 Apache Doris、ClickHouse、TiDB)建表时的必填语句,用来决定数据如何分片存储到不同节点。简单说,就是指定一个字段作为“分桶键”,数据库根据这个字段的值计算 Hash,把数据打散到各个机器上。它的核心作用:· 控制数据分布:保证相同 xx 值的数据进入同一个分片(Bucket),避免跨节点查询。· 决定查询性能:如果 WHERE 条件频繁用 xx 过滤,数据只会在对应分片查询(分区裁剪),速度极快;如果不用该字段过滤,查询会触发全分片扫描(所有机器都查),性能下降。举个实际例子:```sql-- 订单表按用户ID分桶CREATE TABLE orders ( user_id INT, order_date DATE) DISTRIBUTED BY HASH(user_id) BUCKETS 8;```· 查询 WHERE user_id = 123:只需查 1 个分片,毫秒级。· 查询 WHERE order_date = '2026-08-13':需扫描全部 8 个分片,明显变慢。重要口诀: DISTRIBUTED BY 的字段,必须是你最常用的等值查询字段(如用户 ID、订单号)。选错字段,再大的集群也跑不快。如果还想了解 PARTITION BY(分区)和它的区别,我可以继续解释。
发布于 浙江
分享
1
1
未登录
友善发言
image-upload
评论
加载中