/글쓴이 : Mark Nielsen 글쓴이 소개: 글쓴이는 The Computer Underground, Inc.에서 일하는데 리눅스괴짜로 통한다. 멍청한 일을 재미있게 하고 바보같은 프로젝트를 만들기도 한다. 왜그렇게 하느냐고? 그렇게 하면 컴퓨터가 재미있지 않을까... Mark는 ZING,www.genericbooks.com에서 무료,공개 소프트웨어와 책자를 만드는데 자원봉사자로 일기도 하다. 순서: |
Abstract:
This article shows how to speed up a PostgreSQL database server using a RAMDISK.
Ramdisk는 기본적으로 여러분의 메모리를 하드디스크 드라이브처럼 사용하는 것이다. 여러분이 ramdisk를 사용한다고 하면 하드 드라이브를 사용하는 것이 아니라 메모리를 사용하는 것이라는 얘기다. 여기에는 장단점이 함께 있다. 가장 큰 장점은 메모리를 사용하는 것이기때문에 여러분이 수행하고자 하는 작업을 하드디스크에서 사용할 때보다 매우 빠르게 수행 할 수 있다. 가장 큰 단점은 여러분의 데이터베이스에 변경사항이 발생했을때 컴퓨터가 재부팅된다면 이 변경사항을 모두 잃어버리게 된다. 이점은 데이터베이스의 무결성에 치명적인 단점으로 작용한다.
그렇지만 만약 PostgreSQL서버에서 모든 데이터베이스를 메모리에 읽어수행한다면 속도는 매우 빨라 질 것이다.
mkdir -p /Test mkfs -t ext2 /dev/ram0 mount /dev/ram0 /Test만약 초기설정값이 50메가의 크기를 변경하고자 할때는 다음과 같이 한다.
boot=/dev/hda map=/boot/map install=/boot/boot.b prompt timeout=50 image=/boot/vmlinuz-2.2.5-15 label=linux root=/dev/hda2 read-only ramdisk=50000
mkdir -p /Test mkfs -t ext2 /dev/ram0 mount /dev/ram0 /Test
매번 켤때마다 이 명령어를 입력하기 싫다면 /etc/rc.d/rc.local에 이 명령을 추가해도 된다.
주석: 이 글에서는 이미 여러분의 데이터베이스 서버의 크기보다 훨씬 더 큰 크기를 가진 ramdisk가 이미 lilo.conf에 설정되어 있는 것으로 가정하고 이야기를 한다. 만약 어느정도 크기면 될지 알고 싶다면 "cd /var/lib/pgsql; du "명령을 이용하면 된다.
어쨌든 현재 "/var/lib/pgsql"에 설치되어 있는 postgresql서버를 메모리로 올리기 위해서는 다음과 같이 한다.
### 현재 postgresql서버를 중지시킨다. /etc/rc.d/init.d/postgres stop ### 현재 디렉토리의 이름을 바꾼다. mv /var/lib/pgsql /var/lib/pgsql_main #### ramdisk에 디렉토리를 생성한다. mkdir -p /var/lib/pgsql_memory #### 새로 만들어진 디렉토리의 소유자를 postgres나 #### 실제 디렉토리 소유아이디로 변경한다. chown postgres /var/lib/pgsql_memory #### 앨리어스를 만들거나 원래 이름(/var/lib/pgsql)과 연결시킨다. ln -s /var/lib/pgsql_memory /var/lib/pgsql #### ramdisk를 포맷한다. mkfs -t ext2 /dev/ram0 #### ramdisk를 postgresql디렉토리에 마운트 시킨다. mount /dev/ram0 /var/lib/pgsql_memory #### postgres의 디렉토리에 있는 모든 것을 ramdisk로 복사한다. tar -C /var/lib/pgsql_main -cp . | tar -C /var/lib/pgsql_memory -xp ### postgresql서버를 가동시킨다. /etc/rc.d/init.d/postgres start
그때 깨달은 사실은 데이터가 시스템에 의해 캐쉬되어져 성능값이 10%에서 20%정도로 밖에 향상되지 않았다는 것이다. 만약 하나씩만 존재하는 많은 량의 데이터들이 데이터베이스로 입력이 되면 그 성능은 극적으로 향상되게 된다.
ramdisk기법을 사용할 때 얻을 수 있는 가장 큰 장점은 데이터베이스가 하드드라이브에 접근하지 않고 바로 메모리에서 이용할 수 있다는 점이다. 만약 ramdisk를 사용하지 않는다면 데이터베이스는 아마 종종 캐쉬부족으로 스와핑작업을 수행하여 하드디스크로부터 새로 값을 불러 올 것이다.
리눅스포커스 편집자팀에서 관리합니다.
© Mark Nielsen LinuxFocus 1999 |
번역 정보 :
|
1999-10-26, generated by lfparser version 0.8