2016-09-29 6 views
7

간단한 쿼리를 실행하는 RDS PostgreSQL 인스턴스가 있는데, 예상보다 훨씬 느립니다. 특히 테이블 복사 또는 테이블 계산과 같은 순차적 검색입니다.RDS에서 느린 PostgreSQL 순차 검색?

예 : create table copied_table as (select * from original_table) 또는 select count(*) from some_table

30GB 테이블에서 count(*)을 실행하는 데는 약 15 분이 걸립니다 (색인과 함께 바로 진공을 따르는 경우).

RDS db.r3.large, 15GB 메모리, 400GB SSD입니다. 통계 로그를 보면 Read IOPS가 1,400을 초과 한 적이 없으며 대개 예상되는 기준보다 훨씬 낮은 약 500입니다.

구성 : work_mem : 2기가바이트, shared_buffers를 : 3기가바이트, effective_cache_size : 8기가바이트 wal_buffers : 16메가바이트, checkpoint_segments : 16

이 예상 된 타이밍인가? IOPS가 높아야합니까?

답변

1

RDS에서 아직 사용할 수없는 병렬 순차 스캔을 구현 한 9.6을 제외하고는 Postgres 에서처럼 일반 계산 쿼리를 수행 할 수있는 방법은 많지 않습니다.

이벤트, 당신은 here 찾을 수있는 몇 가지 팁이 있습니다. 일반적으로, Postgres가 인덱스 만 검색을 사용하도록하려면 인덱스와 그 컬럼을 프로젝션에 생성하십시오.

SELECT id FROM table WHERE id > 6 and id <100; 
-- or 
SELECT count(id) FROM table ... 

표에는 해당 열에 대한 색인이 있어야합니다.

예제로 표시된 쿼리는 순차 검색을 피할 수 없습니다. CREATE TABLE의 경우 테이블에서 순서를 신경 쓰지 않으면 몇 개의 백엔드를 열고 키 범위로 필터링하여 병렬로 가져올 수 있습니다. 또한 RDS에서 속도를 높이는 유일한 방법은 IOP를 증가시키는 것입니다.

+1

감사합니다. 그러나 PostgreSQL이 올바르게 구성되었는지, 그리고 RDS에서 가져온 성능을 얻고 있는지 확인하고 있습니다. – jastr