r2dbc

성능향상을 위해 도입한 Springboot Webflux, 그리고 R2DBC 였지만 다량의 데이터를 INSERT할 때 성능이 훨씬 떨어지는 부분을 발견했습니다. 이번 포스트에서는 어떤식으로 성능에 대해 고민 하고 개선 할 수 있었는지 정리 해 보고자 합니다. 주니어 개발자로써 항상 부족함을 많이 느끼고 있기에, 추가적인 의견이나 잘못된 점에 대한 지적은 항상 환영입니다. Batch Insert란 ? Batch Insert라는 개념은 어려울 것이 없습니다. 예를 들어, 3건의 INSERT 쿼리를 날린다고 했을 때 아래처럼 3개의 INSERT문을 날리는 것이 아니라, INSERT INTO TestTable(c1, c2) VALUES(v1, v2); INSERT INTO TestTable(c1, c2) VAL..
문제 상황 대량의 데이터를 insert 하는 로직이 있었는데, 계속 데이터 일부분이 누락되는 현상이 발생 하였다. 총 400row가 insert 되어야 하는데, 380개 정도만 insert 되는 식이었다. 내가 insert하는 방식은 아래와 같았다. public Flux setDatas(List dataList){ repository.saveAll(dataList); } repository는 아래처럼 R2DBC Repository를 상속받아 사용하였다. public interface TestRepository extends R2dbcRepository 해결 방법 기존의 Iterable을 바로 인자로 넘기는 방법에서, 아래처럼 Flux형태로 바꾸어 saveAll 하는 방식으로 바꾸니 정상적으로 작동함을 볼..
분명, JDBC를 사용할 때에는, TinyInt를 Integer로 매핑을 했던 기억이 있는데, 에러가 발생하여 찾아보니 TinyInt(1)의 경우에만 Boolean으로 매핑이 되는 걸 알 수 있었다.(당연하겠지만...) R2dbc에서는 다른 매핑으로 작동될 까 걱정했지만, 우선 tinyInt를 boolean으로 매핑하는 점은 jdbc와 동일 한 것 같다. https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-type-conversions.html MySQL :: MySQL Connector/J 8.0 Developer Guide :: 6.5 Java, JDBC, and MySQL Types 6.5 Java, JDBC, and MySQL T..
moyanglee
'r2dbc' 태그의 글 목록