SlideShare a Scribd company logo
Chapter 04
DB 스케일 아웃 전략
강의 11
인덱스를 올바르게 운용하기
MySQL 운용 포인트
• OS 캐시 활용
• 인덱스를 적절하게 설정하기
• 확장을 전제로 한 설계
OS 캐시 활용
• 전체 데이터 크기에 주의
1) „데이터량 < 물리메모리‟ 를 유지
2) 메모리가 부족할 경우 증설
• 스키마 설계가 데이터 크기에 미치는 영향을 고려
Ex) 3억 레코드 짜리 테이블에 8바이트 컬럼 추가
8 X 3 억 바이트 = 3GB
메모리 3GB 필요함
번외) MySQL 캐시
Mysql 아키텍쳐
Mysql에서 Cache를 제공함
Query_Cache_Size : 크기
Query_Cache_Type = ON
– 예외사항을 제외한 모든 SQL결과를 메모리에 캐싱
Query_Cache_Type = OFF
– Query Cache를 사용하지 않음
Query_Cache_Type = DEMAND
– 사용자 요청시에만 Query Cache를 사용
Ex) 3번 사용시 쿼리문 예시
SELECT SQL_CACHE id, name FROM customer;
SELECT SQL_NO_CACHE id, name FROM customer;
출처 : http://dev.kthcorp.com/2011/08/02/query-cache-use-at-your-own-risk/
Mysql config 설정 ( my.cnf 파일 )
테이블 별 물리데이타를 줄여서 메모리에 올려 놓을 수 있다!
정규화!
uid
bookmark
eid
timestamp
is_private
is_asin
필수 항목
필요 항목
컬럼을 쪼개서 데이터 량을 줄임
인덱스
• 인덱스의 중요성
• 인덱스의 효과
• 인덱스가 작용하는지 확인 하는 법
1) 인덱스의 중요성
트리 이진트리 B트리
루트에서 각 노드에 찾고 있는 값이 저장되어 있는지 확인
이때 찾는 값의 대소관계로 어떤 자식을 찾아가면 될지가 결정
이진트리 B트리
이진트리와 B트리의 차이점
부모 노드는 1개 나머지 자식 노드는 2개로 정해져 있음
=>특정 노드를 모아서 1블록에 저장하는 작업이 어려움
B트리는 노드의 개수를 조절 할수 있음
=> 디스크의 1블록 크기로 잡아서 OS의 디스크 seek을 줄임
2) 인덱스의 효과
• B트리는 디스크 구조에 최적화 => 디스크 Seek 횟수에 개선
• 계산량 개선
인덱스 없음 : 선형 탐색
인덱스 있음 : B트리로 이분탐색
O(n) => O(log n) 개선
• 복수 컬럼에 동시에 인덱스를 태우고자 할 경우
=>복합 인덱스를 사용해야함
ex)
select * from entry where url like „http://d.%‟ order by timestamp
예상)
url인덱스에서 고속으로 url 검색후 좁혀진 범위에서 timestamp
인덱스에서 고속 정렬
실제)
한쪽 인덱스만 사용됨
• explain문 추가시 쿼리 속도는 explain 실행 명령 포함 속도
• “감시방안을 늘림” slow-log시 리포팅 등
(my.cnf 의 slow_query_log 등을 남길수 있음)
3) 인덱스가 작용하는지 확인하는 법
그림 4.5 explain 명령 ( p99 )
강의 12
MySQL의 분산
– 확장을 전제로 한 시스템 설계
로드 밸런서
MySQL
슬레이브
MySQL
슬레이브
MySQL
슬레이브
MySQL
마스터
AP 서버 AP 서버 AP 서버 AP 서버
참조 쿼리는 슬레이브에서!
갱신 쿼리는 마스터에서!
=>참조 부하를 분산
MySQL 레플리케이션 기능
• 웹 애플리케이션에서는 대략 90% 이상이 참조계열 쿼리
마스터가 병목이 되는 경우가 적음
마스터가 부하가 됐을 경우 해결책
1) 테이블 분할 쓰기작업 분산
2) RDBMS 사용(x) key-value 스토어 사용
마스터/슬레이브의 특징
강의 13
MySQL의 스케일아웃과 파티셔닝
MySQL의 스케일 아웃 전략
데이터가 메모리에 올라가는 크기 메모리에올린다
데이터가 메모리에 올라가지 않는 크기 메모리를 증가
메모리 증가가 불가능한 경우 파티셔닝
파티셔닝
A B A B
분할
• 테이블 단위로 분할
• 특정 알고리즘으로 분할 ex) 문자열 a-d가 A , 문자열 e-h가 B …
파티셔닝? 한대였던 DB 서버를 여러 대의 서버로 분할하는 방법
파티셔닝을 전제로 한 설계
entry tag
* 1
1) entry 테이블과 tag 테이블이 같은 머신에 있을경우
JOIN 쿼리 가능
2) entry 테이블과 tag 테이블이 다른 머신에 있을경우
JOIN 쿼리 불가능 WHERE , IN 쿼리로 분리
애플리케이션 용도와 서버 대수
New
서버
복사가능
New
서버
복사불가능
4대가 1세트
3대가 1세트
파티셔닝시 장비 4대씩 증가
서버 대수 증가
고장률 증가
파티셔닝의 장단점
장점 : 부하가 내려가고 캐시 효과가 높아진다
단점 :
1) 운용이 복잡해진다.
2) 고장률이 높아진다.( 기본 4대가 1세트 )
3) 운용이 복잡해지면 경제적 비용이 높아진다.
파티셔닝은 어디까지나 마지막 카드!
The End…..

