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 31115 게시물 읽기
No. 31115
저장시간, 사용자 둘중에 어떤키를 1번으로 잡아야 할까요?
작성자
권순환(soonani82)
작성일
2017-09-04 17:36ⓒ
2017-09-04 17:36ⓜ
조회수
4,074

 

 

질문 : 저장시간, 사용자 둘중에 어떤키를 1번으로 잡아야 할까요?

 

-상황가정

0. MYSQL, InnoDB환경, 나머지관련 환경은 사기업에서 지원하는 좋은조건으로 가정.

1. 회원수가 100만명이라고 가정.

2. 1사람이 하루에 3건씩 매일 3년간 저장함(1인당, 데이터 1년에 1천건 * 3년 3천건)

3. 100만 * 3천 해서 3억건의 데이터가 존재 한다고 가정함.

4. 조회조건은 하루에 10번 최근1달 데이터를 조회함.

 

-저장측면

1. 저장시간, 사용자 순서

   저장시간, 사용자 순으로 저장하면 테이블에 데이터가 쌓일때 최하단에 쌓이기 때문에 좋다고 판단

   사용자, 저장시간으로 저장하면 데이터가 많이 쌓였을경우 저장시간이 오래걸리는지 궁금함.

 

-조회측면

1. 저장시간, 사용자 순서 가 빠른지,  

2. 사용자, 저장시간 순서가 빠른지 모르겟네요. 알려주세요.

 

수고하세요~

   

 

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

 MySQL 은 클러스터드테이블로 

PK로 정렬되어 데이터가 저장됩니다.

저장측면에서 : 저장시간, 사용자 순서로 PK를 잡는 것이 유리

조회측면에서 : 사용자, 저장시간 순서로 PK를 잡는 것이 유리

 

저가 모델링한다면 자동증가 가상컬럼 PK 를 잡고

사용자, 저장시간 순으로 Index를 추가할 것 같습니다.

 

참고사항

85만명의 회원ID만 Insert한 결과 - 랜덤 insert 된 테이블 이용해 insert select 이용

자동증가 PK 추가 : 6.887초

mem_id를 PK로 사용 : 15.823초

mem_id를 PK로 설정 하 테이블에  이미정렬된 데이터 입력 : 9.099초

 

1row의 데이터 량이 많은 테이블로 실험하면

속도차이가 더 벌어질 것입니다.

MySQL 특성상

대량의 데이터가 들어가고 

PK가 데이터가 쌓이는 순서와 관계없다면

자동증가되는 가상의 PK를 사용할 것을 권장드립니다.

박인호(paerae)님이 2017-09-05 14:09에 작성한 댓글입니다.
이 댓글은 2017-09-05 14:12에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
31118mariadb 테이블스페이스 innodb_file_per_table 옵션? [2]
매수신호
2017-09-08
4838
31117C언어와 데이터베이스 연동에 관한 질문입니다.
김지희
2017-09-07
4362
31116Surrogate Key 를 PK 로 선정.
서귀동
2017-09-06
4071
31115저장시간, 사용자 둘중에 어떤키를 1번으로 잡아야 할까요? [1]
권순환
2017-09-04
4074
31114많은 데이터테이블어서 100만건 쿼리할때 너무오래걸려요
김진열
2017-09-01
4159
31113mysql 비밀번호 관련 문의드립니다.
goblin
2017-08-29
4170
31112MySQL Enterprise & Community
님프
2017-08-28
4194
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.051초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다