Slide 9
Slide 9 text
© 2023 NTT DATA Corporation 9
バインドミスマッチの発生例
• INSERT処理の遅延例。STATSPACKにカーソルの排他制御待ちを表す待機イベントが顕著に発生
• INSERT文に50個以上のNUMBER型カラム
• NUMBER型とVARCHAR2型でバインドミスマッチ発生
• 原因はJavaのAP(MyBatis)でnull値の型を指定していなかった(null値のときにVARCHAR2型バインド)
• sqlMap.xmlにjdbcTypeを指定することで対処
0
5,000
10,000
15,000
20,000
25,000
0 2 4 6 8 10 13 15 17 19 21 23 1 3 5 7 9 11 14 16 18 20 22 0 2 4 6 8 10 13 15 17 19 21 23 1 3 5 7 9 11 14 16 18 20 22
28 29 30 31
12
2016
LP32 - SQL*Net more data to client
LP32 - log file parallel write
LP32 - library cache: mutex X
LP32 - kksfbc child completion
LP32 - ges lms sync during dynamic remastering a
LP32 - gc cr grant 2-way
LP32 - Disk file Mirror Read
LP32 - db file sequential read
LP32 - cursor: pin S wait on X
LP32 - cursor: mutex X
LP32 - cursor: mutex S
LP32 - CPU time
LP32 - control file sequential read
LP32 - control file parallel write
INSTANCE_NAME
Event
B_Y B_MO B_D B_H
31
0
5,000
10,000
15,000
20,000
25,000
0 2 4 6 8 10 13 15 17 19 21 23 1 3 5 7 9 11 14 16 18 20 22 0 2 4 6 8 10 13 15 17 19 21 23 1 3 5 7 9 11 14 16 18 20 22
28 29 30 31
12
2016
LP32 - SQL*Net more data to client
LP32 - log file parallel write
LP32 - library cache: mutex X
LP32 - kksfbc child completion
LP32 - ges lms sync during dynamic remastering a
LP32 - gc cr grant 2-way
LP32 - Disk file Mirror Read
LP32 - db file sequential read
LP32 - cursor: pin S wait on X
LP32 - cursor: mutex X
LP32 - cursor: mutex S
LP32 - CPU time
LP32 - control file sequential read
LP32 - control file parallel write
INSTANCE_NAME
Event
B_Y B_MO B_D B_H
31
STATSPACKレポートのTop5待機イベントの推移
Cursor: mutex X
Cursor: mutex S
CPU
INSERT INTO XXX (…) VALUES(
#ID#,
#COL1#,
#COL2#,
…
#COL50#)
INSERT INTO XXX (…) VALUES(
#ID#,
#COL1:NUMERIC#,
#COL2:NUMERIC#,
…
#COL50:NUMERIC#)
jdbcTypeで明示的に型
を指定
◆sqlMap.xmlの記述イメージ
50カラムでNULL値の場
合にバインドミスマッチ