More Related Content

What's hot

스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWS스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWS
Gruter
 
Introduction to Apache Tajo
Introduction to Apache TajoIntroduction to Apache Tajo
Introduction to Apache Tajo
Gruter
 
Data analysis with Tajo
Data analysis with TajoData analysis with Tajo
Data analysis with Tajo
Gruter
 
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: Bioinformatics Data를 위한 Hadoop기반...
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: Bioinformatics Data를 위한 Hadoop기반...GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: Bioinformatics Data를 위한 Hadoop기반...
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: Bioinformatics Data를 위한 Hadoop기반...
Gruter
 
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: SNS 서비스 아키텍쳐 구축 사례
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: SNS 서비스 아키텍쳐 구축 사례GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: SNS 서비스 아키텍쳐 구축 사례
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: SNS 서비스 아키텍쳐 구축 사례
Gruter
 
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: 보안 로그 분석을 위한 빅데이터 시스템 구축 사례
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: 보안 로그 분석을 위한 빅데이터 시스템 구축 사례GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: 보안 로그 분석을 위한 빅데이터 시스템 구축 사례
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: 보안 로그 분석을 위한 빅데이터 시스템 구축 사례
Gruter
 
Tajo TPC-H Benchmark Test on AWS
Tajo TPC-H Benchmark Test on AWSTajo TPC-H Benchmark Test on AWS
Tajo TPC-H Benchmark Test on AWS
Gruter
 
Expanding Your Data Warehouse with Tajo
Expanding Your Data Warehouse with TajoExpanding Your Data Warehouse with Tajo
Expanding Your Data Warehouse with Tajo
Matthew (정재화)
 
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: Tajo와 SQL-on-Hadoop
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: Tajo와 SQL-on-HadoopGRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: Tajo와 SQL-on-Hadoop
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: Tajo와 SQL-on-Hadoop
Gruter
 
[Pgday.Seoul 2018] Greenplum의 노드 분산 설계
[Pgday.Seoul 2018]  Greenplum의 노드 분산 설계[Pgday.Seoul 2018]  Greenplum의 노드 분산 설계
[Pgday.Seoul 2018] Greenplum의 노드 분산 설계
PgDay.Seoul
 
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
Minchul Jung
 
실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8
HyeonSeok Choi
 
elasticsearch
elasticsearchelasticsearch
elasticsearch
승우 백
 
Infiniflux introduction
Infiniflux introductionInfiniflux introduction
Infiniflux introduction
InfiniFlux Korea
 
InfiniFlux 성능 지표
InfiniFlux 성능 지표InfiniFlux 성능 지표
InfiniFlux 성능 지표
InfiniFlux Korea
 
SQL-on-Hadoop with Apache Tajo, and application case of SK Telecom
SQL-on-Hadoop with Apache Tajo,  and application case of SK TelecomSQL-on-Hadoop with Apache Tajo,  and application case of SK Telecom
SQL-on-Hadoop with Apache Tajo, and application case of SK Telecom
Gruter
 
빅데이터 구축 사례
빅데이터 구축 사례빅데이터 구축 사례
빅데이터 구축 사례
Taehyeon Oh
 
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
SeungYong Baek
 

What's hot (18)

스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWS스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWS
 
Introduction to Apache Tajo
Introduction to Apache TajoIntroduction to Apache Tajo
Introduction to Apache Tajo
 
Data analysis with Tajo
Data analysis with TajoData analysis with Tajo
Data analysis with Tajo
 
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: Bioinformatics Data를 위한 Hadoop기반...
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: Bioinformatics Data를 위한 Hadoop기반...GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: Bioinformatics Data를 위한 Hadoop기반...
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: Bioinformatics Data를 위한 Hadoop기반...
 
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: SNS 서비스 아키텍쳐 구축 사례
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: SNS 서비스 아키텍쳐 구축 사례GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: SNS 서비스 아키텍쳐 구축 사례
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: SNS 서비스 아키텍쳐 구축 사례
 
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: 보안 로그 분석을 위한 빅데이터 시스템 구축 사례
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: 보안 로그 분석을 위한 빅데이터 시스템 구축 사례GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: 보안 로그 분석을 위한 빅데이터 시스템 구축 사례
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: 보안 로그 분석을 위한 빅데이터 시스템 구축 사례
 
