2026, 새로운 도약을 시작합니다.

데이터베이스(DB) 부하 최적화

· 2주 전 · 35

그누보드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을 통해 해당 컬럼에 인덱스를 추가하는 것만으로도 페이지 로딩 속도를 혁신적으로 개선할 수 있습니다.

|

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

개발강좌

프로그램 강좌 :
1. 유창화님의 썸네일, 정규표현식, 이미지관련 강좌
2. Sphinx 검색엔진을 이용한 도로명 주소 검색 시스템 구축
번호 분류 제목 글쓴이 날짜 조회
108 그누보드5 2주 전 조회 36
107 그누보드5
[그누보드5]
4개월 전 조회 158
106 그누보드5 5개월 전 조회 397
105 그누보드5 6개월 전 조회 375
104 그누보드5 7개월 전 조회 314
103 그누보드5 2년 전 조회 1,285
102 그누보드5 2년 전 조회 946
101 그누보드5 2년 전 조회 1,037
100 그누보드5 2년 전 조회 2,340
99 그누보드5 2년 전 조회 873
98 정규표현식 2년 전 조회 1,174
97 그누보드5 3년 전 조회 2,361
96 그누보드5 3년 전 조회 2,742
95 그누보드5 3년 전 조회 3,283
94 그누보드5 3년 전 조회 3,656
93 그누보드5 3년 전 조회 2,896
92 그누보드5 5년 전 조회 5,750
91 그누보드5 5년 전 조회 3,405
90 그누보드5 7년 전 조회 8,305
89 정규표현식 7년 전 조회 8,340
88 그누보드5 7년 전 조회 4,621
87 정규표현식 8년 전 조회 7,443
86 그누보드5 8년 전 조회 5,489
85 정규표현식 8년 전 조회 4,130
84 정규표현식 8년 전 조회 3,739
83 정규표현식 8년 전 조회 3,410
82 정규표현식 8년 전 조회 3,632
81 이미지관련 8년 전 조회 8,495
80 이미지관련 8년 전 조회 6,706
79 정규표현식 8년 전 조회 4.7만
🐛 버그신고