StarRocks数据导入慢问题解决
一、问题描述
依据StarRocks官网快速开始安装教程,用docker compose安装了starrocks,log模块从rabbitMq的队列批量获取log消息,发现队列消息有堆积,一晚上下来大概能对接4000条消息。经单元测试发现insert into到starrocks中时间竟然相差几百倍。
mysql每条insert sql执行3.5ms
starrocks每条insert sql执行672ms
二、问题分析
因是初次安装使用starrocks,对starrocks并不熟悉,但网络等各方面都正常情况下持续存在一条sql执行时间达到672ms肯定是有问题。因无报错,一时无法下手,刚开始怀疑是docker部署单机版的starrocks安装或配置有问题。docker重新部署以及按这个方向查有关资料都无果。后有幸得到此篇文章的参考学习:https://blog.csdn.net/ult_me/article/details/122823687。高频的insert into语句极大会给starrocks造成极大的压力。且单元测试的打印日志来看mybaitsPlus的批量插入saveBatch也是单条插入。那我们就按参考的文章所推荐的,用一个inser into插入多笔数据的语句。
starrocks insert into总结
三、解决办法
1)数据库连接增加参数:rewriteBatchedStatements=true
增加次参数mabaitsPlus可saveBatch可一个insert into执行多条
2)xml映射文件拼接
总结:两种方式时间在starrocks执行insert时间基本和在mysql上批量执行执行差不多,第二种效率更高