高级使用指南

高级使用指南

表结构变更

使用ALTER TABLE 命令可以修改表的Schema,包括如下修改:

  • 增加列
  • 删除列
  • 修改列类型
  • 改变列顺序

新增一列uv,类型为BIGINT,聚合类型为SUM,默认值为0:

ALTER TABLE table1 ADD COLUMN uv BIGINT SUM DEFAULT '0' after pv;

提交成功后,可以通过以下命令查看作业进度:

SHOW ALTER TABLE COLUMN;

当作业状态为FINISHED,则表示作业完成.
可以使用以下命令取消当前正在执行的作业:

CANCEL ALTER TABLE COLUMN FROM table1

Rollup

Rollup可以理解为Table的一个物化索引结构.物化是因为其结构在物理上独立存储,而索引的意思是,Rollup可以调整列顺序以增加前缀索引的命中率,也可以减少key列以增加数据的聚合度.
原表table1的Schema如下:
在这里插入图片描述

对于table1明细数据是siteid、citycode和username三者构成一个key,从而对pv字段进行聚合;如果业务方经常看城市pv总量的需求,可以建立一个只有citycode、pv的rollup.

ALTER TABLE table1 ADD ROLLUP rollup_city(citycode, pv);

提交成功后,可以通过以下命令查看作业进度:

SHOW ALTER TABLE ROLLUP;

Rollup建立完成之后可以使用DESC table1 ALL查看表的Rollup信息.
可以使用依稀命令取消正在执行的作业:

CANCEL ALTER TABLE ROLLUP FROM table1;

数据表的查询

内存限制

当个BE节点上默认使用不超过2GB内存.如果发现抱Memory limit exceeded错误,一般是超过内存限制了.
如果确切发现2GB内存不能满足,可以手动设置内存参数.
显示查询内存限制:

SHOW VARIABLES LIKE "%mem_limit%"

exec_mem_limit的单位是byte,可以通过set命令改变exec_mem_limit的值.
以上修改是session级别,仅在当前连接session内有效,断开重连则会变回默认值.
如果需要修改全局变量,可以这样设置:

SET GLOBAL exec_mem_limit = XXX

设置完成后,断开session重新登陆,参数将永久生效.

查询超时

当前默认查询时间设置最长为300秒,如果一个查询在300秒内没有完成,则查询会被Doris系统cancel掉.用户可以通过这个参数来定制自己应用的超时时间,实现类似wait(timeout)的阻塞方式.
查看当前超时设置:

SHOW VARIABLES LIKE "%query_timeout%";

修改超时时间到1分钟:

SET query_time = 60;
  • 当前超时的检查间隔为5秒,所以小于5秒的超时不会太准确.
  • 以上修改同样为session级别,可以通过SET GLOBAL修改全局有效.

Broadcast/Shuffle Join

  • 系统默认实现Join方式,将小表进行条件过滤后,将其广播到大表所在的各个节点上,形成一个内存Hash表,然后流式读出大表的数据进行Hash Join.但是如果当小表过滤后的数据量无法放入内存的话,此时Join将无法完成.通常报错应该是首先造成内存超限.
  • 如果遇到上述情况,建议显示指定Shuffle Join,也被称作Partitioned Join.即将小表和大表都按照Join的key进行Hash,然后进行分布式的Join.这个对内存的消耗就会分摊到集群的所有计算节点上.
  • Doris回自动尝试进行Broadcast Join,如果预估小表过大则会自动切换至Shuffle Join.注意,如果此时显示指定了Broadcast Join也会自动切换至Shuffle Join.

查询重试和高可用

当部署多个FE节点时,用户可以在多个FE之上部署负载均衡层来实现Doris的高可用.
以下提供一些高可用方案:

  • 第一种
    自己在应用层代码进行重试和负载均衡.比如发现一个连接挂掉,就自动在其他连接上进行重试.应用层重试需要应用自己配置多个doris前端节点地址.
  • 第二种:
    如果使用mysql jdbc connector来连接Doris,可以使用jdbc的自动重试机制.
  • 第三种:
  • 应用可以连接到和应用部署到同一机器上的MySQL Proxy,通过配置MySQL Proxy的Failover和Load Balance功能来达到目的.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值