跳到主要内容
版本: 最新版本-3.5

Duplicate Key 表

Duplicate Key 表是 StarRocks 中的默认模型。如果您在创建表时未指定模型,则默认情况下会创建 Duplicate Key 表。

创建 Duplicate Key 表时,可以为该表定义排序键。如果筛选条件包含排序键列,StarRocks 可以快速从表中筛选数据,从而加速查询。

Duplicate Key 表适用于分析日志数据等场景。它支持追加新数据,但不支持修改历史数据。

使用场景

Duplicate Key 表适用于以下场景

  • 分析原始数据,例如原始日志和原始操作记录。
  • 使用多种方法查询数据,不受预聚合方法的限制。
  • 加载日志数据或时序数据。新数据以仅追加模式写入,并且现有数据不会更新。

创建表

假设您要分析特定时间范围内的事件数据。在此示例中,创建一个名为 detail 的表,并将 event_timeevent_type 定义为排序键列。

创建表的语句

CREATE TABLE detail (
event_time DATETIME NOT NULL COMMENT "datetime of event",
event_type INT NOT NULL COMMENT "type of event",
user_id INT COMMENT "id of user",
device_code INT COMMENT "device code",
channel INT COMMENT "")
ORDER BY (event_time, event_type);

使用说明

  • 排序键

    从 v3.3.0 开始,Duplicate Key 表支持使用 ORDER BY 指定排序键,可以是任何列的组合。如果同时使用 ORDER BYDUPLICATE KEY,则 DUPLICATE KEY 不生效。如果既不使用 ORDER BY 也不使用 DUPLICATE KEY,则默认情况下使用表的前三列作为排序键。

  • 分桶

    • 分桶方法:

    从 v3.1.0 开始,StarRocks 支持 Duplicate Key 表的随机分桶(默认分桶方法)。创建表或添加分区时,无需设置哈希分桶键(即 DISTRIBUTED BY HASH 子句)。在 v3.1.0 之前,StarRocks 仅支持哈希分桶。创建表或添加分区时,需要设置哈希分桶键(即 DISTRIBUTED BY HASH 子句),否则表将无法创建。有关哈希分桶键的更多信息,请参阅 哈希分桶

    • Bucket 数量:从 v2.5.7 开始,StarRocks 可以在您创建表或添加分区时自动设置 Bucket 的数量 (BUCKETS)。您不再需要手动设置 Bucket 的数量。有关详细信息,请参阅 设置 Bucket 数量
  • 创建表时,可以在表的所有列上创建 Bitmap 索引或 Bloom Filter 索引。

下一步做什么

创建表后,您可以使用各种数据摄取方法将数据加载到 StarRocks 中。有关 StarRocks 支持的数据摄取方法的信息,请参阅加载选项

注意
  • 将数据加载到使用 Duplicate Key 表的表中时,您只能将数据附加到该表。您无法修改表中的现有数据。
  • 如果加载两条相同的记录,Duplicate Key 表会将它们保留为两条记录,而不是一条。