우리는 우리의 응용 프로그램에서 Oracle 데이터베이스 대신 PostgreSQL DB를 평가하려고합니다. 우리는 128GB의 메모리, 32 개의 CPU 코어 및 SSD 스토리지가있는 Linux 컴퓨터에 설치된 PostgreSQL 9.5를 사용합니다. 커넥션 풀과 분산 트랜잭션은 JBoss 7 어플리케이션 서버에 의해 관리되며, SQL 질의는 Hibernate 4에 의해 생성/실행됩니다. 대부분의 테이블에는 수십만 개의 행이 있으며 그 중 하나에는 수백만 개의 행이 있습니다. 총 약 3,000 개의 데이터베이스 연결 (응용 프로그램 서버에 의해 풀링 됨)이 활성화되어 동시에 사용됩니다. 우리는 몇 가지 쿼리를 수정하고, 느린 쿼리를 위해 인덱스를 만들었으며, 문서를 기반으로 DB 및 OS 설정을 조정했습니다. 그러나 처리량은 몇 배 느려 결국 DB 응답 시간이 10-20 배 증가합니다.수천 개의 연결 및 분산 트랜잭션에 대한 PostgreSQL DB 성능 문제
나는 약간의 인터넷 검색을 해봤 내가 PostgreSQL의 DB를 동일한 방식으로 사용하여 다른 사람 (AB)에 대한 정보를 찾을 수 없습니다 :이 높은 번호를 사용하여 활성 데이터베이스 연결
- 을 분산 트랜잭션 (PREPARED 거래)는
- 는 더 높은로드를 처리 문제가없는 한 테이블
오라클의 행 수십억을 저장. 나는 등을 경험, 제안, 링크,
감사
Zalando는 Postgres를 사용하며 많은 클라이언트를 동시에 지원합니다. 그래서 엔진이 성가신 것처럼 나는 그것을 말할 수 있습니다 :) 큰 테이블을 다루는 것은 파티셔닝이 편리합니다. 이 질문은 꽤 광범위합니다. 나는 당신이 예상 한 답변을 얻지 못할 것이라고 생각합니다. –
의견을 보내 주셔서 감사합니다. GIT repo (https://github.com/zalando/patroni/search?utf8=%E2%9C%93&q=prepared)를 기반으로하여 분산 트랜잭션을 사용하지 않습니다. max_prepared_transactions = 0 기본값 max_connections에 대한 100입니다. 나는 생산 가치가 다를 가능성이 높습니다 이해합니다. –
고유 한 트랜잭션 관리자가 있습니까? 분산 트랜잭션을 사용하여 클러스터의 다른 데이터베이스에서 전역 트랜잭션을 허용합니까? 대신 보상금을 고려 했습니까? –