2010년 7월 7일 수요일

[MySQL 아키텍처]MySQL 5.1의 새로운 기능

파티셔닝의 지원
 
- Range파티셔닝 : 특정 Row의 지정한 범위를 기준으로 처리
 - List파티셔닝 : 일련의 값들중 특정값들을 기준으로 처리
 - Hash파티셔닝 : 정해진 파티셔닝 개수에 따라 해시 함수를 이용해서 균등하게 처리
 - Key파티셔닝 : 정의된 키를 기준으로 처리
 - Sub파티셔닝 : 상기파티셔닝된것을 다시한번 파티셔닝 하는 방법

 

 

Rnage파티셔닝
 - 지정한 값의 Row를 기준으로 처리, 주로 기간 분할에 사용
 - Range의 법위는 연속적이여야하고 겹쳐서는 안됨
 - VALUES LESS THAN 구문 이용
 - MAXVALUE는 가능한 최대값을 이용
 - Alter table로 추가적인 파티션 생성 가능
 - 칼럼이 Date나 Time을 가지고 있을때 유용

 

 

List파티셔닝
 - Range와 흡사하나 List는 값들의 목록의 일부를 지정, 사원정보를 부서코드별로 파티셔닝
 - 5.1버전에서는 List는 정수값만 가능
 - 정수값 외에는 NULL가능
 - List에 해당하지 않는 값을 INSERT시 에러 발생

 

 

Hash파티셔닝
 - 정해진 파티셔닝 개수에 따라 데이터를 균등하게 배분
 - 개수만 지정해주면 나머진 알아서 처리됨
 - PARTITION BY HASH(exp)를 사용하는데 exp는 항상 정수형 값을 반환해야함
 - 테이블이 UniqueKey를 가진 경우 HASH함수에서 사용되는 컬럼은 반드시 그 키의 일부여야함
 - LINEAR HASH 파티셔닝 지원

 

 

KEY파티셔닝
 - HASH파티셔닝과 거의 흡사하나 유저가 지정한 키에 따라 처리
 - KEY파티셔닝을 위한 해시 함수는 MySQL서버에서 제공
 - Cluster는 MD5 사용 그외는 Password()와 같은 알고리즘 사용
 - PK있으면 사용하고 없으면 not null로 정의된 Unique Key를 사용
 - Key값이 정수형이나 Null이 아니어야하는 제한 없음

 

 

Sub파티셔닝
 - 파티션으로 분리된 파티션을 다시 분리
 - 모든 파티션은 동일한 개수의 서브 파티션을 지정해야함
 - 5.1.8이후 서브파티션의 이름은 유니크 해야함

 

XML 기능
 - 5.1.5버전 부터 XPath를 위한 기능 추가
 - 아직까지는 미약함

 

 

이벤트 스케줄러
 - 데이터베이스 배치 등의 반복잡업을 위한 스케줄러
 - 이벤트는 일회성 이벤트와 반복 이벤트로 구분됨
 - 이벤트 스케줄러 쓰레드가 실행

 - DB가 비정상종료시 스케줄도 무효가 되므로 사용에 유의

 

 

Row 기반 리플리케이션
 - 기존 Statement기반과 함께 추가적으로 Row기반이 추가됨
 - Row에 대한 이미지를 전송되어 처리
 - 세션별로 Statement, Row 구분 처리가능
 - Mixed 방식으로 비용이 낮은 것으로 처리 가능
 - 트랜잭션에 대한 안정성 보장(시간 등의 경우 서버별 시간차이발생 가능)
 - 슬레이브에서는 Lock를 적게 사용
 - 작은단위 트랜잭션의 경우 더 빠르게 처리가능

 

 

데이터베이스화된 로그
 - 로그를 DB화 시켜 저장시킬수 있게 되어서 기동중 On/Off를 처리 가능
 - 로그 처리 방법이 편해질 수 있음

 - 단 DB부하가 높아질 수 있어 사용에 주의

 

 

디스크 기반 MySQL 클러스터
 - 메인메모리 기반에 디스크 기반의 클러스터 기능 추가
 - 인덱싱되지 않은 데이터의 경우 디스크에 저장 가능
 - 리플리케이션 기능이 추가됨


 

댓글 없음:

댓글 쓰기