
# 广播表和单表的使用场景
#### 单表
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万条数据），不建议使用广播表，以免占用太多数据空间，可以使用拆分表。
 
