PGTune, 최소한의 튜닝
PGTune 을 방문해서, 하드웨어 등에 대한 정보를 입력하면, 파라미터를 자동으로 계산해준다.
소스코드는 GitHub의 Pgtune 에 있는 것 같다.
1. 입력값
1.1. DB version
select version();
1.2. OS Type
선택할 수 있는 것이 Linux, OS X, Windows 밖에 없다.
1.3. DB Type
다음 중 하나를 선택할 수 있다.
- Web application
- Online transcation processing sytem
- Data warehouse
- Desktop application
- Mixed type of application
가장 주된 용도를 실질적이고 기술적인 측면에서 선택하는 것을 권장한다.
언젠가는 다른 목적으로 사용할 수 있다는 막연한 전제로 "Mixed type of application" 를 선택하는 경우가 생각외로 많은 것 같은데, 다목적 데이타베이스의 실질적인 의미를 되새겨야 한다.
1.4. Total Memory (RAM)
리눅스에서 이 값을 알아낼 수 있는 몇 가지 명령어를 소개한다.
MB 단위로 전체 메모리와 사용중인 메모리를 출력한다.
free -m
GB 단위이다.
free -h
만약 free 유틸리티가 설치되어 있지 않다면 다음의 명령어로 "MemTotal:" 값을 참고한다.
cat /proc/meminfo
이 값이 알고 있는 값과 다르거나 딱 떨어지지 않는 이유는 KB, MB, GB 를 변환한 때 계산식(1MB = 1024KB)이 약간 다르기 때문이다.
1.5. Number of CPUs
리눅스에서 이 값을 알아낼 수 있는 명령어는 다음과 같다.
lscpu
"CPU(s)" 와 "Thread(s) per core" 을 곱한 값이거나 "Thread(s) per core", "Core(s) per socket", "Socket(s)" 값을 곱한 값이다(결과는 같다).
다음과 같이 찾아낼 수도 있는데, processor 의 갯수를 세면 된다.
cat /proc/cpuinfo
1.6. Number of Connections
너무 크거나 너무 작은 값은 의미가 없다.
1.7. Data Storage
2. 한계
여기의 설정값들은 기본값으로 취급해야 한다.
사용자의 숫자에 따라 기본적인 하드웨어 사양이 뒷받침되어야 하고, 대량의 데이타 중 일부를 처리하는 sql 은 - where 절을 사용하는 한 - 그것이 종류와 상관없이 가급적 index scan 을 유도해야 한다.