建表是主键和排序键分离的,count的结果不准确

【详述】建表是主键和排序键分离的,count的结果不准确
【背景】
【业务影响】
【StarRocks版本】3.0.1
【集群规模】3fe+4be
【机器信息】48C/64G/万兆
【联系方式】社区群13-番茄西红柿,谢谢
【附件】
统计结果截图:
图一


图二

图三:正确的统计结果

建表语句:
v7_ddl.sql (1.9 KB) v4_ddl.sql (2.0 KB)

@dongquan 请问这个情况是因为建表的语句问题么? 排序键必须包含主键么?

我们测试
情况1:建表语句 排序键不包含主键, 如果查询sql语句包含排序键 就会出现数据不全的情况。
情况2:建表语句 排序键包含所有的主键, 查询sql语句包含排序键 结果就正常。

1赞

主键模型建表时 通过 order by指定排序键,3.0.4版本应该修了不少相关问题,可以升级到3.0.4版本再测试一下

@Doni 主键模型, 查询条件可以多个 排序键 作为条件 查询么?

正常是可以的,排序键会去自动创建前缀索引,之前这块有点问题,后面版本修复了

@Doni 您好,这边SR的版本已经升级到3.0.4了,数据还是查询不来,count的结果还是不对的
查询结果截图:


@Doni
情况1:
select count(sf_id)
from tzpingtaiold_tz_sdk_log_pf_order_v7
where tz_account_id=2165
能查出来 263条数据,
情况2:
select count(tz_server_id)
from tzpingtaiold_tz_sdk_log_pf_order_v7
where tz_account_id=2165
能查出来 2 条数据,

ddl:
CREATE TABLE tzpingtaiold_tz_sdk_log_pf_order_v7 (
game_id bigint(20) NOT NULL COMMENT “游戏ID 0:平台官网注册”,
channel_id bigint(20) NOT NULL COMMENT “渠道ID”,
pf_order_id varchar(65533) NOT NULL COMMENT “平台订单ID”,
sf_id bigint(20) NOT NULL COMMENT “唯一ID”,
create_time datetime NOT NULL COMMENT “创建时间”,
tz_server_id bigint(20) NULL COMMENT “区服ID”,
tz_account_id bigint(20) NULL COMMENT “平台帐号ID”,
role_id bigint(20) NULL COMMENT “角色ID”,
role_name varchar(65533) NULL COMMENT “角色名有作为筛选条件,关联角色表比较耗性能”,
real_amount bigint(20) NULL COMMENT “实际支付金额”,
total_amount bigint(20) NULL COMMENT “总金额”,
) ENGINE=OLAP
PRIMARY KEY(game_id, channel_id, pf_order_id, sf_id, create_time)
COMMENT “平台订单表”
PARTITION BY RANGE(create_time)
(PARTITION p20200101 VALUES [(“2020-01-01 00:00:00”), (“2020-01-02 00:00:00”)),
PARTITION p20230727 VALUES [(“2023-07-27 00:00:00”), (“2023-07-28 00:00:00”)))
DISTRIBUTED BY HASH(sf_id) BUCKETS 3
ORDER BY(tz_account_id, tz_server_id)

升级前前缀索引写的有问题,升级后重新建表导数 再查看看

@Doni 您好,重新建表导入后查询的结果是正确的了,想咨询一下,这种情况只能重新建表吗?有没有不用重新建表的方案?

目前暂时没有,需要重新建表导数。主要原因是前缀索引在写入的时候写错了,升级后 没办法对写错的进行纠正,目前只能通过重新建表导数写正确的进去

@Doni 如果通过 ALTER TABLE xx.xxx ORDER BY (xxxx, xxx) 的形式重新指定排序键可以吗?

理论上是可行的,不过这个版本上发现了一个alter重新指定排序键的一个bug,所以不建议您在这个版本上直接使用alter来解决这个问题。如果实在是不能重新建表,可以等我修复后给你一个临时的包试下

@zhangqiang 表太多了,重新建表的话,成本太高,如果有临时包的话,还是希望可以提高一下,谢谢。顺便问一下,临时包大概什么时候出呢?

问题已经定位了,这两天会修下,到时候我可以给你打个临时包试下

@zhangqiang 好的,感谢。顺便问一下使用alter重新指定排序键会影响数据写入吗?这个操作是异步的还是同步呢

异步的。本质是一个alter任务,alter任务不影响数据写入

@zhangqiang 好的,感谢。这边升级到3.0.4后,发现磁盘的使用率开始上涨的,这个会是什么原因导致的呢?而且数据写入的速率开始变慢了。

请问您这边修好了么?我们一个线上业务等着这个临时包才能上线 :frowning:

我可以给你基于最新的3.0分支上临时编译一个BE的二进制,留个联系方式我发给你?

@zhangqiang 好的,感谢!您看邮箱可以么?285538635@qq.com

微信号:zppwxz