레이블이 멀티스토리지엔진인 게시물을 표시합니다. 모든 게시물 표시
레이블이 멀티스토리지엔진인 게시물을 표시합니다. 모든 게시물 표시

2009년 2월 9일 월요일

멀티스토리지엔진의 장점((Multi Storage Engine merit)

복수의 스토리지엔진이 있어서 테이블단위로 선택할 수 있다라는게 무엇이 좋은 점인가?

보통 SQL문의 구문해석과 최적화는 CPU하고 메모리만을 사용한 처리이기 때문에  이 부분은 그다지 성능에 영향은 끼치지 않는다.  그렇지만  그 다음 스텝에서 이루어지는 데이터 검색과 저장은 디스크에 액세스하는 경우가 있어  성능에 대한 영향은 매우 크다. 
일반적으로 메모리하고 디스크는 100배이상의 액세스속도의 차가 있기때문이다. 

그것에 MySQL에서는  다루는 데이터의 특성에 맞추어서 각각 최적의 성능을 발휘할 수 있도록 하기 위한  준비로써 멀티스토리지 엔진/아키텍쳐가 제공된다. 
테이블 설계시 제3정규형으로 한 후에 성능을 고려 비정규화하거나 별도로 테이블을 잘라 만들거나 하는 경우가 있지만 MySQL에서는 특정 데이터만 별도의 테이블로 한 다음에  별도의 스토리지 엔진으로 한다거나 하는 튜닝도 가능하다. 

2009년 2월 5일 목요일

멀티 스토리지 엔진 (Multi Storage Engine)

MySQL을 다른 RDBMS하고 비교해보면 가장 큰 특징이라고 말 할 수 있는 것이 멀티스토리지 엔진 아키텍쳐이다. 

스토리지엔진은 MySQL을 구성하는 기본적인 프로그램의 한개이다. 
스토리지엔진은 데이터, 인덱스 파일에 액세스하거나 그것을 메모리에 캐쉬하면서 데이터의 검색이나 저장을 실제로 수행하는 처리를 담당하는 프로그램이다. 

이와같이 MySQL을 구성하는 다른 중요한 프로그램으로 SQL명령 문자열을 구문해석하는 SQL파서, 최적화, 실행계획을 수행하는 옵티마이저가 있다. 

예를 들어 클라이언트에서 무언가 처리를 하기 위해 SQL명령를 발행한다고 치자.
이 때 MySQL서버는  우선 최초로  그  SQL명령를 TCP/IP등의 네트워크 기능을 통해 패킷을 
수신하고  그곳에서 SQL명령 문자열을 추출한다. 
다음에 수신한 SQL명령을 구문 해석한다. 
이 부분은 SQL파서가 처리를 담당한다. 
SQL파서가 처리함으로써  그 이후에는 문자열이 아니라 보다 프로그램적인 , 처리하기 쉬운 형태로 명령어 정보가 건네지게 된다. 

옵티마이져가 SQL가 SQL문의 최적화와 인덱스등을 사용한 실행계획을 작성한다. 
이로 인해 실제로 테이블에 대한 처리를 최소화하게된다. 
최후에는 그 실행계획을 기반으로  테이블과 인덱스에 실제 액세스하게 된다. 

이 때, 테이블과 인덱스에대한  실제 액세스를  스토리지엔진이  맡고 있다. 
MySQL에서는 복수의 스토리지엔진이 준비되어있어서  이용자는 테이블을 작성할 때 「테이블 단위」로 스토리지 엔진을 선택하는 것이 가능하다.  이러한 구조를 「멀티스토리지 엔진 아키텍쳐」라고 부른다. 

이처럼 MySQL에서는 멀티스토리지 엔진 아키텍쳐가 채용된 이유로  기술적인 이야기 안에는  「스토리지 엔진」이라는 용어가 빈번하게 등장한다. 
MySQL이외의 주요한 RDBMS에서는 멀티스토리지엔진 아키텍쳐를 채용하지 않고 있기 때문에 스토리지 엔진에 대해 특별히 주목되거나 하는 것은 없지만 RDBMS의 일반적인 구조를 생각해보면  스토리지 엔진 그것은 어느 RDBMS나 존재하는 것이다.