본문 바로가기

📘 DataBase/Mysql3

[DB] 옵티마이저 (1) Mysql 서버로 요청한 쿼리는 최적으로 실행 되기 위해 최적의 실행 계획을 수립하는 작업이 필요.대부분의 DBMS 에서는 옵티마이저가 이런 기능을 담당한다.Explain 명령으로 쿼리의 실행 계획 확인 가능. Mysql 에서는 비용 기반 최적화 (Cost-based optimizer, CBO) 를 사용한다. 기본 데이터 처리풀 테이블 스캔 조건- 테이블 레코드 건수가 작아, 인덱스를 택하기 보다 풀 테이블 스캔 하는 편이 더 빠른 경우- where 절이나 on 절에 인덱스를 이용할 수 있는 적절한 조건이 없을 경우- 인덱스 레인지 스캔을 사용할 수 있는 쿼리더라도, 옵티마이저가 판단한 조건 일치 레코드 건수가 많은 경우 위와 같은 조건에서 Mysql 옵티마이저는 풀 테이블 스캔을 시도한다.풀 테이블 스.. 2024. 8. 11.
[DB] 트랜잭션과 락 간략 정리 트랜잭션트랜잭션은 애플리케이션 개발 입장에서, 고민해야 할 문제를 풀어주는 필수적인 DBMS 의 기능.트랜잭션 사용 시 주의사항DBMS 의 커넥션과 동일하게 꼭 필요한 최소의 코드에만 적용하는 것이 좋다. 트랜잭션의 범위를 최소화하라는 의미. 각 단위프로그램이 커넥션을 소유하는 시간이 길어질 수록 사용 가능한 여유 커넥션의 개수는 줄어든다. 메일 전송이나, 파일 전송 작업 등, 네트워크를 통해 원격 서버와 통신하는 작업은 트랜잭션 내에서 제거하라. 웹 서버뿐 아니라 DBMS 서버까지 위험한 상황 발생 저장 데이터의 단순 조회의 경우도 트랜잭션에 포함할 필요가 없다.락레코드 락레코드 자체만을 잠그는 것 InnoDB 스토리지 엔진은 레코드 자체가 아니라, 인덱스의 레코드를 잠근다. 인덱스가 없을 경우, 내부.. 2024. 6. 27.
쿼리 작성 및 최적화 요새 스프링 프로젝트, DB, 자소서 수정, 토비 스프링, 코테 준비 등등을 하고 있다. 하루가 너무 짧기도 하고 잠을 적게 자도 괜찮은 체질이 되고 싶은 요즘이다. DB공부는 Real Mysql을 읽고 있다. 읽기 너무 어려운 책인데.. DB 질문도 신입 개발자 면접에서 디테일한 질문까지 필수라고 하기 때문에 열심히 정리하면서 읽고 있다. 쿼리 작성 및 최적화 부분을 공부중인데 이 부분에서 헷갈리는 개념을 정리해볼 생각이다. Join 기법 Nested Loop Join 중첩된 반복문과 유사한 방식으로 조인을 수행 반복문 외부의 테이블을 선행 테이블 & 외부 테이블이라 칭함 반복문 내부의 테이블은 후행 테이블 & 내부 테이블이라고 칭한다. 조건을 만족하는 선행 테이블 행을 추출 후 후행 테이블을 읽으며 .. 2022. 5. 17.
반응형