잡동사니

[MariaDB] Auto_Increment를 믿지 말라?? 본문

IT/Database

[MariaDB] Auto_Increment를 믿지 말라??

yeTi 2018. 10. 24. 17:47

안녕하세요. yeTi입니다.

오늘은 MariaDB의 InnoDB에서 Auto_Increment 사용시 초기화 될 수 있다는 문제에 대한 의문을 해소해보고자 합니다.



설치 환경

- OS : CentOS release 6.9 (Final)

- MariaDB : 10.2.11



근래에 웹상에서 MariaDB에서 Auto_Increment를 사용할 시 발생할 수 있는 문제점에 대해 발견했습니다.


내용인 즉슨

엔진으로 InnoDB를 사용할 경우 내부적으로 메모리상에 최대값을 저장하고 있기 때문에

재시작시 의도한 최대값이 아니라 초기값으로 사용될 수 있다는 것입니다.


이와 관련하여 최신 MariaDB Reference를 확인했고 다음과 같은 내용을 확인했습니다.


InnoDB/XtraDB

Until MariaDB 10.2.3, InnoDB and XtraDB used an auto-increment counter that is stored in memory. When the server restarts, the counter is re-initialized to the highest value used in the table, which cancels the effects of any AUTO_INCREMENT = N option in the table statements.

From MariaDB 10.2.4, this restriction has been lifted and AUTO_INCREMENT is persistent.


직역하자면 다음과 같습니다.

MariaDB의 10.2.3버전까지는 InnoDB나 XtraDB를 사용하면 auto-increment 값이 메모리에 저장됐다. 따라서 서버를 재시작하면 값이 테이블의 최대값으로 초기되고, AUTO_INCREMENT = N 옵션의 효과는 사라진다.

하지만 MariaDB의 10.2.3버전부터 AUTO_INCREMENT를 지속하도록 규제를 강화했다.


내용은 보니 10.2.3버전까지는 해당 문제가 발생했던거 같은데 그 이후로는 보완된거 같습니다.

하지만 규제를 강화한것이 트랜젝션까지 보장된건 아니라는 첨언이 있으니 참고하시면 될거같습니다.


 


참고 문헌

    • MariaDB 홈페이지 : https://mariadb.com/kb/en/library/auto_increment/


Comments