Tajo TPC-H Benchmark Test on AWS
Tajo TPC-H Benchmark Test on AWSTajo TPC-H Benchmark Test on AWS
Tajo TPC-H Benchmark Test on AWS
 
Expanding Your Data Warehouse with Tajo
Expanding Your Data Warehouse with TajoExpanding Your Data Warehouse with Tajo
Expanding Your Data Warehouse with Tajo
 
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: Tajo와 SQL-on-Hadoop
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: Tajo와 SQL-on-HadoopGRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: Tajo와 SQL-on-Hadoop
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: Tajo와 SQL-on-Hadoop
 
[Pgday.Seoul 2018] Greenplum의 노드 분산 설계
[Pgday.Seoul 2018]  Greenplum의 노드 분산 설계[Pgday.Seoul 2018]  Greenplum의 노드 분산 설계
[Pgday.Seoul 2018] Greenplum의 노드 분산 설계
 
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
 
실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8
 
elasticsearch
elasticsearchelasticsearch
elasticsearch
 
Infiniflux introduction
Infiniflux introductionInfiniflux introduction
Infiniflux introduction
 
InfiniFlux 성능 지표
InfiniFlux 성능 지표InfiniFlux 성능 지표
InfiniFlux 성능 지표
 
SQL-on-Hadoop with Apache Tajo, and application case of SK Telecom
SQL-on-Hadoop with Apache Tajo,  and application case of SK TelecomSQL-on-Hadoop with Apache Tajo,  and application case of SK Telecom
SQL-on-Hadoop with Apache Tajo, and application case of SK Telecom
 
빅데이터 구축 사례
빅데이터 구축 사례빅데이터 구축 사례
빅데이터 구축 사례
 
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
 

Viewers also liked

Ch1.대규모웹서비스
Ch1.대규모웹서비스Ch1.대규모웹서비스
Ch1.대규모웹서비스
thx2uys
 
프로그래머로 사는법
프로그래머로 사는법프로그래머로 사는법
프로그래머로 사는법ukjinkwoun
 
프로그래머로 사는법.Chapter 12.시간관리
프로그래머로 사는법.Chapter 12.시간관리프로그래머로 사는법.Chapter 12.시간관리
프로그래머로 사는법.Chapter 12.시간관리
Choonghyun Yang
 
프로그래머로 사는 법 Ch1
프로그래머로 사는 법 Ch1프로그래머로 사는 법 Ch1
프로그래머로 사는 법 Ch1HyeonSeok Choi
 
프로그래머로사는법 Ch10
프로그래머로사는법 Ch10프로그래머로사는법 Ch10
프로그래머로사는법 Ch10HyeonSeok Choi
 
쿠키를 통해 구현해보는 간단한 로그인 과정
쿠키를 통해 구현해보는 간단한 로그인 과정쿠키를 통해 구현해보는 간단한 로그인 과정
쿠키를 통해 구현해보는 간단한 로그인 과정
Yoonwhan Lee
 
More effective c++ 1
More effective c++ 1More effective c++ 1
More effective c++ 1현찬 양
 
Mysql old password 깨기
Mysql old password 깨기Mysql old password 깨기
Mysql old password 깨기HyunSeung Kim
 
H3 2011 대형사이트 구축을 위한 MySQL 튜닝전략_데이터지능팀_성동찬
H3 2011 대형사이트 구축을 위한 MySQL 튜닝전략_데이터지능팀_성동찬H3 2011 대형사이트 구축을 위한 MySQL 튜닝전략_데이터지능팀_성동찬
H3 2011 대형사이트 구축을 위한 MySQL 튜닝전략_데이터지능팀_성동찬KTH, 케이티하이텔
 
PHP 개발 생산성을 높여주는 통합 개발 환경 - 이클립스 PDT
PHP 개발 생산성을 높여주는 통합 개발 환경 - 이클립스 PDTPHP 개발 생산성을 높여주는 통합 개발 환경 - 이클립스 PDT
PHP 개발 생산성을 높여주는 통합 개발 환경 - 이클립스 PDT
Young D
 
PHP Profiling
PHP ProfilingPHP Profiling
PHP Profiling
Sungbum Hong
 
Exception&log
Exception&logException&log
Exception&log
Nam Hyeonuk
 
Effective c++ 4
Effective c++ 4Effective c++ 4
Effective c++ 4현찬 양
 
programming with GDB
programming with GDBprogramming with GDB
programming with GDBNakCheon Jung
 
[2015:1] phpdocumentor 설치와 사용법
[2015:1] phpdocumentor 설치와 사용법[2015:1] phpdocumentor 설치와 사용법
[2015:1] phpdocumentor 설치와 사용법
Amy Kim
 
xecon-phpfest2014composer
xecon-phpfest2014composerxecon-phpfest2014composer
xecon-phpfest2014composer
jhyeon1010
 
