개발 61

MySQL] MySQL 퍼포먼스 최적화 (WHERE 조건 이해)

3. WHERE 조건 이해 묵시적 형변환 함정 묵시적 형변환 - 조건절의 데이터 타입이 다를 때 우선순위가 높은 타입으로 타입이 변환되는 것 - 우선순위 : 정수 타입 > 문자열 타입 묵시적 형변환이 일어나는 대상이 인덱스 필드라면...? 모든 데이터 형변환을 위해 테이블 풀스캔이 일어난다ㅠ 따라서 WHERE절에는 칼럼 타입에 맞춰서 질의해야한다. 어플리케이션에서 질의 시 실수하기 좋으니 주의하자 (우선순위가 정수형이 높으니 무조건 문자열로 질의하는 것도... 방법이라면 방법이다.) LIKE 검색 시 주의할 점 '%' 위치에 따라 다르게 수행된다. DB 자료는 인덱스 키 값 순서로 정렬, 관리되므로 중간 또는 뒷부분부터 검색하면 인덱스 의미가 없어진다. LIKE 'xxx%' - 인덱스가 걸려있는 컬럼이면..

개발/MySQL 2022.03.19

MySQL] MySQL 퍼포먼스 최적화 (쿼리 성능 최적화)

2. 쿼리 성능 진단은 최적화의 기초 SQL을 실행하도록 DB에 명령을 내리면 DB는 SQL 파싱, 옵티마이징을 거친 후 데이터를 찾는다. 쿼리 실행 계획 실행할 쿼리 앞에 EXPLAIN [EXTENDED]을 붙여준다. DB가 데이터를 찾아가는 일련의 과정을 사람이 알아보기 쉽게 보여준다. 성능 최적화가 가능하다. EXTENDED는 실제 DB에서 처리되는 최종 SQL 형태를 보여주는 명령어다. 'EXPLAIN EXTENDED'로 출력하면, warning이 하나 떠 있다. 'SHOW WARNINGS\G'를 질의하면 DB가 내부적으로 이해한 최종 형태의 쿼리가 출력된다. 구분 설명 ID SELECT 아이디로 SELECT를 구분하는 번호 SELECT_TYPE SELECT에 대한 타입 EX) SIMPLE - U..

개발/MySQL 2022.03.19

MySQL] MySQL 퍼포먼스 최적화 (MySQL 구조)

1. MySQL의 특징 MySQL은 전체적으로 어떻게 생겼나? 책에서는 MySQL을 '서버 엔진'과 '스토리지 엔진'으로 구분해서 설명한다. 서버 엔진 - 클라이언트의 요청을 받아 SQL을 처리하는 DB 자체의 기능적인 역할 - SQL Interface, Parser, Optimizer, Cache&Buffers - 사용자와 MySQL 사이에서 발생하는 데이터 처리 프로세스의 대부분을 담당 스토리지 엔진 - 서버 엔진이 필요한 데이터를 물리 장치에서 가져오는 역할 - 물리적인 저장장치에서 데이터를 읽어오는 역할을 수행 - 다른 DBMS와 다르게 스토리지 엔진이 플러그인 방식으로 동작 - 스토리지 엔진 종류 : InnoDB, MyISAM, MGR_MYISAM, BLACKHOLE, CSV, MEMORY, F..

개발/MySQL 2022.03.19