Postgres 놈이 MySQL 놈과 다른 점이 있다면,
공유메모리를 사용한 다는 것인데,
이것으로 해서, 하나의 커넥션이 1메가 정도의 사용을 한다는 것은
단지 PS 상에서 나타나는 지극히 단순한 결과일 뿐입니다.
7.0.X 버전에는
공유메모리와 쓰레드 기능을 같이 생각한다면,
그리고, 그 커넥션들이 비교적 같은 쿼리를 서버에 요청한다면,
100개의 커넥션이나, 1개의 커넥션이나, 별로 차이가 없는 시스템 퍼포먼스를
자랑합니다. (Postgres 2년 써본 경험에 의한 개인적인 생각)
(대표적인 예로, 10만건 이상의 자료에서 특정부분 총 합계 구하는 쿼리를
사용하면, 공유메모리를 거의 10메가 정도를 사용하지만,
또 다른 커넥션이 똑같은 쿼리를 요구하면, 이것은 postmaster 놈이
자동으로 그 공유메모리를 사용하더군요. (아마 오라클도 이렇게 움직이든듯))
원래 질문한 분의 메모리가 전부 소비되는 현상은 DB 문제가 아니라,
PHP의 루틴 문제나, 아니면, 근본적인 OS 튜닝 문제가 아닐까 싶습니다.
제가 일하고 있는 곳의 Postgres 서버의 쿼리 수는 하루 평균 6만건 이상 됩니다.
이 서버의 메모리는 128메가이고, CPU 400Mhz의 비교적 저 사양(?) 시스템입니다.
이런 시스템에서 Postgres의 성능문제로, 고민해 보지는 않았습니다.
::정재익 님께서 쓰시길::
> 반갑습니다.
> PostgreSQL 에서 사용하는 메모리 소요량이 사실 적은 편은 아닙니다. 한명 접속시마다 약 1M 정도의
> 메모리를 사용한다고 생각하시면 됩니다. 그렇게 보면 한 512 정도의 메모리를 확보하고 있다면 시스템
> 메모리를 빼고라도 한 200명정도의 동시사용자까지는 커버가 가능할 것으로 생각됩니다.
> 200명정도의 동시사용자라면 하루 약 최소 5만 이상 10만 정도의 히트레이트를 기록하는 사이트 일 것
> 으로 판단됩니다. 만약 이정도가 아닌데 그정도의 메모리를 사용한다면 뭔가 다른 문제가 있다고 생각
> 됩니다.
|