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;
3. fe.conf配置
3.1)priority_networks配置指定IP
priority_networks = 172.17.22.28
4. be.conf配置
4.1)priority_networks配置指定IP
priority_networks = 172.17.22.28