Doris数据变更规范
该章节主要介绍Doris数据变更时需遵循的规则和建议。
Doris数据变更规则
- 应用程序不能直接使用delete或者update语句变更数据,可以使用CDC的upsert方式来实现。
- 不建议业务高峰期或在表上频繁地进行加减字段,建议在业务前期规划建表时预留将来要使用的字段。如果必须添加或删除字段,及修改字段类型和注释,需在业务低峰期,停止相关表的写入和修改业务后,通过重建表方式实现以上操作:
- 新建一个表,该表结构和需进行增删改字段的表结构相同。在新建表中增加需要添加的新字段、删除不需要的字段、或修改需改变类型的字段。
- 选取指定字段数据插入到新创建的表中:
INSERT INTO 新创建的表 SELECT 指定的字段 FROM 已存在需要修改列的表;
如果表数据量较大,可按时间过滤分批次将数据导入到新表,减小CPU或MEM内存瞬时冲高占用问题,影响查询业务,命令为:
insert into tab1 select col from tab where date <= xx;
- 交换两个表的名称,更多介绍请参见交换表:
ALTER TABLE [db.]tbl1 REPLACE WITH TABLE tbl2 [PROPERTIES('swap' = 'true')];
- 对于部分查询,可能执行时间比较长,查询比较耗费内存和CPU等资源,需要在SQL或user级别设置查询超时时间参数:query_timeout
Doris数据变更建议
执行特殊的大SQL操作时,可以使用类似SELECT /*+ SET_VAR(query_timeout = xxx*/ from table通过Hint方式设置Session会话变量,不要设置全局的系统变量。