목록 다음글

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

· 1개월 전 · 118

그누보드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 검색엔진을 이용한 도로명 주소 검색 시스템 구축

+
분류 제목 글쓴이 날짜 조회
그누보드5 1개월 전 조회 119
그누보드5
[그누보드5]
5개월 전 조회 224
그누보드5 6개월 전 조회 444
그누보드5 7개월 전 조회 446
그누보드5 7개월 전 조회 360
그누보드5 2년 전 조회 1,349
그누보드5 2년 전 조회 1,005
그누보드5 2년 전 조회 1,077
그누보드5 2년 전 조회 2,459
그누보드5 2년 전 조회 931
정규표현식 2년 전 조회 1,239
그누보드5 3년 전 조회 2,415
그누보드5 3년 전 조회 2,846
그누보드5 3년 전 조회 3,331
그누보드5 3년 전 조회 3,722
그누보드5 4년 전 조회 2,944
그누보드5 5년 전 조회 5,841
그누보드5 5년 전 조회 3,468
그누보드5 7년 전 조회 8,397
정규표현식 7년 전 조회 8,407
그누보드5 7년 전 조회 4,667
정규표현식 8년 전 조회 7,495
그누보드5 8년 전 조회 5,545
정규표현식 8년 전 조회 4,174
정규표현식 8년 전 조회 3,791
정규표현식 8년 전 조회 3,451
정규표현식 8년 전 조회 3,678
이미지관련 8년 전 조회 8,548
이미지관련 8년 전 조회 6,755
정규표현식 8년 전 조회 4.7만