| PostgreSQL 9.2.24 문서 | ||||
|---|---|---|---|---|
| 스포츠 토토 결과 : 문서 : 9.2 : 행 스포츠 토토 결과 예 | 위로 | 58장. 플래너가 통계를 사용하는 방법 | 롤 토토 : 문서 : 9.2 : 부록 | |
테이블에 대한 액세스pg_statistic수퍼유저로 제한되어 있으므로 일반 사용자는 학습할 수 없습니다. 다른 사용자의 테이블 내용에 대해. 일부 선택성 추정 기능은 사용자가 제공한 연산자(쿼리에 나타나는 연산자 또는 관련 연산자) 저장된 통계를 분석합니다. 예를 들어 순서대로 저장된 가장 일반적인 값이 적용 가능한지 여부를 확인하려면, 선택성 추정기는 적절한 방법을 실행해야 합니다.=상수를 비교하는 연산자 저장된 값에 대한 쿼리입니다. 따라서 데이터는pg_statistic다음으로 전달될 가능성이 있습니다. 사용자 정의 연산자. 적절하게 숙련된 연산자는 다음을 수행할 수 있습니다. 전달된 피연산자를 의도적으로 유출합니다(예: 로깅을 통해). 또는 다른 테이블에 쓰거나) 실수로 유출되는 경우 두 경우 모두 오류 메시지에 해당 값을 표시하여 아마도 다음의 데이터가 노출될 수 있습니다.pg_statistic할 수 없는 사용자에게 그것을 보려고.
이를 방지하기 위해 다음은 모든 사용자에게 적용됩니다. 내장된 선택성 추정 기능. 쿼리를 계획할 때, 저장된 통계를 이용하려면 현재 사용자가 다음 중 하나가 있어야 합니다.선택에 대한 권한 테이블이나 관련 열 또는 사용된 연산자는 다음과 같아야 합니다.누설방지(보다 정확하게는 함수 연산자의 기반)입니다. 그렇지 않다면 선택성은 추정기는 마치 이용 가능한 통계가 없는 것처럼 행동할 것이며, 플래너는 기본 또는 대체 가정을 진행합니다.
사용자가 테이블에 대해 필요한 권한을 가지고 있지 않거나 열이 있으면 대부분의 경우 쿼리는 궁극적으로 권한 거부 오류. 이 경우 이 메커니즘은 실제로는 보이지 않습니다. 하지만 사용자가 보안 장벽이 있는 경우 기획자는 보안 장벽을 확인하고 싶을 수도 있습니다. 다른 방법으로는 액세스할 수 없는 기본 테이블의 통계 사용자에게. 이 경우 작업자는 누출 방지 처리를 해야 합니다. 통계는 사용되지 않습니다. 직접적인 피드백은 없습니다 단, 계획이 차선책일 수 있다는 점만 빼면요. 하나라면 이것이 사실이라고 의심되면 쿼리를 실행해 볼 수 있습니다 더 많은 권한을 가진 사용자로서 다른 계획이 있는지 확인하기 위해 결과.
이 제한은 기획자가 다음과 같은 경우에만 적용됩니다. 하나 이상의 값에 대해 사용자 정의 연산자를 실행해야 합니다. 에서pg_statistic. 그래서 기획자는 다음과 같은 일반적인 통계 정보를 사용하는 것이 허용됩니다. Null 값의 비율 또는 고유 값의 수 열, 액세스 권한에 관계없이.
타사에 포함된 선택성 추정 기능 잠재적으로 통계에 대해 작동하는 확장 사용자 정의 연산자는 동일한 보안 규칙을 따라야 합니다. 지침은 PostgreSQL 소스 코드를 참조하세요.