Skip to content

Commit ee050d6

Browse files
author
Chienlin
committed
fix(jdbc): Use NVARCHAR for Spring Batch SQL Server metadata (#5064)
Spring Batch SQL Server metadata tables default to VARCHAR, but the Microsoft JDBC driver sends strings as NVARCHAR. This mismatch causes implicit conversions, slows queries, and increases deadlock risk. Update schema-sqlserver.sql to use NVARCHAR for all string columns, aligning with the driver and improving performance. Signed-off-by: Chienlin <[email protected]>
1 parent 5c07115 commit ee050d6

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed

spring-batch-core/src/main/resources/org/springframework/batch/core/schema-sqlserver.sql

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
CREATE TABLE BATCH_JOB_INSTANCE (
44
JOB_INSTANCE_ID BIGINT NOT NULL PRIMARY KEY,
55
VERSION BIGINT NULL,
6-
JOB_NAME VARCHAR(100) NOT NULL,
7-
JOB_KEY VARCHAR(32) NOT NULL,
6+
JOB_NAME NVARCHAR(100) NOT NULL,
7+
JOB_KEY NVARCHAR(32) NOT NULL,
88
constraint JOB_INST_UN unique (JOB_NAME, JOB_KEY)
99
) ;
1010

@@ -15,19 +15,19 @@ CREATE TABLE BATCH_JOB_EXECUTION (
1515
CREATE_TIME DATETIME NOT NULL,
1616
START_TIME DATETIME DEFAULT NULL,
1717
END_TIME DATETIME DEFAULT NULL,
18-
STATUS VARCHAR(10) NULL,
19-
EXIT_CODE VARCHAR(2500) NULL,
20-
EXIT_MESSAGE VARCHAR(2500) NULL,
18+
STATUS NVARCHAR(10) NULL,
19+
EXIT_CODE NVARCHAR(2500) NULL,
20+
EXIT_MESSAGE NVARCHAR(2500) NULL,
2121
LAST_UPDATED DATETIME NULL,
2222
constraint JOB_INST_EXEC_FK foreign key (JOB_INSTANCE_ID)
2323
references BATCH_JOB_INSTANCE(JOB_INSTANCE_ID)
2424
) ;
2525

2626
CREATE TABLE BATCH_JOB_EXECUTION_PARAMS (
2727
JOB_EXECUTION_ID BIGINT NOT NULL,
28-
PARAMETER_NAME VARCHAR(100) NOT NULL,
29-
PARAMETER_TYPE VARCHAR(100) NOT NULL,
30-
PARAMETER_VALUE VARCHAR(2500),
28+
PARAMETER_NAME NVARCHAR(100) NOT NULL,
29+
PARAMETER_TYPE NVARCHAR(100) NOT NULL,
30+
PARAMETER_VALUE NVARCHAR(2500),
3131
IDENTIFYING CHAR(1) NOT NULL,
3232
constraint JOB_EXEC_PARAMS_FK foreign key (JOB_EXECUTION_ID)
3333
references BATCH_JOB_EXECUTION(JOB_EXECUTION_ID)
@@ -36,12 +36,12 @@ CREATE TABLE BATCH_JOB_EXECUTION_PARAMS (
3636
CREATE TABLE BATCH_STEP_EXECUTION (
3737
STEP_EXECUTION_ID BIGINT NOT NULL PRIMARY KEY,
3838
VERSION BIGINT NOT NULL,
39-
STEP_NAME VARCHAR(100) NOT NULL,
39+
STEP_NAME NVARCHAR(100) NOT NULL,
4040
JOB_EXECUTION_ID BIGINT NOT NULL,
4141
CREATE_TIME DATETIME NOT NULL,
4242
START_TIME DATETIME DEFAULT NULL,
4343
END_TIME DATETIME DEFAULT NULL,
44-
STATUS VARCHAR(10) NULL,
44+
STATUS NVARCHAR(10) NULL,
4545
COMMIT_COUNT BIGINT NULL,
4646
READ_COUNT BIGINT NULL,
4747
FILTER_COUNT BIGINT NULL,
@@ -50,25 +50,25 @@ CREATE TABLE BATCH_STEP_EXECUTION (
5050
WRITE_SKIP_COUNT BIGINT NULL,
5151
PROCESS_SKIP_COUNT BIGINT NULL,
5252
ROLLBACK_COUNT BIGINT NULL,
53-
EXIT_CODE VARCHAR(2500) NULL,
54-
EXIT_MESSAGE VARCHAR(2500) NULL,
53+
EXIT_CODE NVARCHAR(2500) NULL,
54+
EXIT_MESSAGE NVARCHAR(2500) NULL,
5555
LAST_UPDATED DATETIME NULL,
5656
constraint JOB_EXEC_STEP_FK foreign key (JOB_EXECUTION_ID)
5757
references BATCH_JOB_EXECUTION(JOB_EXECUTION_ID)
5858
) ;
5959

6060
CREATE TABLE BATCH_STEP_EXECUTION_CONTEXT (
6161
STEP_EXECUTION_ID BIGINT NOT NULL PRIMARY KEY,
62-
SHORT_CONTEXT VARCHAR(2500) NOT NULL,
63-
SERIALIZED_CONTEXT VARCHAR(MAX) NULL,
62+
SHORT_CONTEXT NVARCHAR(2500) NOT NULL,
63+
SERIALIZED_CONTEXT NVARCHAR(MAX) NULL,
6464
constraint STEP_EXEC_CTX_FK foreign key (STEP_EXECUTION_ID)
6565
references BATCH_STEP_EXECUTION(STEP_EXECUTION_ID)
6666
) ;
6767

6868
CREATE TABLE BATCH_JOB_EXECUTION_CONTEXT (
6969
JOB_EXECUTION_ID BIGINT NOT NULL PRIMARY KEY,
70-
SHORT_CONTEXT VARCHAR(2500) NOT NULL,
71-
SERIALIZED_CONTEXT VARCHAR(MAX) NULL,
70+
SHORT_CONTEXT NVARCHAR(2500) NOT NULL,
71+
SERIALIZED_CONTEXT NVARCHAR(MAX) NULL,
7272
constraint JOB_EXEC_CTX_FK foreign key (JOB_EXECUTION_ID)
7373
references BATCH_JOB_EXECUTION(JOB_EXECUTION_ID)
7474
) ;

0 commit comments

Comments
 (0)