From 014b34bebb0abac6077010572bc3b4d48b6c1e48 Mon Sep 17 00:00:00 2001 From: zy-kkk Date: Mon, 17 Jul 2023 17:39:26 +0800 Subject: [PATCH] [enhancement](jdbc catalog) Add mysql jdbc url param `rewriteBatchedStatements=true` (#21864) When `rewriteBatchedStatements=false`, the JDBC driver will not merge multiple insert statements into one larger insert statement. Therefore, during the batch insertion process, each insert statement needs to be sent to the MySQL server individually, leading to a higher number of network roundtrips. Network latency could potentially be a significant factor contributing to the performance degradation. For this reason, we propose to set this parameter to true by default, to enhance the performance of prepared statement batch inserts. --- .../src/main/java/org/apache/doris/catalog/JdbcResource.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/JdbcResource.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/JdbcResource.java index 2e8a71f92aab18..8a76b2bc348318 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/JdbcResource.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/JdbcResource.java @@ -303,10 +303,11 @@ public static String handleJdbcUrl(String jdbcUrl) throws DdlException { // However when tinyInt1isBit=false, GetColumnClassName of MySQL returns java.lang.Boolean, // while that of Doris returns java.lang.Integer. In order to be compatible with both MySQL and Doris, // Jdbc params should set tinyInt1isBit=true&transformedBitIsBoolean=true - newJdbcUrl = checkAndSetJdbcBoolParam(newJdbcUrl, "tinyInt1isBit", "true", "true"); - newJdbcUrl = checkAndSetJdbcBoolParam(newJdbcUrl, "transformedBitIsBoolean", "true", "true"); + newJdbcUrl = checkAndSetJdbcBoolParam(newJdbcUrl, "tinyInt1isBit", "false", "true"); + newJdbcUrl = checkAndSetJdbcBoolParam(newJdbcUrl, "transformedBitIsBoolean", "false", "true"); // set useUnicode and characterEncoding to false and utf-8 newJdbcUrl = checkAndSetJdbcBoolParam(newJdbcUrl, "useUnicode", "false", "true"); + newJdbcUrl = checkAndSetJdbcBoolParam(newJdbcUrl, "rewriteBatchedStatements", "false", "true"); newJdbcUrl = checkAndSetJdbcParam(newJdbcUrl, "characterEncoding", "utf-8"); if (dbType.equals(OCEANBASE)) { // set useCursorFetch to true