[개인공부] Spring Boot와 R2DBC 사이의 오류
공부 기록/Spring 2024. 2. 5. 16:18

발생한 오류 테스트를 하던 중 처음 보는 에러를 보게되었다. Caused by: org.springframework.dao.DataIntegrityViolationException: executeMany; no partition of relation "(테이블 명)" found for row; nested exception is io.r2dbc.postgresql.ExceptionFactory$PostgresqlDataIntegrityViolationException: [23514] no partition of relation "(테이블 명)" found for row 해당 오류는 Spring Boot에서 PostgreSQL를 R2DBC(Reactive Relational Database Connecti..

[PostgreSQL] Upsert 구문(INSERT … ON CONFLICT)
공부 기록/Database 2023. 6. 22. 17:33

소스 코드를 분석하면서 insert 문과 관련된 처음보는 문법을 보았다. 동작 자체는 어렵지 않지만 update문과 다른 의미로 유용하게 쓰였기 때문에 정리를 하려 한다. (실시간으로 데이터가 들어오기 때문에 매번 데이터를 찾아 update를 실행하기 보다는 일단 insert를 하고 unique한 값이 동일하면 특정 데이터를 update 하는 것이 더 효율적이라 생각한다.) 단, ON CONFLICT는 PostgreSQL 9.5 이상의 버전에서만 사용이 가능하다. 기본적인 사용 형태는 아래와 같다. INSERT INTO table_name(column_list) VALUES(value_list) ON CONFLICT target action; target은 다음 중 하나로 사용이 가능하다. (column..

[PostgreSQL] Table Scan 종류
공부 기록/Database 2023. 4. 27. 17:36

해당 포스팅은 PostgreSQL의 실행 계획 분석에 사용되는 EXPLAIN과 ANALYZE에 대한 개념을 기본으로 전제하고 있다. 이에 대해 알지 못한다면 아래의 포스팅을 먼저 읽기를 추천한다. [PostgreSQL] 쿼리 실행 계획 분석(explain, analyze) 쿼리 실행 계획 분석의 필요성 데이터베이스의 성능을 최적화하기 위해선 작성하는 쿼리문을 어떻게 짜는가도 중요하다. 때문에 데이터베이스가 실제로 쿼리를 실행하는 방식과 해당 쿼리의 justdo1tme.tistory.com PostgreSQL에서 실행 계획 분석을 실행할 때 실행되는 Table Scan 방식에는 5가지 종류가 있다. Sequential Scan Index Scan Index Only Scan Bitmap Scan TID S..

[PostgreSQL] 쿼리 실행 계획 분석(explain, analyze)
공부 기록/Database 2023. 4. 27. 10:42

쿼리 실행 계획 분석의 필요성 데이터베이스의 성능을 최적화하기 위해선 작성하는 쿼리문을 어떻게 짜는가도 중요하다. 때문에 데이터베이스가 실제로 쿼리를 실행하는 방식과 해당 쿼리의 성능을 개발자가 인지하고 있어야 한다. 데이터베이스의 성능을 최적화할 수 있는 쿼리를 작성하기 위해서 개발자는 쿼리 실행 계획(Query execution plan)을 분석할 수 있어야 한다. 각 데이터베이스에 따라 쿼리 실행 계획 방법이 존재하며 이 포스팅은 PostgreSQL에서 실행하는 쿼리 실행 계획을 작성해보려 한다. Query Plan이란 데이터베이스 엔진은 쿼리를 수행할 때 어떤 방식을 사용하고 어떤 순서로 쿼리를 수행할지에 대한 계획을 세우는데, 이것을 쿼리 실행 계획(Query execution plan) 또는 ..