Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
3.5.1
-
MariaDb servers below 10.2.6 (all EoL)
MySql servers in general (tested in 9.1.0)
Description
A recent change has caused a performance degradation on loads to older MariaDb servers (below 10.2.6), which are out of support, but maybe more relevant also to mySql servers (servers that lack the MARIADB_CLIENT_STMT_BULK_OPERATIONS feature flag).
The relevant change is on clientPreparedStatement.java:
https://github.com/mariadb-corporation/mariadb-connector-j/commit/ce9b23c2413d884fdb75e5030b698ee95824bced
Maybe I'm missing the context on why this was needed, but in case this is an unintended change:
In our setup, for those servers, the flow in executeInternalPreparedBatch() would eventually call executeBatchPipeline(), now, given the change, it's calling executeBatchStd().
I didn't dig into why, but in my testing that causes a load to take substantially longer. The whole process of extracting and loading a small amount of data jumps from 8s to over 1 min with just the update from 3.5.0 to 3.5.1.
For the loading into the dabase, we are calling Statement.executeBatch()
Attachments
Issue Links
- is caused by
-
CONJ-1208 permit bulk for INSERT ON DUPLICATE KEY UPDATE commands
-
- Closed
-
Activity
Priority | Major [ 3 ] | Minor [ 4 ] |
Description |
A recent change has caused a performance degradation on loads to older MariaDb servers (below 10.2.6), which are out of support, but maybe more relevant also to mySql servers (servers that lack the MARIADB_CLIENT_STMT_BULK_OPERATIONS feature flag).
The relevant change is on clientPreparedStatement.java: https://github.com/mariadb-corporation/mariadb-connector-j/commit/ce9b23c2413d884fdb75e5030b698ee95824bced Maybe I'm missing the context on why this was needed, but in case this is an unintended change. In our setup, for those servers, the flow in executeInternalPreparedBatch() would eventually call executeBatchPipeline(), now, given the change, it's calling executeBatchStd(). I didn't dig into why, but in my testing that causes a load to take substantially longer. The whole process of extracting and loading a small amount of data jumps from 8s to over 1 min with just the update from 3.5.0 to 3.5.1. For the loading into the dabase, we are calling Statement.executeBatch() |
A recent change has caused a performance degradation on loads to older MariaDb servers (below 10.2.6), which are out of support, but maybe more relevant also to mySql servers (servers that lack the MARIADB_CLIENT_STMT_BULK_OPERATIONS feature flag).
The relevant change is on clientPreparedStatement.java: https://github.com/mariadb-corporation/mariadb-connector-j/commit/ce9b23c2413d884fdb75e5030b698ee95824bced Maybe I'm missing the context on why this was needed, but in case this is an unintended change: In our setup, for those servers, the flow in executeInternalPreparedBatch() would eventually call executeBatchPipeline(), now, given the change, it's calling executeBatchStd(). I didn't dig into why, but in my testing that causes a load to take substantially longer. The whole process of extracting and loading a small amount of data jumps from 8s to over 1 min with just the update from 3.5.0 to 3.5.1. For the loading into the dabase, we are calling Statement.executeBatch() |
Priority | Minor [ 4 ] | Major [ 3 ] |
Fix Version/s | 3.5.2 [ 29968 ] |
Resolution | Fixed [ 1 ] | |
Status | Open [ 1 ] | Closed [ 6 ] |