MariaDB Connector/J 3中 useBatchMultiSend的替代方案是什么?与ProxySQL及批量查询相关的问题
MariaDB Connector/J针对批量INSERT / UPDATE语句使用了一种优化,它会在不等待响应的情况下发送包含INSERT / UPDATE语句的多个Query数据包。
然而,ProxySQL在看到来自客户端的新查询尚未对前一个查询的响应做出时,会把这视为协议错误并关闭连接。
在MariaDB Connector/J 3.0.0版本之前,可以在JDBC连接字符串中设置选项 useBatchMultiSend=false 来禁用该优化并避免不兼容性。然而,这个设置在3.0.0版本中被移除,且截至3.5.7版本,没有公开的替代方案。那么,如何让新版本的MariaDB Connector/J与 ProxySQL搭配工作而不产生兼容问题呢?
解决方案
在JDBC连接URL中使用未公开的设置 disablePipeline=true,例如:
jdbc:mariadb://127.0.0.1:6033/my_database?disablePipeline=true
据我所知,这个设置在文档中没有提及,但在问题追踪器中被其中一位开发者提及,作为针对这类问题的一个建议修复方法:https://jira.mariadb.org/projects/CONJ/issues/CONJ-1267
这个设置可以与 rewriteBatchedStatements=true 一起使用,后者通过将批量INSERT语句转换为多行插入来改变执行策略。这就仅凭这个设置在INSERT情况下确实解决了我的问题,但在处理批量UPDATE语句时仍然会出现错误,直到我添加了 disablePipeline=true。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。