欢迎查阅本周的 Apache Doris 社区 FAQ 栏目!
在这个栏目中,每周将筛选社区反馈的热门问题和话题,重点回答并进行深入探讨。旨在为广大用户和开发者分享有关 Apache Doris 的常见问题。
通过这个每周 FAQ 栏目,希望帮助社区小伙伴更好地了解和应用 Apache Doris,促进经验交流和技术共享。
SQL问题
❓Q1 如何查看异步物化视图的创建刷新时间?
💡A1 select * from mv_infos('database'='db') where Name = 'mv_name' \G;
具体可查阅2.1异步物化视图相关表函数:
https://doris.apache.org/zh-CN/docs/sql-manual/sql-functions/table-functions/mv_infos
❓Q2 如何修改表的副本数?
💡A2 如下:
1. 机器节点数需要 >= 副本数
2. 修改历史分区副本数:alter table modify partition(*) set ("replication_num" = "3");
3. 动态分区修改未来分区副本数:ALTER TABLE example_db.mysql_table SET ("dynamic_partition.replication_num" = "3");
4. 非分区表:ALTER TABLE example_db.mysql_table SET ("replication_num" = "3");
数据操作问题
❓Q1 mysql与doris的varchar长度映射关系如何?
💡A1 如下:
MySQL Varchar * 3 = Doris Varchar
原因:
1. MySQL 中 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数
2. Doris 中 VARCHAR(M) 中括号M代表字符的长度
3. 英文字符占1个字节,中文字符占3个字节,因此直接将现有 Doris 表中 varchar 类型字段长度调整为原来的 3 倍(即能兼容全是中文字符的情况)
❓Q2 insert into select慢怎么排查?
💡A2 insert into select 慢,可以根据这个流程排查下:
1. 通过设置session var dry_run_query = true 来对问题进行细分:
a. 如果设置 dry_run_query = true 之后变快很多,那么就是数据分发以及存储节点慢了;
b. 如果设置 dry_run_query = true 之后依然很慢或者跑不出来,那么就是查询慢了。
-- dry_run_query = true 时,只跑查询部分,不在跑数据分发以及存储,所以可以用来快速排查是不是查询慢了。
-- 2.0.2-rc05 之后支持的
注意:dry_run_query 不要设置为 global,并且打开后需要设置回去,不然会查不到数据。
2. 如果是数据分发或者存储节点慢
可以通过 top -H 以及 IOutil 的信息来判断是 cpu 还是 IO 瓶颈
具体可以查阅Doris论坛帖子:
https://ask.selectdb.com/questions/D1tg/jie-jue-fang-an-insert-into-select-man-pai-cha-fang-fa
❓Q3 多副本表多次查询结果不一致
💡A3 如下:
1. 确认上游是否存在实时更新数据的情况
2. 指定分片 set use_fix_replica = 0; 默认-1、随机查一个副本,看结果是否唯一
3. 定位到1个tablet,排查该tablet的3个副本的version是不是相同的,若不一致则置空不正确的副本,自动修复一份即可:
ADMIN SET REPLICA STATUS PROPERTIES("tablet_id" = "10001", "backend_id" = "20001", "status" = "bad");
运维常见问题
❓Q1 启动be报异常:./start_be.sh: line 246: 66385 Aborted ${LIMIT:+${LIMIT}} "${DORIS_HOME}/lib/doris_be" "$@" 2>&1 < /dev/null
💡A1 如下:
1. 一般是doris包和机器cpu架构不匹配:be/lib/doris_be -v 和 uname -a 看看型号是否匹配
2. max_map_count等必调参数被改动
3. 其它原因可在be start脚本中加日志定位或社区论坛发帖求助
❓Q2 是否有方法可以手动均衡某个节点的数据?
💡A2 一般be节点间会自动均衡,手动触发迁移tablet api:
https://doris.apache.org/zh-CN/docs/dev/admin-manual/http-actions/be/tablet-migration
❓Q3 profile是否建议全局开启
💡A3 不建议全局开启profile,因为开启profile会正常查询造成影响,耗时会增大;建议在使用时session级别开启profile即可。
❓Q4 doirs是否和hadoop一样只需要裸盘,不需要做raid
💡A4 不需要raid,建议直接多个磁盘目录即可。
其它问题
❓Q doris表的key列为什么必须要放在其他列前面?
💡A 如下:
- 方便排序检索
- 提高可读性,清晰地看到每行数据的唯一标识
- 提升查询性能,例如前缀索引等场景:
https://doris.apache.org/zh-CN/docs/data-table/index/index-overview/