Database2 [팀 프로젝트 & DB] 쿼리 속도 개선하기. 들어가며특정 게시글 목록을 보여줄 때, 총 3개의 테이블이 조인이 되는 쿼리가 존재하였습니다. 페이지네이션 작업을 진행하면서, 혹시 데이터가 늘어나거나 조회 조건이 추가되면 성능 저하가 있지 않을까? 하는 생각에 더미 데이터를 통한 성능 측정과 이 과정에서 쿼리를 수정하거나 인덱스를 튜닝하여 속도를 개선하는 과정을 기록하고자 글을 작성하게 되었습니다.더미데이터더미데이터를 추가할 때, 이전에 글을 작성한 것과 같이 데이터의 다양성이 떨어지면 의도한 인덱스를 타지 않고 풀스캔을 해버리는 경우. 즉, 인덱스의 효용이 떨어져 DBMS가 풀스캔을 선택하게 되는 상황을 배제하고자 데이터의 분포를 고르게 하고자 하였습니다.INSERT INTO jobs(id, name, created_at) -- 직업 더미 데이터WI.. 2025. 4. 16. [DB] 행 단위 잠금에 대한 생각 정리. 들어가며최근 Real MySQL 8.0 1권을 읽으면서, 행단위 잠금에 대해 한번 더 생각하게 되었습니다.이전 인턴 업무를 진행할 때에 상품 재고를 업데이트하는 트랜잭션을 작성할 때에도, Update 할 때 발생하는 행 잠금을 활용하여 이슈를 해결하였습니다.이때 특정 행에 대한 잠금을 획득하는 경쟁 상태가 발생할 수 있다는 것을 간과하였습니다.데드락 발생 가능 상황위의 그림을 보시면 아시겠지만, 이를 예방할 수 있는 방법이 존재하였습니다. 바로 잠금 발생의 순서를 오름차순 또는 내림차순으로 강제하는 것입니다. 그렇게 되면, 교착 상태에 빠지는 경우는 사라지게 됩니다.그렇다면 행 단위 잠금만으로 동시성 문제를 해결할 수 있을 것 같은데, 왜 분산락과 같은 기법을 사용할까..?vs 분산락.이전 프로젝트에서 .. 2025. 2. 14. 이전 1 다음