NHN NEXT 2014년도 게임트랙 소개
NHN NEXT 2014년도 게임트랙 소개 NHN NEXT 2014년도 게임트랙 소개
NHN NEXT 2014년도 게임트랙 소개
Seungmo Koo
 
게임서버프로그래밍 #5 - 데이터베이스 핸들링
게임서버프로그래밍 #5 - 데이터베이스 핸들링게임서버프로그래밍 #5 - 데이터베이스 핸들링
게임서버프로그래밍 #5 - 데이터베이스 핸들링
Seungmo Koo
 
Laravel 로 배우는 서버사이드 #3
Laravel 로 배우는 서버사이드 #3Laravel 로 배우는 서버사이드 #3
Laravel 로 배우는 서버사이드 #3
성일 한
 
MySQL delete.update
MySQL delete.updateMySQL delete.update
MySQL delete.update
Hoyoung Jung
 

Viewers also liked (20)

Ch1.대규모웹서비스
Ch1.대규모웹서비스Ch1.대규모웹서비스
Ch1.대규모웹서비스
 
프로그래머로 사는법
프로그래머로 사는법프로그래머로 사는법
프로그래머로 사는법
 
프로그래머로 사는법.Chapter 12.시간관리
프로그래머로 사는법.Chapter 12.시간관리프로그래머로 사는법.Chapter 12.시간관리
프로그래머로 사는법.Chapter 12.시간관리
 
프로그래머로 사는 법 Ch1
프로그래머로 사는 법 Ch1프로그래머로 사는 법 Ch1
프로그래머로 사는 법 Ch1
 
프로그래머로사는법 Ch10
프로그래머로사는법 Ch10프로그래머로사는법 Ch10
프로그래머로사는법 Ch10
 
쿠키를 통해 구현해보는 간단한 로그인 과정
쿠키를 통해 구현해보는 간단한 로그인 과정쿠키를 통해 구현해보는 간단한 로그인 과정
쿠키를 통해 구현해보는 간단한 로그인 과정
 
More effective c++ 1
More effective c++ 1More effective c++ 1
More effective c++ 1
 
Mysql old password 깨기
Mysql old password 깨기Mysql old password 깨기
Mysql old password 깨기
 
H3 2011 대형사이트 구축을 위한 MySQL 튜닝전략_데이터지능팀_성동찬
H3 2011 대형사이트 구축을 위한 MySQL 튜닝전략_데이터지능팀_성동찬H3 2011 대형사이트 구축을 위한 MySQL 튜닝전략_데이터지능팀_성동찬
H3 2011 대형사이트 구축을 위한 MySQL 튜닝전략_데이터지능팀_성동찬
 
PHP 개발 생산성을 높여주는 통합 개발 환경 - 이클립스 PDT
PHP 개발 생산성을 높여주는 통합 개발 환경 - 이클립스 PDTPHP 개발 생산성을 높여주는 통합 개발 환경 - 이클립스 PDT
PHP 개발 생산성을 높여주는 통합 개발 환경 - 이클립스 PDT
 
PHP Profiling
PHP ProfilingPHP Profiling
PHP Profiling
 
Exception&log
Exception&logException&log
Exception&log
 
Effective c++ 4
Effective c++ 4Effective c++ 4
Effective c++ 4
 
programming with GDB
programming with GDBprogramming with GDB
programming with GDB
 
[2015:1] phpdocumentor 설치와 사용법
[2015:1] phpdocumentor 설치와 사용법[2015:1] phpdocumentor 설치와 사용법
[2015:1] phpdocumentor 설치와 사용법
 
xecon-phpfest2014composer
xecon-phpfest2014composerxecon-phpfest2014composer
xecon-phpfest2014composer
 
NHN NEXT 2014년도 게임트랙 소개
NHN NEXT 2014년도 게임트랙 소개 NHN NEXT 2014년도 게임트랙 소개
NHN NEXT 2014년도 게임트랙 소개
 
게임서버프로그래밍 #5 - 데이터베이스 핸들링
게임서버프로그래밍 #5 - 데이터베이스 핸들링게임서버프로그래밍 #5 - 데이터베이스 핸들링
게임서버프로그래밍 #5 - 데이터베이스 핸들링
 
Laravel 로 배우는 서버사이드 #3
Laravel 로 배우는 서버사이드 #3Laravel 로 배우는 서버사이드 #3
Laravel 로 배우는 서버사이드 #3
 
MySQL delete.update
MySQL delete.updateMySQL delete.update
MySQL delete.update
 

Similar to 대규모 서비스를 지탱하는 기술 Ch 4

Memcached의 확장성 개선
Memcached의 확장성 개선Memcached의 확장성 개선
Memcached의 확장성 개선NAVER D2
 
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
Amazon Web Services Korea
 
Amazon Aurora 신규 서비스 알아보기::최유정::AWS Summit Seoul 2018
Amazon Aurora 신규 서비스 알아보기::최유정::AWS Summit Seoul 2018Amazon Aurora 신규 서비스 알아보기::최유정::AWS Summit Seoul 2018
Amazon Aurora 신규 서비스 알아보기::최유정::AWS Summit Seoul 2018Amazon Web Services Korea
 
