Database
-
Pagination 쿼리, 속도가 너무 느려요 !!!Database 2025. 5. 7. 23:09
개요최근 프로젝트에서 대용량 테이블 조회 API의 성능 문제를 마주하게 되었습니다. 조회 대상은 약 50만 건에 달하는 데이터였고, 단순한 조회에도 6~7초 정도 걸려렸습니다. 더군다나 FE쪽에서도 Server Side Rendering 방식을 쓰고 있었어서, 이 API 때문에 페이지 자체 랜더링이 지연되는 문제가 생겨버렸습니다,,문제 상황문제의 쿼리는 소속의 랭킹을 가져오는 API의 쿼리입니다.특정 소속에서 진행한 프로젝트의 개수가 많을수록 랭킹이 올라가기 때문에 해당 소속에서 진행한 프로젝트의 개수를 가져오는 것이 조회 API 요구 사항중 하나였습니다. (단, ranking은 따로 계산합니다.)문제가 되는 쿼리는 다음과 같습니다.select be1_0.belonging_id, be1_0.b..
-
DB - 트랜잭션 관리Database 2022. 4. 23. 19:09
데이터베이스는 보통 비휘발성 저장 장치인 디스크에 데이터를 저장하며,전체 데이터베이스의 일부분을 메인 메모리에 유지한다. DBMS는 데이터를 고정 길이의 페이지(page)로 저장하며, 디스크에서 읽거나 쓸 때에 페이지 단위로 입출력이 이루어진다. 메인 메모리에 유지하는 페이지들을 관리하는 모듈을 보통 페이지 버퍼(page buffer) 관리자 또는 버퍼 관리자라고 부르는데, DBMS의 많은 주요 모듈 중에서 매우 중요한 모듈 중의 하나이다. DBMS는 각 제품마다 구조가 다르기는 하지만, 위 그림과 같이 크게 질의 처리기(Query Processor)와 저장 시스템(Storage System)으로 나눠볼 수 있다. MySQL의 경우에는 InnoDB, MyISAM 등과 같이 여러 하부 저장 시스템을 선택할..
-
DB - 동시성 제어와 lockDatabase 2022. 4. 17. 01:43
Transaction?? transaction(트랜잭션)이란 Database Managemet System에서 데이터를 다루는 논리적인 작업의 단위를 나타낸다. 데이터베이스에 삽입, 수정 등의 작업을 할 때, 여러 개의 작업들을 하나의 transaction으로 묶는다. 예를 들어, A 계좌에서 B 계좌로 돈을 전송한다고 할 때, A 계좌에서 돈을 빼는 작업과 B 계좌에 돈을 넣는 작업이 이루어지게 된다. 이 두 가지의 작업(2개의 SQL 문)을 개별적으로 수행하는 것이 아니라 하나의 트랜잭션으로 묶는다. 그리고 묶인 트랜잭션안에 작업들 중 몇 개만 실행되는 상황은 발생하지 않기 때문에 All or nothing이라 하고 트랜잭션의 성질중 Atomicity를 나타낸다. 동시성 제어(concurrency c..