Spring
Unsupported connection setting "MVCC" 이슈
미스터머글
2021. 5. 20. 15:12
728x90
반응형
TL;DR
# Before
spring:
datasource:
url: jdbc:h2:tcp://localhost/~/jpashop;MVCC=TRUE
# After : MVCC=TRUE 제거
url: jdbc:h2:tcp://localhost/~/jpashop
김영한 강사님의 "실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발"이라는 강의를 보다가 다음과 같은 에러를 발견하였다.
org.h2.jdbc.JdbcSQLNonTransientConnectionException:
Unsupported connection setting "MVCC"
시키는대로 했는데 '당췌 이게 무슨일인가'했는데... 나와 비슷한 이슈를 겪은 사람들이 많은 것을 확인했다.
데이터베이스인 H2가 1.4.200 버전으로 업데이트하고 난 뒤 MVCC 옵션이 사라진 것이다. MVCC는 다중 버전 동시성 제어(Multi-Version Concurrency Control)라는 것인데 동시에 실행되는 트랜잭션을 최대화하면서도, 데이터 무결성이 유지되도록 하기 위함이다. 트랜잭션이 발생했을 때 버전을 생성해서 변경된 데이터를 반영한다. 장점도 있지만 버전 충돌의 리스크도 가지고 있다. (자세한 내용을 알고 싶은 분들은 아래 블로그 추천)
그러면 H2는 MVCC의 대안으로 무엇을 사용할 것인가 찾아보니 MVStore라는 것을 쓰는 것으로 보인다. 개선된 버전관리가 가능한 것으로 보인다.
참고자료
- http://h2-database.66688.n3.nabble.com/MVCC-problem-with-in-memory-H2-in-1-4-200-td4035993.html
- https://stackoverflow.com/questions/60373580/default-business-application-not-working-because-of-h2-db-error
- https://stackoverflow.com/questions/65208440/what-does-mv-store-false-mean-when-connecting-to-h2-database
- https://github.com/h2database/h2database/issues/1204
728x90
반응형