Jelentkezés Telefonon: +36/30-820-1750ONLINE

Hírek

mysql 파티션 예제

Kategória: Uncategorized

사용하는 파티션 유형에 관계없이 파티션은 항상 0부터 시작하여 자동으로 순서대로 번호가 매겨지는 것을 기억하는 것이 중요합니다. 새 행이 분할된 테이블에 삽입되면 올바른 파티션을 식별하는 데 사용되는 파티션 번호입니다. 예를 들어 테이블에서 4개의 파티션을 사용하는 경우 이러한 파티션은 0, 1, 2 및 3으로 번호가 매겨져 있습니다. RANGE 및 LIST 분할 유형의 경우 각 파티션 번호에 대해 정의된 파티션이 있는지 확인해야 합니다. HASH 분할의 경우 사용자 제공 식은 0보다 큰 정수 값으로 평가해야 합니다. KEY 분할의 경우 MySQL 서버가 내부적으로 사용하는 해시 함수에 의해 이 문제가 자동으로 처리됩니다. MySQL이 파티션 이름 mypart와 MyPart 사이에 차이가 없기 때문에 오류가 발생합니다. 범위 및 목록 파티션은 파티션의 추가 및 삭제를 처리하는 방법과 매우 유사합니다. 해시 또는 키로 분할된 테이블은 분할 설정에서 변경하는 것과 관련하여 서로 매우 유사합니다. 일반적으로 자동 증분( 즉, 기본 키(part_id, id)과 함께 파티션 키를 기본 키에 추가해야 합니다. 이 복합 기본 키에 대해 잘 디자인되고 작은 열이 없는 경우 모든 보조 인덱스를 확대할 수 있습니다. MySQL에서 테이블 만들기 또는 테이블 변경 명령을 사용하여 테이블을 분할할 수 있습니다.

다음 CREATE TABLE 구문 : 범위별로 정의된 파티션의 경우와 달리 목록 파티션은 특정 순서로 선언할 필요가 없습니다. 85,314개의 행을 삭제하는 데 약 0.7초가 걸립니다. 분할 된 테이블에서 동일한 결과를 얻으려면 DROP 파티션을 실행하면 어떻게됩니까? 동일한 분기에 속한 부서의 행이 동일한 파티션에 저장되는 방식으로 이 테이블을 분할하려면 여기에 표시된 CREATE TABLE 문을 사용할 수 있습니다. 수행. 느린 쿼리를 다시 작업하는 것과 같은 다른 대안을 모두 소진 한 후에만 수행 할 것입니다. 일반적으로 분할은 수백만 개의 레코드를 처리할 때 가장 합리적입니다. 이 경우 RANGE가 가장 유용하다고 판단했습니다. RANGE에 가장 적합한 사용 사례는 오래된 타임시리즈 데이터를 대폭 삭제하는 것입니다. 파티션을 삭제할 때 해당 파티션에 저장된 모든 데이터도 삭제된다는 점을 기억하는 것이 매우 중요합니다. 이전 SELECT 쿼리를 다시 실행하여 이러한 경우를 확인할 수 있습니다. 테이블 정의와 분할 체계를 유지하면서 모든 파티션에서 모든 데이터를 삭제하려면 TRUNCATE TABLE 문을 사용합니다. expr에 대한 정수반환을 반환하는 SQL 식을 사용할 수도 있습니다.

예를 들어 직원이 고용된 연도를 기준으로 분할할 수 있습니다. 이 작업은 다음과 같이 수행할 수 있습니다.