database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 6661 게시물 읽기
No. 6661
로그테이블에 인덱스를 걸어야하나요?
작성자
whiteboy(don12345)
작성일
2013-04-29 11:30
조회수
9,140

안녕하세요..

 

다름이 아니고 제가 로그를 기록하기위한 용도로 테이블을 쓰는데요..

 

들어가는 필드는..

 

USER_ID, POINT, CREATEDATE

 

이렇게 유저아이디, 점수, 날짜로 들어갑니다.

 

로그테이블은 평소에는 사용자액션에 따라서 INSERT만 하는 용도인데요..

 

데이터가 쌓이면 관리툴에서 조건에 따라 검색하는 용도로도 사용할려고 합니다.

 

예를들어서 툴에서 USER_ID로 검색해서 본다던지, 날짜별로 보여준다던지...

 

그런데.. 데이터가 100만건 1000만건 쌓이면 인덱스를 걸지않고는 관리툴에서 USER_ID로

 

검색을 할때 결과가 상당히 느려질것 같아서요..

 

이리저리 찾아보니 로그테이블에는 왠만하면 인덱스를 걸지말라고 하더군요..

 

만약에 위와같은 조건에서는 어떻게 해야하는지 알려주시면 감사하겠습니다. ^^

 

그리고, 또한가지 궁금한점은 만약에 인덱스를 건다고 하면..

 

로그테이블처럼 평소에 INSERT만 하는 조건이면 

 

클러스터인덱스와 넌클러스터인덱스  둘중 어떤것이 부하가 적게 걸리는지요?

 

그리고 USER_ID, POINT CREATEDATE 필드 어디에 어떤식으로 인덱스를

 

걸어야하는지도 알려주시면 감사하겠습니다.

 

초보라서 쉽고 상세히 가르쳐주시면 감사하겠습니다. ^^

 
이 글에 대한 댓글이 총 3건 있습니다.

CREATEDATE에 clustered index를 생성하시고, USER_ID에 nonclustered index를 생성하시는 것이 기본적인 방법이겠습니다.

로그테이블에 인덱스를 걸지 말라고 하는 것은 insert 시점에 인덱스의 유지를 위해 발생하는 cost를 최소화하고자 하는 것인데, 관리툴 등으로 조회를 하면 모든 데이터를 읽어들여야 하는 문제가 발생하므로 해당 data를 복사하여 별도로 조회를 위한 환경을 만들지 않는 이상은 index를 생성하는 것이 맞겠습니다.

우욱님이 2013-04-29 11:54에 작성한 댓글입니다. Edit

윗분 말씀이 맞구요 ..

추가로 덧붙이자면

 

인덱스도 데이터의 일부입니다. 특히 로그성격의 데이터가 100만건 1000만건을 예상하신다면 .. ( 몇달안에 .. ?? ) 인덱스도 그만큼 SIZE 가 커져서 공간을 잡아 먹고 .. 쌓이면서 공용 리소스 CPU , I/O 등 .. 을 가져가기 때문에 고려를 해야하구요 ...

 

 

조회라는 서비스가 사용자가 ( 일반 유저 ) 아니고 관리자라면 ..

DB 자체를 분리해 보는 방안도 좋을꺼 같습니다. ( log 쌓는 DB를 따로 두는거죠 .. 물리적 독립이 가능하다면 더 좋을꺼 같습니다. )

 

 

katsu님이 2013-04-30 13:00에 작성한 댓글입니다. Edit

여러의견 감사드립니다. ^^

근데.. 하루에 100만건정도 쌓인다면 인덱스를 안걸어야 겠죠? ㅡ,.ㅡ

일단 로그테이블은 유저단에서는 select가 안되는 부분이니 

인덱스를 안거는 방향으로 해야겠네요. 인덱스 건 상황에서 데이터가 많이 쌓여버리면

cpu나 i/o에 부담이 많이 될것 같아서요.. 정기적으로 로그를 삭제하는 정책을 만들어서 

관리단에서 select할때 부담을 좀 줄이는 방향으로 해야겠네요

whiteboy(don12345)님이 2013-04-30 17:39에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
6665SQL join [4]
ohyouknow
2013-05-10
8619
6664MS SQL 교육 문의 [1]
namkyu
2013-05-09
8218
6662테이블 복제에 대해 질문드려요 [3]
whiteboy
2013-05-03
8485
6661로그테이블에 인덱스를 걸어야하나요? [3]
whiteboy
2013-04-29
9140
6660기본적인 LOCK 정책 변경하는 방법. [1]
이대규
2013-04-29
8169
6659완전 초보적인 질문 하나만 하겠습니다. [1]
김녹연
2013-04-25
7705
6658DB 테이블에서 특정 id 와 테이블이름 검색 [2]
무슨소리
2013-04-25
8205
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다