목록DB (6)
나만의 개발 로그 | 고민 로그
SQL 쿼리의 개념적인 실행 순서FROM(+JOIN)WHEREGROUP BYHAVINGSELECTORDER BY나는 당연히 무조건 위에 순서대로 작동하는 줄 알았지만 그게 아니란 걸 깨달았다..!! => 위의 순서는 개념적인 실행 순서일 뿐, 실제 데이터베이스에서는 옵티마이저를 사용해서 최적의 실행 계획을 세우기 때문에 위와 순서가 달라질 수 있다!!! ex) 많은 테이블과 Join 해야 하는 경우 row가 많다면 당연히 부하가 갈테고 만약 Where절에서 인덱스가 걸린 컬럼을 조건으로 하는 경우, 옵티마이저가 이를 감지하고 Where절을 먼저 처리해서 인덱스를 이용한 필터링 작업을 먼저 수행할 수도 있음!! => 최근에 이와 관련된 질문을 받았고, 뒤늦게 기존 작성 내용이 틀렸다는 걸 알게 되어 수정..

최근 로컬 개발 환경에서 PostgreSQL을 Docker로 띄우고 프로젝트를 개발하던 중, 뜻밖의 장애를 마주했다. 테스트 서비스 일부에서 갑자기 500 Internal Server Error를 뱉기 시작한 것이다.🧪 증상에러 로그를 확인해보니 다음과 같은 메시지가 있었다FATAL: sorry, too many clients already 🔍 원인 분석PostgreSQL의 기본 설정은 다음과 같았고max_connections = 100이 프로젝트 환경에서는 아래와 같은 조건이 겹쳤다:PostgreSQL 컨테이너 1개에 여러 명의 개발자가 로컬에서 동시에 접속각 WAS에서 커넥션 풀 기본값인 10개 커넥션을 선점결과적으로 DB 커넥션이 100개를 초과 → DB 접근 불가 → 500 에러 발생🔧 1..

사내 서버 도커에서 돌고 있는 postgreSQL dump 뜨기 흐름 1. 서버 원격 접속 (ssh)2. Docker안에서 돌아가는 postgreSQL 접속 3. Docker 내 Dump 파일 생성 4. Docker 밖으로 끄집어내기 5. 로컬로 옮기기 1. 서버 원격 접속 (ssh)ssh [아이디@IP]비밀번호 입력 2. Docker postgreSQL 컨테이너 쉘 진입docker ps - docker ps 명령어를 통해 postgreSQL 컨테이너 ID를 알아낸다. docker exec -it 컨테이너ID /bin/bash - 이후 docker postgreSQL 컨테이너 쉘 진입 3. Docker 컨테이너 내부 Dump 파일 생성pg_dump -U 유저 -d 데이터베이스 -f 파일이름.sq..
조인이란💡: 두개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것회원 테이블(이름, 주소, 전화번호… ), 구매 테이블(물건, 가격…)두 테이블을 엮어서 하나의 배송을 위한 정보(이름, 주소, 물건)를 추출하는 것이 대표적인 조인내부 조인 (Inner join) 두 테이블을 연결할 때 내부 조인이 가장 많이 사용됨.내부 조인의 형식SELECT FROM INNER JOIN ON [WHERE 검색 조건]참고) INNER 키워드는 생략 가능(MySQL·MariaDB·PostgreSQL 등 대부분의 RDBMS 동일)SQL 블랙핑크(BLK)가 구매한 물건의 목록에 회원정보까지 합쳐서 보려면?SELECT * FROM buy JOIN member ON buy.mem_id = member.mem_id W..