실전! AWS 기반 데이터베이스 마이그레이션::최홍식::AWS Summit Seoul 2018
실전! AWS 기반 데이터베이스 마이그레이션::최홍식::AWS Summit Seoul 2018실전! AWS 기반 데이터베이스 마이그레이션::최홍식::AWS Summit Seoul 2018
실전! AWS 기반 데이터베이스 마이그레이션::최홍식::AWS Summit Seoul 2018Amazon Web Services Korea
 
Kubernetes
Kubernetes Kubernetes
Kubernetes
Kyung Koo Yoon
 
AWS 클라우드로 천만명 웹 서비스 확장하기 - 윤석찬 백승현 - AWS Summit 2016
AWS 클라우드로 천만명 웹 서비스 확장하기 - 윤석찬 백승현 - AWS Summit 2016AWS 클라우드로 천만명 웹 서비스 확장하기 - 윤석찬 백승현 - AWS Summit 2016
AWS 클라우드로 천만명 웹 서비스 확장하기 - 윤석찬 백승현 - AWS Summit 2016
Amazon Web Services Korea
 
AWS 6월 웨비나 | AWS에서 MS SQL 서버 운영하기 (김민성 솔루션즈아키텍트)
AWS 6월 웨비나 | AWS에서 MS SQL 서버 운영하기 (김민성 솔루션즈아키텍트)AWS 6월 웨비나 | AWS에서 MS SQL 서버 운영하기 (김민성 솔루션즈아키텍트)
AWS 6월 웨비나 | AWS에서 MS SQL 서버 운영하기 (김민성 솔루션즈아키텍트)
Amazon Web Services Korea
 
AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim
AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil KimAWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim
AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim
Amazon Web Services Korea
 
AWS 9월 웨비나 | Amazon Aurora Deep Dive
AWS 9월 웨비나 | Amazon Aurora Deep DiveAWS 9월 웨비나 | Amazon Aurora Deep Dive
AWS 9월 웨비나 | Amazon Aurora Deep Dive
Amazon Web Services Korea
 
2017 AWS DB Day | Amazon Aurora 자세히 살펴보기
2017 AWS DB Day | Amazon Aurora 자세히 살펴보기2017 AWS DB Day | Amazon Aurora 자세히 살펴보기
2017 AWS DB Day | Amazon Aurora 자세히 살펴보기
Amazon Web Services Korea
 
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017
Amazon Web Services Korea
 
Tajo and SQL-on-Hadoop in Tech Planet 2013
Tajo and SQL-on-Hadoop in Tech Planet 2013Tajo and SQL-on-Hadoop in Tech Planet 2013
Tajo and SQL-on-Hadoop in Tech Planet 2013
Gruter
 
Amazon ECS/ECR을 활용하여 마이크로서비스 구성하기 - 김기완 (AWS 솔루션즈아키텍트)
Amazon ECS/ECR을 활용하여 마이크로서비스 구성하기 - 김기완 (AWS 솔루션즈아키텍트)Amazon ECS/ECR을 활용하여 마이크로서비스 구성하기 - 김기완 (AWS 솔루션즈아키텍트)
Amazon ECS/ECR을 활용하여 마이크로서비스 구성하기 - 김기완 (AWS 솔루션즈아키텍트)
Amazon Web Services Korea
 
10월 웨비나 - AWS 상에서 Microsoft SQL Server 운영의 모범 사례 살펴보기 (최정욱 솔루션즈 아키텍트)
10월 웨비나 - AWS 상에서 Microsoft SQL Server 운영의 모범 사례 살펴보기 (최정욱 솔루션즈 아키텍트)10월 웨비나 - AWS 상에서 Microsoft SQL Server 운영의 모범 사례 살펴보기 (최정욱 솔루션즈 아키텍트)
10월 웨비나 - AWS 상에서 Microsoft SQL Server 운영의 모범 사례 살펴보기 (최정욱 솔루션즈 아키텍트)
Amazon Web Services Korea
 
천만 사용자를 위한 AWS 클라우드 아키텍쳐 진화하기- AWS Summit Seoul 2017
천만 사용자를 위한 AWS 클라우드 아키텍쳐 진화하기- AWS Summit Seoul 2017천만 사용자를 위한 AWS 클라우드 아키텍쳐 진화하기- AWS Summit Seoul 2017
천만 사용자를 위한 AWS 클라우드 아키텍쳐 진화하기- AWS Summit Seoul 2017
Amazon Web Services Korea
 
MariaDB 마이그레이션 - 네오클로바
MariaDB 마이그레이션 - 네오클로바MariaDB 마이그레이션 - 네오클로바
MariaDB 마이그레이션 - 네오클로바
NeoClova
 
DBMS 아키텍처
DBMS 아키텍처DBMS 아키텍처
DBMS 아키텍처
HaksunLEE6
 
