【落盘性能】StarRocks在落盘方面的性能劣于Spark-SQL

5千万条

取12个字段

直接在client里查询返回,受限于mysql-client的接受处理能力是很慢的,你可以试试把这种大数据集的查询结果导出到文件里,速度会快一些

或者可以试试select into outfile

回复到另一个帖子去了,关于大数据量的问题,我们尝试过返回limit 10, 不做大数据量的返回,但是对比结果还是StarRocks无优势

将结果导出到文件,字段的类型很受限:
1.这是导出到CSV的报错,ERROR 1064 (HY000): Getting analyzing error. Detail message: Type ARRAY<struct<RsrpRslt bigint(20), RsrqRslt decimal128(38, 9), SinrRslt decimal128(38, 9), SsbBeamID int(11), SsbIndex int(11)>> is not supported for CSV outfile.
2.这是导出到parquet的报错:ERROR 1064 (HY000): Getting analyzing error. Detail message: Type LARGEINT is not supported for PARQUET outfile.

sr里SELECT * FROM table_b limit 10不可能慢,肯定是毫秒级

或者可以给个建议吗,我们的场景是:一个微服务处理了parquet后,经过sql查询,得到的结果,怎么给另一个微服务用。是写入到hdfs还是内部表,哪种方式落盘最快?

写内部表落盘快,但还要看另一个微服务怎么使用这么大的一个结果集,也是全量读的话内部还需要再导出来快一些,直接select *会慢。

另外落盘starrocks的话还可以使用单副本写的功能加速,https://docs.starrocks.io/zh/docs/3.1/sql-reference/sql-statements/data-definition/CREATE_TABLE/#指定数据在多副本间的写入和同步方式

下游微服务是通过mysql直接读取SR的内部表

如果下游就是普通的点查或者范围查、计算等,而非全量读的话,可以直接落盘sr里,使用单副本写加速写入

我们用的是3.1.4的版本,默认开启了单副本写加速,但对比下来,落盘速度不及Spark-SQL,是SR本身在落盘方面不擅长吗?

sr里写入是事务操作,会有额外的开销。不过你写入多少数据用了15秒?

6.7千万条数据,12个字段,SR耗时15秒,Spark-SQL耗时5秒

1

能到fe leader的日志里搜下2300这个事务id,看下各阶段耗时吗

finish transaction TransactionState. txn_id: 2300, label: insert_a7e15c2b-adc9-11ee-8bb6-02422059220b, db id: 10004, table id list: 26820, callback id: -1, coordinator: FE: 7.189.49.48, transaction status: VISIBLE, error replicas num: 0, replica ids: , prepare time: 1704679211187, commit time: 1704679227041, finish time: 1704679227054, write cost: 15854ms, wait for publish cost: 2ms, publish rpc cost: 4ms, finish txn cost: 7ms, publish total cost: 13ms, total cost: 15867ms, reason: attachment: com.starrocks.transaction.InsertTxnCommitAttachment@5ca63796 successfully

这个也帮忙在leader fe节点执行获取下profile