Skip to content
GwiyeomGo Tech Blog
About GwiyeomGo

mysql 데이터가 순차적으로 들어가지 않고 널뛰기 해도 괜찮을까?

MYSQL, 20222 min read

why does autoincrement increase on failed insert

배경

  1. 카카오톡 알림톡 기능을 사용해서 기부자에게 알림톡을 보내고 있다.
  2. 인포뱅크(카카오 알림톡 협력 업체) 서버에 접속되지 않아 Timeout 이 발생했음

문제

기존 코드는 기부 등록 API 를 호출하면 하나에 트랜젝션이 카카오톡 알림톡발송이 실패하면 rollback 되도록 되어있었다

앞으로는..

알림톡 보내는 방식을 재 설계하여 의존성을 느슨하게 해서 알림톡 업체가 장애가 나더라도 기부는 동작되도록 변경해야 한다

궁금한점..

해당 이슈 발생시 db 에는 rollback 되어 데이터가 쌓이지 않았다. insert 가 실패했는데 id 값이 증가되었다 id 는 autoincrement 로 생성된다 왜 증가되었지? 또한 이렇게 데이터가 널뛰었을때 문제는 없는건가?

결론

id는 식별을 위한 것이다 id는 기계적으로 만들어지는 대체키이다 식별이 목적이라면 비동기 적으로 id 가 생성되며 다른 id 와 다른것은 정상적이고 일을 잘 하고 있는 것이다 ( 관계형 데이터 베이스를 쓸때 id 를 정하는 기준 대체키 자연키 ex) 주민등록번호,siteCode

자연키: 바뀔 수 있는 것 대체키:시스템적으로 id 부여하는 것

id 는 식별하는 용도로 유효 id 도 있을 수 있다

식별성에는 문제가 없다) 왜 이럴까? 의 질문을 모두 문제일거라 생각하지 말자

참고

https://stackoverflow.com/questions/2787910/why-does-mysql-autoincrement-increase-on-failed-inserts https://suhwan.dev/2019/06/09/transaction-isolation-level-and-lock/

© 2024 by GwiyeomGo Tech Blog. All rights reserved.