MySQL_SQL_Tunning_v0.1.3.docx
MySQL_SQL_Tunning_v0.1.3.docxMySQL_SQL_Tunning_v0.1.3.docx
MySQL_SQL_Tunning_v0.1.3.docx
NeoClova
 
Amazon Aurora 100% 활용하기
Amazon Aurora 100% 활용하기Amazon Aurora 100% 활용하기
Amazon Aurora 100% 활용하기
Amazon Web Services Korea
 
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017
Amazon Web Services Korea
 

Similar to 대규모 서비스를 지탱하는 기술 Ch 4 (20)

Memcached의 확장성 개선
Memcached의 확장성 개선Memcached의 확장성 개선
Memcached의 확장성 개선
 
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
 
Amazon Aurora 신규 서비스 알아보기::최유정::AWS Summit Seoul 2018
Amazon Aurora 신규 서비스 알아보기::최유정::AWS Summit Seoul 2018Amazon Aurora 신규 서비스 알아보기::최유정::AWS Summit Seoul 2018
Amazon Aurora 신규 서비스 알아보기::최유정::AWS Summit Seoul 2018
 
실전! AWS 기반 데이터베이스 마이그레이션::최홍식::AWS Summit Seoul 2018
실전! AWS 기반 데이터베이스 마이그레이션::최홍식::AWS Summit Seoul 2018실전! AWS 기반 데이터베이스 마이그레이션::최홍식::AWS Summit Seoul 2018
실전! AWS 기반 데이터베이스 마이그레이션::최홍식::AWS Summit Seoul 2018
 
Kubernetes
Kubernetes Kubernetes
Kubernetes
 
AWS 클라우드로 천만명 웹 서비스 확장하기 - 윤석찬 백승현 - AWS Summit 2016
AWS 클라우드로 천만명 웹 서비스 확장하기 - 윤석찬 백승현 - AWS Summit 2016AWS 클라우드로 천만명 웹 서비스 확장하기 - 윤석찬 백승현 - AWS Summit 2016
AWS 클라우드로 천만명 웹 서비스 확장하기 - 윤석찬 백승현 - AWS Summit 2016
 
AWS 6월 웨비나 | AWS에서 MS SQL 서버 운영하기 (김민성 솔루션즈아키텍트)
AWS 6월 웨비나 | AWS에서 MS SQL 서버 운영하기 (김민성 솔루션즈아키텍트)AWS 6월 웨비나 | AWS에서 MS SQL 서버 운영하기 (김민성 솔루션즈아키텍트)
AWS 6월 웨비나 | AWS에서 MS SQL 서버 운영하기 (김민성 솔루션즈아키텍트)
 
AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim
AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil KimAWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim
AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim
 
AWS 9월 웨비나 | Amazon Aurora Deep Dive
AWS 9월 웨비나 | Amazon Aurora Deep DiveAWS 9월 웨비나 | Amazon Aurora Deep Dive
AWS 9월 웨비나 | Amazon Aurora Deep Dive
 
2017 AWS DB Day | Amazon Aurora 자세히 살펴보기
2017 AWS DB Day | Amazon Aurora 자세히 살펴보기2017 AWS DB Day | Amazon Aurora 자세히 살펴보기
2017 AWS DB Day | Amazon Aurora 자세히 살펴보기
 
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017
 
Tajo and SQL-on-Hadoop in Tech Planet 2013
Tajo and SQL-on-Hadoop in Tech Planet 2013Tajo and SQL-on-Hadoop in Tech Planet 2013
Tajo and SQL-on-Hadoop in Tech Planet 2013
 
Amazon ECS/ECR을 활용하여 마이크로서비스 구성하기 - 김기완 (AWS 솔루션즈아키텍트)
Amazon ECS/ECR을 활용하여 마이크로서비스 구성하기 - 김기완 (AWS 솔루션즈아키텍트)Amazon ECS/ECR을 활용하여 마이크로서비스 구성하기 - 김기완 (AWS 솔루션즈아키텍트)
Amazon ECS/ECR을 활용하여 마이크로서비스 구성하기 - 김기완 (AWS 솔루션즈아키텍트)
 
10월 웨비나 - AWS 상에서 Microsoft SQL Server 운영의 모범 사례 살펴보기 (최정욱 솔루션즈 아키텍트)
10월 웨비나 - AWS 상에서 Microsoft SQL Server 운영의 모범 사례 살펴보기 (최정욱 솔루션즈 아키텍트)10월 웨비나 - AWS 상에서 Microsoft SQL Server 운영의 모범 사례 살펴보기 (최정욱 솔루션즈 아키텍트)
10월 웨비나 - AWS 상에서 Microsoft SQL Server 운영의 모범 사례 살펴보기 (최정욱 솔루션즈 아키텍트)
 
