2009년 6월 21일 일요일

Falcon의 동작확인

Falcon은 MySQL AB의 Web사이트에서 입수가능하다. ( http://dev.mysql.com/downloads/mysql/5.2.html)

MySQL Community Server 하고 같이 운영체제에 따른 빌드된 바이너리파일이 제공되고 있기때문에 자기가 빌드할 필요는 없다.

또 당연하지만 소스코드도 공개되어있으므로 상세한 동작원리를 알고 싶은 경우에는 자기가 소스코드를 확인하는 것도 가능하다.

mysqld프로세스를 기동한 다음에 명령어 툴인 mysql로 접속해서 다음과 같은 명령어를 실행하면 Falcon이 이용가능한지 알 수 있다.

이용가능한 스토리지엔진 확인
mysql> SHOW ENGINES\G
...생략
********************** 4.row **********************
Engine: Falcon
Support: YES
Comment: Falcon storage engine
Transactions:YES
XA:NO
Savepoints:YES
.....생략

Engine: Falcon이라는 항목이 있고 Support: YES이면 Falcon이 이용가능하다는 뜻이 된다.

Falcon테이블의 작성은 CREATE TABLE문 말미에 ENGINE=Falcon을 붙여서 실행한다.

설정파일 my.cnf에서 default-storage-engine=Falcon을 지정해두면 ENGINE구를 생략한 경우에도 자동적으로 Falcon테이블이 된다.

Falcon테이블 생성
mysql> CREATE TABLE tbl1(id INTEGER AUTO_INCREMENT PRIMARY KEY, value VARCHAR(30) ) ENGINE=Falcon;
mysql> SHOW CREATE TABLE tbl1\G

트랜잭션제어는 다음과 같이 조작한다.

트랜잭션 개시
mysql> START TRANSACTION;
mysql> INSERT INTO tbl1 VALUES(null, 'abc');
mysql> ROLLBACK;
mysql> SELECT * FROM tbl1;
Empty set (0.00 sec)

롤백을 함으로 INSERT문이 무효화된다는 것을 알 수 있다.

보면 알겠지만 Falcon은 어디까지나 스토리지엔진의 하나에 지나치지 않으므로 어플리케이션에서 봤을 때의 조작방법(DDL/SQL문등)은 특별히 바뀌지는 않는다.

그것보다는 파일구성이나 아키텍쳐, 다른 스토리지엔진(특별히 InnoDB)와의 작은 동작의 차이등이 고민될 것이다.

기본적으로 RDBMS에 있어서 bottleneck이 되기 쉬운 디스크I/O 회수와 그 양을 줄이자라는 의도가 있으므로 이것을 염두에 보고 아래 내용들을 알아보자.

  • 파일의 구성
  • 데이터형과 영역관리
  • 트랜잭션
  • 프로세스/스레드, 메모리구성
  • 인덱스
  • 설정파라미터