본문 바로가기

MySQL5

5. SQL문 튜닝 연습-(2) 1. 인덱스를 걸었는데도 인덱스가 작동하지 않는 경우 - 1(id,name,age 컬럼 테이블에 name에 인덱스 걸고, 100만개의 더미 데이터 있는경우)EXPLAIN SELECT * FROM users ORDER BY name DESC;빨간부분 밑에는 인덱스 생성 안하고 조회, 위에부분은 name에 인덱스 생성후 조회한건데 차이 안나고 같다.  📌 왜 인덱스를 무시하고 풀 테이블 스캔할까?이유:→ 옵티마이저가 인덱스를 사용하는 것이 오히려 비효율적이라고 판단했기 때문즉, 넓은 범위의 데이터를 조회할 때는 인덱스를 활용하는 것이 비효율적이라고 판단한다. 인덱스를 활용하지 않고 풀 테이블 스캔으로 데이터를 찾을 때 훨씬 효율적이라고 판단한다.굳이 인덱스를 거쳤다가 각 원래 테이블의 데이터를 일일이 하나.. 2025. 3. 18.
4. SQL문 튜닝 연습-(1) 1. 한 번에 너무 많은 데이터를 조회하는 SQL문 튜닝하기(id, name, age 컬럼으로 구성된 테이블이며, 인덱스 설정 안하고, 100만 개의 더미 데이터가 존재하는 상황)SELECT * FROM users;100만개의 모든 데이터 조회시 대략 500~600ms SELECT * FROM users LIMIT 10;이번엔 10개의 데이터 조회(LIMIT 10) 해보니 대략 20ms 왜 데이터 개수 줄이는 게 중요할까?실제 페이스북, 인스타그램 같은 서비스들을 보면,한 번에 모든 게시글 데이터를 불러오지 않는다.사용자가 스크롤할 때마다 필요한 데이터만 조금씩 불러오는 방식을 쓴다.다른 커뮤니티 서비스들에서도 페이지네이션을 적용해, 일부 데이터만 조회하려고 한다.이는 이유가 분명하다.→ 조회하는 데이터.. 2025. 3. 17.
3. 실행계획(EXPLAIN) 1.실행 계획 (Execution Plan)이란?SQL 쿼리를 실행하면 데이터베이스가 내부적으로 어떤 방식으로 쿼리를 처리할지 결정한다.바로 이 처리 방식을 미리 계획한 것이 실행 계획 (Execution Plan)이다.실행 계획을 보면:DB가 어떤 방식으로 데이터를 조회할지인덱스를 사용할지, 테이블 전체를 스캔할지얼마나 많은 데이터를 접근하는지이 실행 계획을 통해 쿼리 성능을 점검하고, 비효율적인 부분을 발견해 쿼리를 튜닝할 수 있다. 실행계획 확인하는 방법# 실행 계획 조회하기EXPLAIN [SQL문]# 실행 계획에 대한 자세한 정보 조회하기EXPLAIN ANALYZE [SQL문] 예시로 해보면EXPLAIN SELECT * FROM usersWHERE age = 23;  id실행 순서. 복잡한 쿼리에.. 2025. 3. 17.
2.인덱스 실전,멀티컬럼 인덱스 개념,실전 1. MySQL 인덱스 적용 실험: 100만 개 데이터에서 검색 속도 비교MySQL에서 100만 개의 더미 데이터를 생성한 후, 특정 값을 검색하는 경우 인덱스 적용 전후의 성능 차이를 실험해본다. (1) 테이블 생성DROP TABLE IF EXISTS users; # 기존 테이블 삭제CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100), age INT); (2) 100만개의 랜덤 데이터 삽입이제 WITH RECURSIVE를 활용하여 1부터 100만까지 숫자를 생성한 후, 이를 기반으로 name과 age 데이터를 만들어 삽입한다.-- 높은 재귀(반복) 횟수를 허용하도록 설정-- (아래에서 생성할 더미 데이터의 .. 2025. 3. 12.
1.MySQL 성능 최적화에 대해,인덱스 개념 1. DB 성능 개선 방법과 SQL 튜닝의 중요성DB 성능이 저하될 때, 이를 개선하는 방법은 다양하다. 대표적인 해결책으로는 다음과 같은 방법이 있다.SQL 튜닝 – 비효율적인 SQL을 최적화캐싱 서버 활용 – Redis 등 캐시를 사용하여 DB 부하 감소레플리케이션 (Master-Slave 구조) – 읽기 부하를 여러 서버로 분산샤딩 (Sharding) – 데이터를 여러 DB에 나눠서 저장하여 부하 분산스케일업 – CPU, 메모리, SSD 등의 하드웨어 업그레이드이처럼 여러 가지 방법이 있지만, SQL 튜닝을 가장 먼저 고려해야 하는 이유는 다음과 같다.2. SQL 튜닝을 우선 고려해야 하는 이유추가적인 시스템 구축 없이 즉시 적용 가능  캐싱 서버나 레플리케이션, 샤딩 등을 도입하면 추가적인 인프라.. 2025. 3. 11.