데이터베이스(DB) 부하 최적화
그누보드5 기반 사이트를 운영하다 보면 게시글이 수만 건을 넘어서는 순간 사이트 속도가 급격히 느려지기 시작합니다. 이때 가장 효과적인 해결책은 서버 사양을 높이는 것이 아니라, 적절한 인덱스(Index) 활용에 있습니다.
1. 인덱스가 필요한 컬럼 선별하기
모든 컬럼에 인덱스를 걸면 오히려 INSERT, UPDATE 속도가 저하됩니다. 아래 기준에 맞는 컬럼에만 적용하십시오.
WHERE 절에서 자주 사용되는 컬럼
ORDER BY (정렬) 기준이 되는 컬럼
JOIN 시 연결 고리가 되는 컬럼
**Cardinality(기수성)**가 높은 컬럼 (예: 성별보다는 중복이 적은 아이디나 이메일)
2. 복합 인덱스(Composite Index)의 순서 원칙
여러 컬럼을 묶어 인덱스를 만들 때는 순서가 핵심입니다.
규칙: WHERE a = 1 AND b = 2를 조회할 때, 인덱스가 (b, a) 순서로 되어 있다면 성능이 최적화되지 않을 수 있습니다.
가장 필터링 효율이 좋은(범위를 많이 좁혀주는) 컬럼을 앞쪽에 배치해야 합니다.
3. 실행 계획 확인 (EXPLAIN)
내가 짠 쿼리가 인덱스를 제대로 타고 있는지 확인하는 가장 전문적인 방법입니다.
-- 쿼리 앞에 EXPLAIN을 붙여 실행합니다.
EXPLAIN SELECT * FROM g5_write_free WHERE wr_id = 100 AND wr_is_comment = 0;
type: ALL이면 Full Scan이므로 반드시 인덱스를 점검해야 합니다. ref나 range, const가 나와야 우수합니다.
key: 실제로 사용된 인덱스 이름이 표시되어야 합니다.
rows: 쿼리를 처리하기 위해 조사한 행의 수입니다. 이 수치가 낮을수록 성능이 좋습니다.
4. 그누보드5 실무 적용 팁
그누보드의 g5_board_new (최신글 테이블)나 g5_write_... (게시판 테이블)는 데이터가 금방 쌓입니다.
만약 특정 여유필드(wr_1, wr_2 등)를 이용해 검색 기능을 구현했다면, 관리자 페이지의 DB 관리나 phpMyAdmin을 통해 해당 컬럼에 인덱스를 추가하는 것만으로도 페이지 로딩 속도를 혁신적으로 개선할 수 있습니다.
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기