📣

TiDB Cloud Serverless 现已更名为
Starter
!此页面由 AI 自动翻译,英文原文请见
此处。

Table Attributes

Table Attributes 功能在 TiDB v5.3.0 版本中引入。使用该功能,你可以为表或分区添加特定属性,以执行对应属性的操作。例如,你可以使用 table attributes 来控制 Region 合并行为。

目前,TiDB 仅支持向表或分区添加 merge_option 属性,以控制 Region 合并行为。merge_option 属性只是处理热点问题的一部分。

使用方法

表属性的格式为 key=value。多个属性之间用逗号分隔。在以下示例中,t 表示要修改的表名,p 表示要修改的分区名。[] 中的内容为可选项。

  • 为表或分区设置属性:

    ALTER TABLE t [PARTITION p] ATTRIBUTES [=] 'key=value[, key1=value1...]';
  • 重置表或分区的属性:

    ALTER TABLE t [PARTITION p] ATTRIBUTES [=] DEFAULT;
  • 查看所有表和分区的属性:

    SELECT * FROM information_schema.attributes;
  • 查看某个表或分区配置的属性:

    SELECT * FROM information_schema.attributes WHERE id='schema/t[/p]';
  • 查看所有具有特定属性的表和分区:

    SELECT * FROM information_schema.attributes WHERE attributes LIKE '%key%';

属性覆盖规则

配置在表上的属性对该表的所有分区生效,但有一个例外:如果表和分区配置了相同的属性但属性值不同,则分区的属性会覆盖表的属性。例如,假设表 t 配置了 key=value 属性,而分区 p 配置了 key=value1

ALTER TABLE t ATTRIBUTES[=]'key=value'; ALTER TABLE t PARTITION p ATTRIBUTES[=]'key=value1';

在这种情况下,key=value1 才是实际在 p 分区上生效的属性。

使用表属性控制 Region 合并行为

用户场景

如果存在写入热点或读取热点,可以使用表属性控制 Region 合并行为。你可以先为表或分区添加 merge_option 属性,然后将其值设置为 deny。具体场景如下。

新创建的表或分区出现写入热点

当在新创建的表或分区写入数据时出现热点问题,通常需要进行 Region 拆分和分散操作。然而,如果拆分/分散操作与写入操作之间存在一定时间间隔,这些操作实际上并不能真正避免写入热点。因为在创建表或分区时执行的拆分会产生空的 Region,如果时间间隔存在,拆分的 Region 可能会被合并。为应对这种情况,你可以为表或分区添加 merge_option 属性,并将其值设置为 deny

只读场景下的周期性读取热点

假设在只读场景中,你试图通过手动拆分 Region 来减少周期性读取热点,并且不希望在热点问题解决后手动拆分的 Region 被合并。在这种情况下,可以为表或分区添加 merge_option 属性,并将其值设置为 deny

使用方法

  • 阻止表的 Region 合并:

    ALTER TABLE t ATTRIBUTES 'merge_option=deny';
  • 允许合并属于某个表的 Region:

    ALTER TABLE t ATTRIBUTES 'merge_option=allow';
  • 重置表的属性:

    ALTER TABLE t ATTRIBUTES DEFAULT;
  • 阻止分区的 Region 合并:

    ALTER TABLE t PARTITION p ATTRIBUTES 'merge_option=deny';
  • 允许分区的 Region 合并:

    ALTER TABLE t PARTITION p ATTRIBUTES 'merge_option=allow';
  • 查看配置了 merge_option 属性的所有表或分区:

    SELECT * FROM information_schema.attributes WHERE attributes LIKE '%merge_option%';

属性覆盖规则

ALTER TABLE t ATTRIBUTES 'merge_option=deny'; ALTER TABLE t PARTITION p ATTRIBUTES 'merge_option=allow';

当同时配置上述两个属性时,属于分区 p 的 Region 实际上可以被合并。当分区的属性被重置后,分区 p 会继承表 t 的属性,此时 Region 不会被合并。

文档内容是否有帮助?