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
운영게시판
최근게시물
MySQL Q&A 29376 게시물 읽기
No. 29376
DB초보가 문의드립니다. 레코드값이 많을때 어떤식으로 구축을 해야하는지요?
작성자
이훈(police1040)
작성일
2009-10-26 16:59
조회수
6,097

안녕하세요 


MySQL 운영에 관해 조언을 구합니다.


레코드값이 일일 수백만건 쌓이고 


그렇게 2~3달 쌓이고 삭제되는 DB서버를 구축하고자 합니다.


위 DB서버는 대용량의 데이터를 처리하며 insert와 select만 사용하게 됩니다.


테이블 구조는


+----------+----------------------+------+-----+---------+----------------+

| Field    | Type                 | Null | Key | Default | Extra          |

+----------+----------------------+------+-----+---------+----------------+

| no       | int(11) unsigned     | NO   | PRI | NULL    | auto_increment |

| userid   | varchar(20)          | NO   |     |         |                |

| imp_day  | date                 | NO   | MUL |         |                |

| imp_time | tinyint(3) unsigned  | NO   |     |         |                |

| ads_no   | int(11)              | NO   | MUL |         |                |

| cmp_no   | int(11) unsigned     | NO   |     |         |                |

| img_no   | int(11) unsigned     | NO   |     |         |                |

| region   | varchar(10)          | NO   |     |         |                |

| class    | smallint(5) unsigned | YES  | MUL | NULL    |                |

| media    | smallint(5) unsigned | YES  | MUL | NULL    |                |

| category | smallint(5) unsigned | YES  | MUL | NULL    |                |

| genre    | smallint(5) unsigned | YES  | MUL | NULL    |                |

| program  | varchar(20)          | YES  |     | NULL    |                |

| adv_no   | smallint(5) unsigned | YES  |     | NULL    |                |

| age      | tinyint(3) unsigned  | NO   | MUL |         |                |

| ads_type | varchar(1)           | YES  |     | NULL    |                |

| gender   | varchar(1)           | YES  |     | NULL    |                |

+----------+----------------------+------+-----+---------+----------------+


이며 


시간마다 insert작업을 하고

insert into logs values(110001, 'jaeman', '20090930', 100, 49, 100, 0, 'seoul', 1, 4, 13, 47, program, 1, 28, '1', '1');


이렇게 저장된 수천 수억 값들을 매니저 페이지에서 select 여러가지 조건으로 검색을 하게됩니다.


os는 centos 5.x버전이며 mysql은 5.x로 설치하려고 합니다.


시스템 구축시 고려해야 할 부분이 있다면 어떤게 있을까요


멘땅에 헤딩식으로 해야하니 참 답답한 점이 많네요 


대략..어떤 방식으로 가는게 좋을지  이 초보관리자에게 조언 좀 부탁드립니다. ㅡㅜ 

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

가장 중요한게 '여러가지 조건으로 검색' 인 부분입니다.

검색 대상이 되는 컬럼들과 사용하고자 하는 쿼리의 형태에 따라 인덱스 전략이나, 컬럼 형태마저도 영향을 받게 됩니다. 요구분석 단계에서 최대한 다양한 검색 조건을 가정하시고 인덱스를 설정하시는 것이 좋겠습니다. 하지만 무작정 많은 인덱스를 거는 것은 시스템 성능에 악영향을 주므로, 요구를 적절하게 제한하는 것도 필요합니다.


일단 2-3달 쌓이고 삭제되는 형식을 원하신다면, 파티션 테이블을 사용하지 않는 이상 삭제를 위한 컬럼이 필요할 것 같습니다. 이를 테면 '언제 쌓은 로그'인지를 확인할 수 있게 하여, 주기적으로 일정 기간이 지난 로그들을 손쉽게 삭제할 수 있는 준비를 해두어야 합니다.


말씀하신 데이터 형식으로 미루어보아, 트랜잭션이 요구되지 않는 단순 로그성 데이터일 것으로 예상되므로, MyISAM 형식을 사용하시는 것이 성능면에서 나을 것으로 예상되고, 컬럼 설계를 컴팩트하게 하여 디스크 용량을 최소화 하는 것도 중요할 것 같습니다. 이를테면 varchar 컬럼인 userid나 region, program등은 마스터 테이블의 PK를 참조하는 것으로도 해결될 수 있을 것 같습니다. 그렇다면 많은 바이트 수를 줄일 수 있겠지요.


하드하게 운영하기 전에, 시뮬레이션을 위한 많은 벌크 데이터를 넣어두고, 요구되는 쿼리를 모두 수행해보며 인덱스 전략 수정과 설정값 튜닝을 하는 작업도 필요하게 되리라 생각됩니다.

박현우(lqez)님이 2009-10-26 18:30에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
29379날자를 기억할때 [1]
VV
2009-10-29
5503
29378속도가 느립니다. 인덱스를 어떤방법으로 설정해야 하는지?
임기섭
2009-10-27
5835
29377ER-모델링... 스키마..
까수니
2009-10-26
5966
29376DB초보가 문의드립니다. 레코드값이 많을때 어떤식으로 구축을 해야하는지요? [1]
이훈
2009-10-26
6097
29375Mysql 에서 글쓰기 제한하는 방법이 있나요? [1]
초보자
2009-10-26
5544
29374bigint 와 int unsigned 자료형의 성능 [1]
강동화
2009-10-25
7479
29372두개의 테이블의 합계를 조인으로 구하는데 중복됩니다. 도와주세요 [2]
김명현
2009-10-24
5733
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.022초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다