You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
INSERT ... ON DUPLICATE KEY UPDATE 구문은 내부적으로 INSERT를 수행하고 -> Duplicate Key 오류로 인해 실패 시 UPDATE 구문을 수행하는 방식이다.
🚨 INSERT에 실패하더라도, 이미 증가된 auto_increment 값은 되돌려지지 않으므로, UPDATE가 잦은 테이블에서는 실제 데이터 양보다 auto_increment가 많이 높게 잡히는 이슈가 있을 수 있다. (아니 있었다..^,^ 그러나 이미 커져버린 auto_increment 값은 영영 돌이킬 수 없...)
해결 방안으로는,
1. INSERT ... ON DUPLICATE KEY UPDATE 구문 대신, INSERT/UPDATE를 명시적으로 구분하여 수행하도록 로직을 변경하거나
2. UPDATE가 잦은 테이블에 auto_increment PK를 두는 것이 꼭 필요한지 근본적으로 설계를 다시 고민해볼 필요가 있다.
This discussion was converted from issue #51 on November 24, 2024 11:21.
Heading
Bold
Italic
Quote
Code
Link
Numbered list
Unordered list
Task list
Attach files
Mention
Reference
Menu
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Note
INSERT ... ON DUPLICATE KEY UPDATE
구문으로 처리하기UPSERT작업이 필요할 때, MySQL에서는
INSERT ... ON DUPLICATE KEY UPDATE
구문으로 처리가 가능하다.UPSERT 대상 테이블의 PK가 auto_increment 라면, 사용 시 주의
INSERT ... ON DUPLICATE KEY UPDATE
구문은 내부적으로INSERT
를 수행하고 -> Duplicate Key 오류로 인해 실패 시UPDATE
구문을 수행하는 방식이다.1. INSERT ... ON DUPLICATE KEY UPDATE 구문 대신, INSERT/UPDATE를 명시적으로 구분하여 수행하도록 로직을 변경하거나
2. UPDATE가 잦은 테이블에 auto_increment PK를 두는 것이 꼭 필요한지 근본적으로 설계를 다시 고민해볼 필요가 있다.
Beta Was this translation helpful? Give feedback.
All reactions