인덱스 대 파티션


20

테이블 파티셔닝과 같은 다른 기술이 필요하도록 인덱스만으로 성능을 향상시킬 수없는 이유는 무엇입니까? 문제는 성능과 관련이 있으며 물론 다른 파티션을 다른 테이블 공간에 넣을 수 있으며 인덱스로는 달성 할 수없는 다른 효과가 있습니다.

즉, 성능 측면에서만 성능이 향상됩니다. 테이블 분할과 동일한 인덱스로 성능을 향상시킬 수 있습니까?


2
인덱싱 및 파티셔닝을 성능 향상을위한 하나 또는 솔루션으로 생각하는 대신 데이터베이스에서 성능을 향상시키기 위해 별도로 또는 함께 사용할 수있는 도구로 생각해야합니다.
ScottCher

답변:


18

아니요, 파티셔닝을 통해 일부 테이블 스캔을 특정 파티션으로 제한 할 수 있습니다. 테이블 데이터의 2-4 % 이상을 반환하면 인덱스가 쓸모없는 경향이 있습니다. 선택 기준에 따라 쿼리를 특정 파티션으로 지역화 할 수 있으면 다른 파티션을 스캔 할 필요가 없습니다.

옵티마이 저가 일부 파티션 및 인덱스에 대해 테이블 ​​스캔을 사용하도록 선택할 수 있습니다. 나는 그것이 일어나고 있음을 나타내는 설명 계획을 보지 못했습니다.

기록 데이터가 많은 경우 현재 데이터를 포함하는 파티션으로 간주되는 파티션을 제한하기 위해 현재 데이터에 대한 쿼리를 구성 할 수 있습니다.


3
파티션을 만들고 있습니다. 각 파티션에 적합한 저장 장치를 선택하십시오. 실제 데이터 파티션을 고속 드라이브와 다른 유형의 다른 드라이브에 넣으십시오.
Nico

7

마지막 질문에 직접 대답하기 위해 : 아니오, 나는 그것들이 동등한 것으로 생각하지 않습니다. 하루의 데이터를 검색해야하는 매우 큰 테이블 (수십 GB)을 생각해보십시오. 일별 파티션을 사용하면 공간 페널티없이 해당 날짜의 데이터 만 스캔하는 반면 인덱스는 충분한 정보를 보유하지 못하거나 (큰 데이터베이스에 대해 이야기 할 때 공간이 필요함) 별도의 구조입니다. 충분히 선택적입니다.

어쨌든 인덱스와 파티션은 사용법과 성능면에서 동일한 이점을 놓고 경쟁하지 않습니다. 데이터베이스에서 잔액을 찾아야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.