文档首页/ 分布式数据库中间件 DDM/ 最佳实践/ 广播表和单表的使用场景
更新时间:2024-03-28 GMT+08:00
分享

广播表和单表的使用场景

单表

DDM管理控制台不提供单表创建操作,用户可以通过MySQL客户端或应用程序连接到DDM实例后自行创建。

如果一张表的数据量预估在1000万条以下,且没有与其他拆分表进行关联查询的需求,建议将其设置为单表类型,存储在默认分片中。

单表创建样例,不做任何拆分:

CREATE TABLE single(
id int NOT NULL AUTO_INCREMENT COMMENT '主键id',
name varchar(128),
PRIMARY KEY(id)
);

广播表

在业务数据库中,存在一些数据量不大,更新频率较低,但常常需要用来做关联查询的表。

为了方便这类表与拆分表进行关联操作,DDM实例提供了一种“广播表”,广播表具有以下特点:
  • 广播表在各分片中数据一致。插入、更新和删除数据会实时在每一个分片中执行。
  • 对广播表的查询,仅在一个分片中执行。
  • 任何表都可以与广播表进行关联操作。
  • 使用广播HINT的前提是需要确保表的存在性。

例如:

电商企业的订单管理系统,需要查询并统计某个地区的订单数据。这种场景会涉及到地区表与订单流水表进行关联查询,由于订单数据量庞大,订单流水表需要分片存储,因此可以考虑将地区表设计为“广播表”,提高查询效率。

广播表创建样例:

CREATE TABLE broadcast_tbl (
id int NOT NULL AUTO_INCREMENT COMMENT '主键id',
name varchar(128),
PRIMARY KEY(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
BROADCAST;

对广播表进行操作时应注意以下两点:

  • 如果执行全表扫描的SQL语句,建议执行频率不要过高,或者选择在业务低峰期执行,否则可能会出现“后端RDS连接数可能不够用”报错。
  • 广播表的插入操作,会在每个分片的表中进行插入。如果此表数据量太大(超过100万条数据),不建议使用广播表,以免占用太多数据空间,可以使用拆分表。

相关文档