执行insert sql后怎么判断新增数据是否可见

【详述】执行insert sql后怎么判断新增数据可见
【导入/导出方式】
【背景】无
【业务影响】
【StarRocks版本】2.2.1
【集群规模】3fe+10be(fe与be混部)
【机器信息】40C/120G/万兆
【附件】
如下图,在mysql交互界面执行完insert sql后会返回load label,transaction status和transaction id。但如果是在脚本里执行mysql -e,则拿不到transaction status和transaction id,进而无法判断当前的transaction status是visible,还是committed,即新增的数据是否可见。也就无法进行下一步依赖该批新增数据的操作。


通过show load 也只能拿到load的state状态,无法获取到transaction status和transaction id

我理解这块数据插入后是立刻就能visible的,请问下咱们遇到过不能visible的状况么?

insert sql执行完后status为committed的情况很多,我们这边执行insert的数据量都比较大

您好目前大批量的数据还不太建议使用insert into呢可能会引起版本合并的问题

请问starrocks里表之间数据的导入,除了insert,还可以用哪种方式比较合适呢

不仅insert into会有这种情况,broker load也有,broker load的state变为了finished,但对应的transaction status是committed,也就是数据还不可见。目前也没有好的办法来获取到broker load的transaction status。但doris是有show transaction where label={load label}这种语法的,请问starrocks什么时候可以支持这语法呢

怎么查看导入作业的事务明细 参见这个吧 :joy:

这帖子也是我发的。。

如果有新的需求的话可以去github上面提issue

好的,我去github上提issue

同问,这种sr里表直接的数据,怎么插入呢?构建数仓的时候,难免会从ods表处理后插入dwd的表中

兄弟,不好意思我们是支持 show transaction where id={load txnid} 这种语法的
https://docs.starrocks.com/zh-cn/main/sql-reference/sql-statements/data-manipulation/SHOW%20TRANSACTION#示例

insert into select目前是没问题的,insert into values 目前建议少用。

但我需要的是show transaction where label={load label}这种语法,insert into with label只能指定load label,拿不到transactionId

加这个参数试试 target.allowPublicTimeout=true

请问这个参数是加在哪儿呢,我在sr官方文档、be参数、fe参数、session参数里面都没有找到这个参数

有些参数是官网查不到的,这个是数据库运维告诉我的