2017-11-23 12 views
0

우리는 많은 필터 (차량 연도, 모델, 제조사, 드라이버 이름 등)를 가지고 있습니다. 선택한 모든 필터는 5 ~ 15 초 사이에 실행되는 5-10 개의 SQL 쿼리를 생성합니다. 사용자가 필터를 매우 빠르게 표시한다고 가정 해 봅시다. 즉, 일부 드라이버를 선택하고 다음 차량을 선택하고 일부 데이터 범위를 15 초 이내에 사용자가 서버에 도달하여 SQL 쿼리를 실행하는 수십 개의 AJAX 요청을 보내고 데이터베이스가 막히거나, 점점 더 많은 쿼리를 얻고 각 실행에는 더 오래 걸립니다.AJAX 요청이 중단되었을 때 Redshift에서 SQL 쿼리를 중지하는 대신

AJAX 요청이 중단 될 때 쿼리를 중지시키는 해결책에 대해 생각했지만 쉬운 해결책은 아닙니다. AJAX 요청이 중단 될 때 쿼리를 중지하는 것보다 더 쉽고 간편한 솔루션이 있습니까?

분석 데이터에는 Redshift를 사용하고 사용자 데이터에는 PostgreSQL 등을 사용합니다. 우리는 결과를 캐시하는 고급 캐시를 사용합니다. Redshift는 dc2.large 인스턴스의 노드 수가 16 이고 WLM 구성에서 15 개의 동시 쿼리 을 설정했습니다 (쿼리는 대기열에 들어 가지 않습니다). 테이블, sortkeys 및 distkey에 대한 인코딩이 있습니다. 우리는 수십 개의 테이블을 가지고 있지만, 하나의 테이블에 약 300M의 레코드와 ~ 70 컬럼을 가진 모든 트랜잭션이 큰 입니다. AWS 콘솔의 Redshift Performance 탭에서 리더 노드가 과중한로드 중에 99-100 % 및 다른 노드에서 약 10-30 % 작동 함을 알 수 있습니다.

+1

redshift 클러스터 및 쿼리 방법을 최적화해야합니다. 그 질문은 stackoverflow의 범위를 벗어난 것으로 생각합니다. 유능하고 숙련 된 적색 변속 전문가와의 상세한 분석과 일주일의 작업이 필요하기 때문입니다. "선택한 모든 필터가 5 ~ 15 초 사이에 실행되는 5 ~ 10 개의 SQL 쿼리를 생성합니다"라고 말하면 사용자가 적색 시프트로 잘못 접근 한 것일 수 있음을 나타냅니다. 당신이 그 쿼리에 대해 정교하게 설명하고 싶다면 어떻게 보이는지, 테이블에 얼마나 많은 데이터가 있는지, 우리가 도울 수 있습니다. –

+0

감사합니다. 방금 게시물을 편집하고 추가 정보를 추가했습니다. – opax

+0

opax, 오래 걸리는 검색어의 예를 보여주세요. 얼마나 걸리는지 함께? –

답변

3

우선, redshift는 트랜잭션 DB의 분석적 DB를 의미하지 않습니다. 둘째, 많은 수의 쿼리가있는 경우 쿼리를 그룹화하거나 결과를 캐싱하는 것이 좋습니다. 또한 work load management을 사용해보십시오.

원래 문제로 돌아 가면 AJAX 호출 시간 초과로 시작된 쿼리를 파악해야합니다. svv_transactionsstv_recents에 의존해야하는 테이블은 실행중인 프로세스와 쿼리를 반환합니다. 다음으로, 쿼리를 취소하려면 PG_CANCEL_BACKEND을 입력해야하고, 최악의 경우 PG_TERMINATE_BACKEND을 사용하여 실행중인 프로세스를 종료해야합니다. 자동 화가 발생하면 자동화하는 쉬운 방법은 없지만 경험을 공유하십시오.

+0

이것은 대답이 아니므로, 코멘트 여야합니다 –

+0

이것은 질문에 대한 답변을 제공하지 않습니다. 비평하거나 저자의 설명을 요청하려면 게시물 아래에 의견을 남겨 둡니다. - [From Review] (리뷰/저품절 게시물/18048860) – philantrovert