c++程序调用mysql_real_query,86w条数据(每条数据32个字段)耗时在几十分钟级

【 使用环境 】生产环境 or 测试环境
测试环境
【 OB or 其他组件 】
OceanBase
【 使用版本 】OceanBase 3.1.3 (r10000292022032916-3d79cacb37012cf61b7cb8faf00d9a6bb152bcd1)
【问题描述】清晰明确描述问题
1)在c++项目中,用mysql_real_query,执行sql语句。一条语句是2000条insert into语句,数据量在400次左右,很耗时。大概在几十分钟量级,请问有什么优化上的建议吗。调用mysql_real_query是在组号sql语句之后,循环执行mysql_real_query。
2)将此项目编译成动态库之后效率更低,有什么查询方向吗?程序写和动态库执行数据库写操作,均不绑CPU核心,在同一台服务器上。(虚拟机,8核,32g)
【复现路径】问题出现前后相关操作
【问题现象及影响】

【附件】

1 个赞

语句如下
"REPLACE INTO THISPOSITION
"(FSettleDate,FOpenDate,FAccountNo,FTradeNo,FParentAccountNo,FExchangeNo,
FCommodityType,FCommodityNo,FContractNo,FCallOrPutFlag,FStrikePrice,FMatchSide,
FHedgeFlag,FPositionPrice,FPositionQty,FPositionId,FCombineType,FPositionCmbId,
FAccountMargin,FExchangeMargin,FPositionZProfit,FPositionDProfit,FOptionMarketValue,FOperatorNo,
FOperateTime,FAccountMarginRef,FExchangeMarginRef,FPositionCmbIdRef) VALUES

replace 暂时不支持并发,可以业务上改造成insert方式,同时如果可以升级可以试试并行导入功能(3.1.4支持),能提升性能。https://www.oceanbase.com/docs/community-observer-cn-10000000001879600

1 个赞