천만 사용자를 위한 AWS 클라우드 아키텍쳐 진화하기- AWS Summit Seoul 2017
천만 사용자를 위한 AWS 클라우드 아키텍쳐 진화하기- AWS Summit Seoul 2017천만 사용자를 위한 AWS 클라우드 아키텍쳐 진화하기- AWS Summit Seoul 2017
천만 사용자를 위한 AWS 클라우드 아키텍쳐 진화하기- AWS Summit Seoul 2017
 
MariaDB 마이그레이션 - 네오클로바
MariaDB 마이그레이션 - 네오클로바MariaDB 마이그레이션 - 네오클로바
MariaDB 마이그레이션 - 네오클로바
 
DBMS 아키텍처
DBMS 아키텍처DBMS 아키텍처
DBMS 아키텍처
 
MySQL_SQL_Tunning_v0.1.3.docx
MySQL_SQL_Tunning_v0.1.3.docxMySQL_SQL_Tunning_v0.1.3.docx
MySQL_SQL_Tunning_v0.1.3.docx
 
Amazon Aurora 100% 활용하기
Amazon Aurora 100% 활용하기Amazon Aurora 100% 활용하기
Amazon Aurora 100% 활용하기
 
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017
AWS DMS를 통한 오라클 DB 마이그레이션 방법 - AWS Summit Seoul 2017
 

More from ukjinkwoun

Tobi 스프링 2장 php version
Tobi 스프링 2장   php versionTobi 스프링 2장   php version
Tobi 스프링 2장 php version
ukjinkwoun
 
Chapter 1 0 이야기
Chapter 1 0 이야기Chapter 1 0 이야기
Chapter 1 0 이야기
ukjinkwoun
 
Head first chapter 1
Head first chapter 1Head first chapter 1
Head first chapter 1
ukjinkwoun
 
Clean code chapter9
Clean code chapter9Clean code chapter9
Clean code chapter9
ukjinkwoun
 
Clean code chapter1
Clean code chapter1Clean code chapter1
Clean code chapter1
ukjinkwoun
 
만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장
만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장
만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장ukjinkwoun
 
코드 Ch4
코드 Ch4코드 Ch4
코드 Ch4
ukjinkwoun
 
프로그래머로 사는법 챕터16
프로그래머로 사는법   챕터16프로그래머로 사는법   챕터16
프로그래머로 사는법 챕터16ukjinkwoun
 
프로그래머로 사는법 챕터9
프로그래머로 사는법   챕터9프로그래머로 사는법   챕터9
프로그래머로 사는법 챕터9ukjinkwoun
 
대규모 구조
대규모 구조대규모 구조
대규모 구조ukjinkwoun
 
도메인 객체의 생명주기
도메인 객체의 생명주기도메인 객체의 생명주기
도메인 객체의 생명주기
ukjinkwoun
 

More from ukjinkwoun (13)

Tobi 스프링 2장 php version
Tobi 스프링 2장   php versionTobi 스프링 2장   php version
Tobi 스프링 2장 php version
 
Chapter 1 0 이야기
Chapter 1 0 이야기Chapter 1 0 이야기
Chapter 1 0 이야기
 
Head first chapter 1
Head first chapter 1Head first chapter 1
Head first chapter 1
 
Clean code chapter9
Clean code chapter9Clean code chapter9
Clean code chapter9
 
Clean code chapter1
Clean code chapter1Clean code chapter1
Clean code chapter1
 
만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장
만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장
만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장
 
코드 Ch23
코드 Ch23코드 Ch23
코드 Ch23
 
코드 Ch20
코드 Ch20코드 Ch20
코드 Ch20
 
코드 Ch4
코드 Ch4코드 Ch4
코드 Ch4
 
프로그래머로 사는법 챕터16
프로그래머로 사는법   챕터16프로그래머로 사는법   챕터16
프로그래머로 사는법 챕터16
 
프로그래머로 사는법 챕터9
프로그래머로 사는법   챕터9프로그래머로 사는법   챕터9
프로그래머로 사는법 챕터9
 
대규모 구조
대규모 구조대규모 구조
대규모 구조
 
도메인 객체의 생명주기
도메인 객체의 생명주기도메인 객체의 생명주기
도메인 객체의 생명주기
 

