StarRocks配置

1. 设置用户名和密码

1.1) 修改root密码

登陆

mysql -h FE_HOST -P9030 -uroot

fe_host 是任一 FE 节点的 ip 地址。9030 是 fe.conf 中的 query_port 配置。

设置密码:

SET PASSWORD FOR 'root' = PASSWORD('root');

1.2) 创建新用户

CREATE USER 'test' IDENTIFIED BY 'test_passwd';

后续登陆可以使用新创建的用户登陆

mysql -h FE_HOST -P9030 -uwenbronk -pa75

授权: 需要先建库

GRANT ALL ON example_db TO wenbronk;

2. 高级设置

2.1) 增大内存

内存不够时, 查询可能会出现‘Memory limit exceeded’, 这是因为doris对每个用户默认设置内存限制为 2g

mysql> show variables like '%mem_limit%';
+----------------+------------+
| Variable_name  | Value      |
+----------------+------------+
| exec_mem_limit | 2147483648 |
| load_mem_limit | 0          |
+----------------+------------+
2 rows in set (0.00 sec)

可以修改为 8g

SET exec_mem_limit = 8589934592;

上述设置仅仅在当前session有效, 如果想永久有效, 需要添加 global 参数

SET GLOBAL exec_mem_limit = 8589934592;

2.2) 修改超时时间

doris默认最长查询时间为300s, 如果仍然未完成, 会被cancel掉

mysql> SHOW VARIABLES LIKE "%query_timeout%";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| QUERY_TIMEOUT | 300   |
+---------------+-------+
1 row in set (0.00 sec)

可以修改为60s

SET query_timeout = 60;

同样, 如果需要全局生效需要添加参数 global

set global query_timeout = 60;

2.3) Broadcast/Shuffle Join

doris在join操作的时候时候, 默认使用broadcast的方式进行join, 即将小表通过广播的方式广播到大表所在的节点, 形成内存hash, 然后流式读出大表数据进行hashjoin

但如果小表的数据量也很大的时候, 就会造成内存溢出, 此时需要通过shuffle join的方式进行, 也被称为partition join. 即将大表小表都按照join的key进行hash, 然后进行分布式join

braodcast join

select sum(table1.pv) from table1 join table2 where table1.siteid = 2;

显示制定braodcast

select sum(table1.pv) from table1 join [broadcast] table2 where table1.siteid = 2;

suffle join

select sum(table1.pv) from table1 join [shuffle] table2 where table1.siteid = 2;

 

上一篇:sql的 排序与分页


下一篇:【翻译】SQL Server索引进阶:第十三级,插入,更新,删除