Ubuntu 18.04 LTS에서 pgpool-II를 사용하여 PostgreSQL 캐시

나는 쓰쿠바 대학 학원 축제 실행 위원 정보 미디어 시스템국의 인프라 담당을 맡았습니다.
학원 축제이지만 물론 기획 검색 시스템 가 제작되었습니다만 (학원제 프로그래머 Advent Calendar 2019 18일째의 @siy1121 가 기사를 쓰고 있습니다), 소프트웨어의 데이타베이스의 설계가 바람직하지 않고, 응답이 비상 늦어졌습니다.
데이터베이스의 설계를 도중에 변경하는 것은 꽤 어렵기 때문에 인프라측에서 해결했습니다.
그 때 이용한 pgpool-II의 사용법과 설명입니다.

넷에는 pgpool-II의 사용법은 CentOS 밖에 없기 때문에, Ubuntu에서의 운용 방법을 씁니다.

pgpool-II란?



pgpool은 PostgreSQL과 클라이언트 사이에서 실행되는 미들웨어입니다. 커넥션 풀링이나 로드 밸런스 등의 기능을 가질 수 있습니다. 이번에는 메모리 내 캐시 기능을 사용합니다.
자세한 것은 이 사이트 를 봐 주시는 것이 좋은 것일까라고.


인메모리 캐시란?



학원 축제의 기획 검색 시스템 를 예로 설명합니다.
예를 들어, 한 태그가 붙은 기획의 일람을 데이타베이스가 돌려줄 경우, 같은 태그를 검색하면 매회 돌려주는 결과는 같아야 합니다. '음식'으로 검색을 걸면 항상 같은 결과가 돌아올 것입니다.
즉, 이전에 쿼리된 적이 있는 SQL문이 다시 문의되면 결과를 첫 단계로 캐시해 두고 그 캐시를 대답하면 쓸데없는 처리가 됩니다.
여기서 문제는 INSERT문 등으로 데이터베이스의 내용이 바뀌었을 때입니다.
이 때 pgpool-II는 대상 테이블의 캐시를 자동으로 모두 삭제합니다.
즉, pgpool-II를 재기동하지 않고 자동적으로 PostgreSQL와의 데이터에 부정합이 없도록 조정해 줍니다.
학원제 당일이 되어(있을 수는 없지만) 음식을 출점하는 기획이 늘어나, INSERT문으로 기획을 추가했다고 해도, pgpool-II는 자동적으로 대상의 테이블에 대한 캐시를 소거해 최신의 데이터를 돌려줍니다 .
덧붙여 이 캐쉬 기능은 최근에는 소프트웨어측에서 이 처리를 하는 것이 늘어 왔다고 합니다.

소개


echo "deb http://apt.postgresql.org/pub/repos/apt/ bionic-pgdg main" | sudo tee -a /etc/apt/sources.list.d/pgdg.list
curl -s https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
sudo apt update
sudo apt upgrade
sudo apt install pgpool2

참고 : htp : // 목구멍. 오 rg / 포 stg 레 sql - 11-pg 포오 l2 - 우분 - 18-04 /

설정



이번, 소프트웨어(기획 검색 시스템)는 아무것도 설정하지 않아도 좋도록, PostgreSQL와 pgpool의 포트 번호를 따릅니다.

PostgreSQL의 설정 파일은 버전에 따라 설정 파일의 위치가 다르므로 주의.

각각 다음 설정 항목을 찾아 편집합니다.

/etc/postgresql/11/main/postgresql.conf
port = 60001                            # PostgreSQLのポート番号 好きに設定する

/etc/pgpool2/pgpool.conf
port = 5432                        # pgpoolのポート番号 ソフトウェアはここにアクセスする

backend_port0 = 60001              #PostgreSQLで設定したポート番号

memory_cache_enabled = on          #キャッシュを有効化します。

설정을 활성화하려면 각 재부팅이 필요합니다.
systemctl restart postgresql
systemctl restart pgpool2
systemctl restart pgpool2가 실패하면 서버를 다시 시작하십시오.

도입은 이상입니다. 캐시를 사용할 수 있는 메모리의 양 등 세세한 설정도 할 수 있습니다. 그것은 구구입니다.

결과



pgpool-II를 도입하기 전에 검색에 걸리는 시간이 48.95초(!????)였던 것이・・・


45.12ms의 검색 시간이 되었습니다! 했어! !

좋은 웹페이지 즐겨찾기