대규모 서비스를 지탱하는 기술 Ch 4

  • 1. Chapter 04 DB 스케일 아웃 전략
  • 3. MySQL 운용 포인트 • OS 캐시 활용 • 인덱스를 적절하게 설정하기 • 확장을 전제로 한 설계
  • 4. OS 캐시 활용 • 전체 데이터 크기에 주의 1) „데이터량 < 물리메모리‟ 를 유지 2) 메모리가 부족할 경우 증설 • 스키마 설계가 데이터 크기에 미치는 영향을 고려 Ex) 3억 레코드 짜리 테이블에 8바이트 컬럼 추가 8 X 3 억 바이트 = 3GB 메모리 3GB 필요함
  • 5. 번외) MySQL 캐시 Mysql 아키텍쳐 Mysql에서 Cache를 제공함
  • 6. Query_Cache_Size : 크기 Query_Cache_Type = ON – 예외사항을 제외한 모든 SQL결과를 메모리에 캐싱 Query_Cache_Type = OFF – Query Cache를 사용하지 않음 Query_Cache_Type = DEMAND – 사용자 요청시에만 Query Cache를 사용 Ex) 3번 사용시 쿼리문 예시 SELECT SQL_CACHE id, name FROM customer; SELECT SQL_NO_CACHE id, name FROM customer; 출처 : http://dev.kthcorp.com/2011/08/02/query-cache-use-at-your-own-risk/ Mysql config 설정 ( my.cnf 파일 )
  • 7. 테이블 별 물리데이타를 줄여서 메모리에 올려 놓을 수 있다! 정규화! uid bookmark eid timestamp is_private is_asin 필수 항목 필요 항목 컬럼을 쪼개서 데이터 량을 줄임
  • 8. 인덱스 • 인덱스의 중요성 • 인덱스의 효과 • 인덱스가 작용하는지 확인 하는 법
  • 9. 1) 인덱스의 중요성 트리 이진트리 B트리 루트에서 각 노드에 찾고 있는 값이 저장되어 있는지 확인 이때 찾는 값의 대소관계로 어떤 자식을 찾아가면 될지가 결정
  • 10. 이진트리 B트리 이진트리와 B트리의 차이점 부모 노드는 1개 나머지 자식 노드는 2개로 정해져 있음 =>특정 노드를 모아서 1블록에 저장하는 작업이 어려움 B트리는 노드의 개수를 조절 할수 있음 => 디스크의 1블록 크기로 잡아서 OS의 디스크 seek을 줄임
  • 11. 2) 인덱스의 효과 • B트리는 디스크 구조에 최적화 => 디스크 Seek 횟수에 개선 • 계산량 개선 인덱스 없음 : 선형 탐색 인덱스 있음 : B트리로 이분탐색 O(n) => O(log n) 개선
  • 12. • 복수 컬럼에 동시에 인덱스를 태우고자 할 경우 =>복합 인덱스를 사용해야함 ex) select * from entry where url like „http://d.%‟ order by timestamp 예상) url인덱스에서 고속으로 url 검색후 좁혀진 범위에서 timestamp 인덱스에서 고속 정렬 실제) 한쪽 인덱스만 사용됨
  • 13. • explain문 추가시 쿼리 속도는 explain 실행 명령 포함 속도 • “감시방안을 늘림” slow-log시 리포팅 등 (my.cnf 의 slow_query_log 등을 남길수 있음) 3) 인덱스가 작용하는지 확인하는 법
  • 14. 그림 4.5 explain 명령 ( p99 )
  • 15. 강의 12 MySQL의 분산 – 확장을 전제로 한 시스템 설계
  • 16. 로드 밸런서 MySQL 슬레이브 MySQL 슬레이브 MySQL 슬레이브 MySQL 마스터 AP 서버 AP 서버 AP 서버 AP 서버 참조 쿼리는 슬레이브에서! 갱신 쿼리는 마스터에서! =>참조 부하를 분산 MySQL 레플리케이션 기능
  • 17. • 웹 애플리케이션에서는 대략 90% 이상이 참조계열 쿼리 마스터가 병목이 되는 경우가 적음 마스터가 부하가 됐을 경우 해결책 1) 테이블 분할 쓰기작업 분산 2) RDBMS 사용(x) key-value 스토어 사용 마스터/슬레이브의 특징
  • 19. MySQL의 스케일 아웃 전략 데이터가 메모리에 올라가는 크기 메모리에올린다 데이터가 메모리에 올라가지 않는 크기 메모리를 증가 메모리 증가가 불가능한 경우 파티셔닝
  • 20. 파티셔닝 A B A B 분할 • 테이블 단위로 분할 • 특정 알고리즘으로 분할 ex) 문자열 a-d가 A , 문자열 e-h가 B … 파티셔닝? 한대였던 DB 서버를 여러 대의 서버로 분할하는 방법
  • 21. 파티셔닝을 전제로 한 설계 entry tag * 1 1) entry 테이블과 tag 테이블이 같은 머신에 있을경우 JOIN 쿼리 가능 2) entry 테이블과 tag 테이블이 다른 머신에 있을경우 JOIN 쿼리 불가능 WHERE , IN 쿼리로 분리
  • 22. 애플리케이션 용도와 서버 대수 New 서버 복사가능 New 서버 복사불가능 4대가 1세트 3대가 1세트 파티셔닝시 장비 4대씩 증가 서버 대수 증가 고장률 증가
  • 23. 파티셔닝의 장단점 장점 : 부하가 내려가고 캐시 효과가 높아진다 단점 : 1) 운용이 복잡해진다. 2) 고장률이 높아진다.( 기본 4대가 1세트 ) 3) 운용이 복잡해지면 경제적 비용이 높아진다. 파티셔닝은 어디까지나 마지막 카드!