✅ Doris 多次查询结果不一致

【Doris 使用环境】测试

【Doris 版本】1.2.5-rc01

【问题描述】

  • 具体表现:执行select 语句固定筛选条件某一UNIQUE KEY字段查询表数据,多次查询结果不一致,偶尔返回数据为一条,偶尔返回数据为空,通过查看两次数据不一致的查询profile,发现Instances Num Per BE 是不一样的。
    请问这是什么情况,有什么排查思路?

【操作系统】

【机器配置】1 FE (4核16G ) + 3BE (8核32G)

【复现路径】select一直反复出现数据返回结果不一致

【附件】表属性设置
ENGINE=OLAP

UNIQUE KEY(puid, biz_day, fin_sign)

COMMENT ‘OLAP’

PARTITION BY RANGE(biz_day)

(PARTITION p202301 VALUES [(‘2023-01-01’), (‘2023-02-01’)),

PARTITION p202302 VALUES [(‘2023-02-01’), (‘2023-03-01’)),

PARTITION p202303 VALUES [(‘2023-03-01’), (‘2023-04-01’)),

PARTITION p202304 VALUES [(‘2023-04-01’), (‘2023-05-01’)),

PARTITION p202305 VALUES [(‘2023-05-01’), (‘2023-06-01’)),

PARTITION p202306 VALUES [(‘2023-06-01’), (‘2023-07-01’)),

PARTITION p202307 VALUES [(‘2023-07-01’), (‘2023-08-01’)),

PARTITION p202308 VALUES [(‘2023-08-01’), (‘2023-09-01’)),

PARTITION p202309 VALUES [(‘2023-09-01’), (‘2023-10-01’)))

DISTRIBUTED BY HASH(puid) BUCKETS 64

PROPERTIES (

“replication_allocation” = “tag.location.default: 3”,

“colocate_with” = “puid_group”,

“dynamic_partition.enable” = “true”,

“dynamic_partition.time_unit” = “MONTH”,

“dynamic_partition.time_zone” = “Asia/Shanghai”,

“dynamic_partition.start” = “-2147483648”,

“dynamic_partition.end” = “2”,

“dynamic_partition.prefix” = “p”,

“dynamic_partition.replication_allocation” = “tag.location.default: 3”,

“dynamic_partition.buckets” = “64”,

“dynamic_partition.create_history_partition” = “true”,

“dynamic_partition.history_partition_num” = “40”,

“dynamic_partition.hot_partition_num” = “0”,

“dynamic_partition.reserved_history_periods” = “NULL”,

“dynamic_partition.storage_policy” = “”,

“dynamic_partition.storage_medium” = “HDD”,

“dynamic_partition.start_day_of_month” = “1”,

“in_memory” = “false”,

“storage_format” = “V2”,

“compression” = “ZSTD”,

“light_schema_change” = “true”,

“function_column.sequence_col” = “update_time”,

“disable_auto_compaction” = “false”

);

关闭一下低基数字典enable_low_cardinality_optimize = false,然后重启一下BE,再看一下,如果查询准确了,就升级到1.2.6,这个在1.2.6修复了

大佬,在be.conf加了enable_low_cardinality_optimize = false重启BE之后问题还是存在

set global use_fix_replica=1 执行下这个 然后再跑呢

感谢大佬,在查询会话加这个参数查询数据是会稳定返回一条,请问这是什么原因呢?是否是这两个参数得同时设置才会生效,但这两个参数设置了是否可能会产生其他影响?测试环境现在是1.2.5-rc01,生产现在是1.2.2,最近也本来也想升级到这个版本,建议是直接升级到1.2.6吗?

直接升到1.2.6吧

好的,可否告知一下这个问题产生的可能原因呢?

这个是两次查询时,扫到了不同的副本导致的

明白,但请问下为啥一个副本有数据,一个副本却没数据,有可能是什么原因导致这种情况呢,这是否是这个版本的doris的一个bug?

这个有可能是在做数据均衡或者副本复制的过程中有其他操作影响了的,比如做了升级或者dropbe这类的操作。这个参数不会影响正常查询

好的感谢答疑,我们在升级了1.2.6版本之后这个问题已经解决了