슬롯 간 통신 최적화

통신 처리량을 평가할 때는 쿼리에 필요한 무작위 섞기 양을 고려해야 합니다. 단계 사이에 전달되는 바이트 수를 고려하고, 각 슬롯에 전달되는 바이트 수를 고려해야 합니다. 예를 들어 GROUP BY 절은 like 값을 동일 슬롯에 전달하여 처리합니다. 무작위로 섞이는 데이터의 양은 통신 처리량에 직접 영향을 주며, 따라서 쿼리 성능에도 영향을 줍니다.

다음 권장사항은 슬롯 간 통신 제어에 대한 안내를 제공합니다.

JOIN을 사용하기 전 데이터 감소

권장사항: JOIN 절을 사용하기 전에 처리되는 데이터의 양을 줄이세요.

쿼리로 JOIN을 수행하기 전 가능한 한 빨리 쿼리에서 데이터를 잘라냅니다. 처리 주기에서 일찍 데이터를 줄이면 무작위 섞기 및 기타 복잡한 작업이 사용자에게 필요한 데이터에서만 수행됩니다.

WITH 절을 준비된 문으로 취급 금지

권장사항: WITH 절은 주로 가독성을 위해 사용하세요.

WITH 절은 구체화되지 않기 때문에 주로 가독성을 위해 사용됩니다. 예를 들어 WITH 절에 모든 쿼리를 배치하고 UNION ALL을 실행하는 것은 WITH 절을 잘못 사용하는 것입니다. 쿼리가 2개 이상의 WITH 절에 표시될 경우, 각 절에서 실행됩니다.

날짜별로 분할된 표 방지

권장사항: 시간 분할 표를 대신해서 날짜별로 분할된 표(날짜로 이름이 지정된 표)를 사용하지 마세요.

파티션을 나눈 테이블은 날짜로 이름이 지정된 테이블보다 성능이 뛰어납니다. 날짜별로 분할된 테이블을 만들 때, BigQuery는 날짜로 이름이 지정된 각 테이블의 스키마 및 메타데이터의 복사본을 유지관리해야 합니다. 또한 날짜로 이름이 지정된 테이블을 사용하는 경우에는 BigQuery에서 쿼리된 각 테이블의 권한을 확인해야 할 수 있습니다. 이렇게 하면 쿼리 오버헤드가 추가되고 쿼리 성능에 영향을 미칩니다.

테이블 과잉 분할 방지

권장사항: 표를 너무 분할하지 않도록 하세요. 날짜별로 표를 분할할 때는 대신 시간 분할 표를 사용하세요.

표 분할은 큰 데이터세트를 개별 표로 나누고 각 표 이름에 접미사를 추가하는 것을 의미합니다. 날짜별로 표를 분할할 때는 대신 시간 분할 표를 사용하세요.

BigQuery 저장소는 비용이 낮으므로, 관계형 데이터베이스 시스템에서와 같이 비용 때문에 표를 최적화할 필요가 없습니다. 표 분할을 대량으로 만들면 성능 영향이 너무 커져서 비용 이점이 사라지게 됩니다.

표가 분할된 경우, BigQuery는 각 분할에 대해 스키마 메타데이터와 권한을 유지 관리해야 합니다. 테이블을 과잉 샤딩하면 각 샤드에서 정보 유지관리에 필요한 오버헤드가 추가되면서 쿼리 성능에 영향을 미칠 수 있습니다.

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.