목차
UPDATE 작업
각 작업은 "먼저 모든 기본 테이블을 열고 잠그지만"
데이터 베이스 MySQL 튜토리얼 MySQL의 파티션 테이블에 대한 자세한 소개

MySQL의 파티션 테이블에 대한 자세한 소개

Jan 19, 2019 am 10:35 AM
mysql

이 글은 MySQL의 파티션 테이블에 대한 자세한 소개를 제공합니다. 이는 특정 참조 값을 가지고 있습니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

사용자에게 파티션 테이블은 독립적인 논리적 테이블이지만, 하단에는 여러 개의 물리적 하위 테이블로 구성됩니다. 파티셔닝을 구현하는 코드는 실제로 기본 테이블 집합의 핸들 개체를 캡슐화한 것입니다. 파티션 테이블에 대한 요청은 핸들 개체를 통해 스토리지 엔진에 대한 인터페이스 호출로 변환됩니다.

Meaning

MySQL은 테이블 생성 시 PARTITION BY 절을 사용하여 각 파티션에 저장된 데이터를 정의할 수 있습니다. 쿼리를 실행할 때 최적화 프로그램은 파티션 정의를 기반으로 필요한 데이터가 없는 파티션을 필터링하므로 쿼리가 모든 파티션을 검색할 필요가 없습니다. 필요한 데이터가 포함된 파티션만 찾을 수 있습니다.

파티셔닝의 주요 목적 중 하나는 더 거친 세부 수준으로 여러 테이블에 데이터를 저장하는 것입니다. 이렇게 하면 관련된 데이터를 함께 저장할 수 있으며, 전체 파티션의 데이터를 한 번에 일괄 삭제하려는 경우에도 매우 편리합니다.

파티셔닝은 다음 시나리오에서 큰 역할을 할 수 있습니다.

  • 테이블이 너무 커서 메모리에 모두 담을 수 없거나 테이블의 마지막 부분에만 데이터가 있고 나머지는 과거 데이터입니다

  • 파티션된 테이블 데이터는 유지 관리가 더 쉽습니다

  • #🎜 🎜#
  • 파티션 테이블의 데이터는 다양한 물리적 장치에 배포될 수 있습니다

  • 파티션 테이블을 사용하면 일부 특별한 병목 현상을 피할 수 있습니다

    # 🎜🎜 #

  • 필요한 경우 별도의 파티션을 백업하고 복원할 수 있습니다
  • 파티션 테이블 자체에도
제한사항#🎜🎜 #, 다음 사항이 특히 중요합니다.

테이블은 최대 1024개의 파티션만 가질 수 있습니다.
  • #🎜🎜 # MySQL5.1에서 파티션 표현식은 정수이거나 정수를 반환하는 표현식이어야 합니다. MySQL5.5에서는 일부 시나리오에서 파티셔닝에 열을 직접 사용할 수 있습니다

  • 파티션된 테이블에서는 외래 키 제약 조건을 사용할 수 없습니다

  • #🎜 🎜#
  • 파티션 필드에 기본 키 또는 고유 인덱스 열이 있는 경우 모든 기본 키 열 및 고유 인덱스 열이 포함되어야 합니다

  • #🎜 🎜# 파티션 테이블의 원리

  • 파티션 내 각 기본 테이블의 스토리지 엔진 관리와 일반 테이블 관리에는 차이가 없습니다(모든 기본 테이블은 동일한 스토리지 엔진을 사용해야 함)
, 분할된 테이블의 인덱스는 각 기본 테이블에 추가된 동일한 인덱스일 뿐입니다. 스토리지 엔진의 관점에서 보면 기본 테이블과 일반 테이블 사이에는 차이가 없으며, 스토리지 엔진은 그것이 일반 테이블인지 또는 분할된 테이블의 일부인지 알 필요가 없습니다.

파티션된 테이블에 대한 작업은 다음 작업 로직에 따라 수행됩니다.

SELECT 쿼리


파티션된 테이블을 쿼리할 때 파티셔닝 레이어가 먼저 열리고 모든 기본 테이블을 잠그면 최적화 프로그램이 먼저 일부 파티션을 필터링할 수 있는지 확인한 다음 해당 스토리지 엔진 인터페이스를 호출하여 각 파티션의 데이터에 액세스합니다

INSERT 작업#🎜🎜 #

레코드를 쓸 때 파티션 계층은 먼저 모든 기본 테이블을 열고 잠근 다음 어떤 파티션이 레코드를 수신하는지 결정한 다음 해당 기본 테이블에 레코드를 씁니다

DELETE 작업 #🎜🎜 #

레코드 삭제 시 파티션 계층은 먼저 모든 기본 테이블을 열고 잠근 다음 데이터에 해당하는 파티션을 결정하고 마지막으로 해당 기본 테이블을 삭제합니다.

UPDATE 작업

레코드를 업데이트할 때 파티션 계층은 먼저 모든 기본 테이블을 열고 잠급니다. MySQL은 먼저 레코드를 업데이트해야 할 파티션을 결정한 다음 데이터를 꺼내 업데이트한 다음 무엇을 결정합니다. 업데이트된 데이터는 어느 파티션에 배치되어야 하며 최종적으로 기본 테이블이 기록되고 원본 데이터가 있는 기본 테이블이 삭제됩니다.

이러한 작업은 모두 필터링을 지원합니다.

각 작업은 "먼저 모든 기본 테이블을 열고 잠그지만"

처리 중에 파티션 테이블이 전체 테이블을 잠근다는 의미는 아닙니다. 스토리지 엔진이 행 수준 잠금을 자체적으로 구현할 수 있는 경우 해당 테이블 잠금은 파티션 수준에서 해제됩니다. 이 잠금 및 잠금 해제 프로세스는 일반 InnoDB의 쿼리와 유사합니다.

파티션 테이블 유형

MySQL은 다양한 파티션 테이블을 지원합니다. 파티션은 특정 범위에 속하는 레코드를 저장합니다. 파티션 표현식은 열이거나 열을 포함하는 표현식일 수 있습니다. 예를 들어 다음 테이블은 각 연도 매출을 서로 다른 파티션에 저장합니다.

CREATE TABLE sales(
    order_date DATETIME NOT NULL,
    ....
)ENGINE=InnoDB PARTITION BY RANGE(YEAR(order_date))(
    PARTITION p_2010 VALUES LESS THAN (2010),
    PARTITION p_2011 VALUES LESS THAN (2011),
    PARTITION p_2012 VALUES LESS THAN (2012),
    PARTITION p_catchall VALUES LESS THAN MAXVALUE;
)
로그인 후 복사

PARTITION 파티션 절에서는 다양한 함수를 사용할 수 있습니다. 그러나 요구 사항이 있습니다. 표현식에서 반환되는 값은 명확한 정수여야 하며 상수일 수 없습니다.

MySQL은 키 값, 해시 및 목록 파티셔닝 등도 지원합니다.

파티션된 테이블 사용 방법

매우 큰 테이블에서 일정 기간 동안의 레코드를 쿼리하려면 어떻게 쿼리해야 하나요? 이 테이블, 어떻게 하면 더 효율적일 수 있을까요?

데이터의 양이 매우 많기 때문에 쿼리할 때마다 테이블 전체를 스캔할 수는 없습니다. 공간 소모와 인덱스 유지 관리를 고려하면 인덱스를 사용하지 않습니다. 인덱스를 사용하더라도 데이터가 원하는 방식으로 집계되지 않아 많은 양의 조각화가 발생하고 결국 쿼리에서 수천 개의 임의 I/O가 생성된다는 사실을 알게 됩니다. 실제로

데이터의 양이 너무 많아지면 B-Tree 인덱스가 더 이상 작동하지 않게 됩니다.

그래서 우리는 대량의 데이터에서 해당 메타데이터의 작은 부분만 색인화하는 것과 같이 데이터를 검색하는 좀 더 대략적이지만 비용이 적게 드는 방법을 선택할 수 있습니다.

이것이 바로 파티셔닝이 하는 일입니다. 파티셔닝을 이해하는 것이 인덱스의 초기 형태라고 볼 수 있습니다. 파티션은 각 파티션에 데이터를 기록하기 위해 추가 데이터 구조가 필요하지 않기 때문에 파티션은 각 데이터 조각의 위치를 ​​정확하게 찾을 필요가 없으므로 추가 데이터 구조가 필요하지 않으므로 비용이 매우 많이 듭니다. 낮은. 각 파티션에 어떤 데이터가 저장되어 있는지 표현하려면 간단한 표현만 필요합니다.

대량 데이터 볼륨의 확장성을 보장하기 위해 일반적으로 두 가지 전략이 있습니다.

  1. Full 볼륨 인덱스 없이 데이터 스캔: WHERE 조건을 사용하여 필요한 데이터를 몇 개의 파티션으로 제한할 수 있는 한 효율성은 매우 높습니다. 이 전략을 사용하면 데이터가 메모리에 완전히 배치될 필요가 없으며 필요한 모든 데이터가 디스크에 있다고 가정합니다. 메모리가 상대적으로 작기 때문에 데이터가 메모리에서 빠르게 압착되므로 캐시는 아무런 역할을 하지 않습니다. 이 전략은 대량의 데이터를 일반적인 방식으로 액세스할 때 적합합니다.

  2. 데이터 색인 및 별도의 핫스팟: 데이터에 명백한 "핫스팟"이 있고 데이터의 이 부분과는 별도로 다른 데이터에 액세스하는 경우가 거의 없다면 핫스팟 데이터의 이 부분을 별도의 파티션에 배치하여 이 파티션의 데이터를 메모리에 캐시할 수 있습니다. 이러한 쿼리는 작은 분할 테이블에만 액세스할 수 있고 인덱스를 사용할 수 있으며 캐시를 효과적으로 사용할 수도 있습니다.

어떤 상황에서 문제가 발생하나요?

위에 소개된 두 가지 파티션 전략은 두 가지를 기반으로 합니다. 매우 중요한 가정: 쿼리는 많은 추가 파티션을 필터링할 수 있으며 파티션 자체는 추가 비용을 많이 발생시키지 않습니다.

다음 두 가지 가정은 일부 시나리오에서 문제가 될 수 있습니다.

  • 파티션 열과 인덱스 열이 일치하지 않습니다. : 정의된 인덱스 컬럼과 파티션 컬럼이 일치하지 않으면 쿼리에서 파티션 필터링을 수행할 수 없습니다.

  • 파티션을 선택하는 데 비용이 많이 들 수 있습니다. 다양한 유형의 파티션이 다르게 구현되므로 성능도 다릅니다. 특히 범위 분할의 경우, 적합한 행이 속한 파티션을 쿼리하는 비용은 서버가 정답을 찾기 위해 모든 파티션 정의 목록을 스캔해야 하기 때문에 매우 높을 수 있습니다.

  • 모든 ​​기본 테이블을 열고 잠그는 비용은 높을 수 있습니다. 쿼리가 분할된 테이블에 액세스할 때 MySQL은 lock it 모든 기본 테이블이 저장되는데, 이는 분할된 테이블의 또 다른 오버헤드입니다.

  • 파티션 유지 비용이 높을 수 있습니다. 파티션 추가 또는 삭제와 같은 일부 파티션 유지 관리 작업은 매우 빠릅니다. 파티션 재구성이나 유사한 ALTER 문과 같은 일부 작업에는 데이터 복사가 필요하므로 비용이 매우 많이 들 수 있습니다.

위 내용은 MySQL의 파티션 테이블에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

MySQL : 초보자를위한 데이터 관리의 용이성 MySQL : 초보자를위한 데이터 관리의 용이성 Apr 09, 2025 am 12:07 AM

MySQL은 설치가 간단하고 강력하며 데이터를 쉽게 관리하기 쉽기 때문에 초보자에게 적합합니다. 1. 다양한 운영 체제에 적합한 간단한 설치 및 구성. 2. 데이터베이스 및 테이블 작성, 삽입, 쿼리, 업데이트 및 삭제와 같은 기본 작업을 지원합니다. 3. 조인 작업 및 하위 쿼리와 같은 고급 기능을 제공합니다. 4. 인덱싱, 쿼리 최적화 및 테이블 파티셔닝을 통해 성능을 향상시킬 수 있습니다. 5. 데이터 보안 및 일관성을 보장하기위한 지원 백업, 복구 및 보안 조치.

phpmyadmin을 여는 방법 phpmyadmin을 여는 방법 Apr 10, 2025 pm 10:51 PM

다음 단계를 통해 phpmyadmin을 열 수 있습니다. 1. 웹 사이트 제어판에 로그인; 2. phpmyadmin 아이콘을 찾고 클릭하십시오. 3. MySQL 자격 증명을 입력하십시오. 4. "로그인"을 클릭하십시오.

MySQL 및 SQL : 개발자를위한 필수 기술 MySQL 및 SQL : 개발자를위한 필수 기술 Apr 10, 2025 am 09:30 AM

MySQL 및 SQL은 개발자에게 필수적인 기술입니다. 1.MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템이며 SQL은 데이터베이스를 관리하고 작동하는 데 사용되는 표준 언어입니다. 2.MYSQL은 효율적인 데이터 저장 및 검색 기능을 통해 여러 스토리지 엔진을 지원하며 SQL은 간단한 문을 통해 복잡한 데이터 작업을 완료합니다. 3. 사용의 예에는 기본 쿼리 및 조건 별 필터링 및 정렬과 같은 고급 쿼리가 포함됩니다. 4. 일반적인 오류에는 구문 오류 및 성능 문제가 포함되며 SQL 문을 확인하고 설명 명령을 사용하여 최적화 할 수 있습니다. 5. 성능 최적화 기술에는 인덱스 사용, 전체 테이블 스캔 피하기, 조인 작업 최적화 및 코드 가독성 향상이 포함됩니다.

Navicat Premium을 만드는 방법 Navicat Premium을 만드는 방법 Apr 09, 2025 am 07:09 AM

Navicat Premium을 사용하여 데이터베이스 생성 : 데이터베이스 서버에 연결하고 연결 매개 변수를 입력하십시오. 서버를 마우스 오른쪽 버튼으로 클릭하고 데이터베이스 생성을 선택하십시오. 새 데이터베이스의 이름과 지정된 문자 세트 및 Collation의 이름을 입력하십시오. 새 데이터베이스에 연결하고 객체 브라우저에서 테이블을 만듭니다. 테이블을 마우스 오른쪽 버튼으로 클릭하고 데이터 삽입을 선택하여 데이터를 삽입하십시오.

MySQL : 쉽게 학습하기위한 간단한 개념 MySQL : 쉽게 학습하기위한 간단한 개념 Apr 10, 2025 am 09:29 AM

MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템입니다. 1) 데이터베이스 및 테이블 작성 : CreateAbase 및 CreateTable 명령을 사용하십시오. 2) 기본 작업 : 삽입, 업데이트, 삭제 및 선택. 3) 고급 운영 : 가입, 하위 쿼리 및 거래 처리. 4) 디버깅 기술 : 확인, 데이터 유형 및 권한을 확인하십시오. 5) 최적화 제안 : 인덱스 사용, 선택을 피하고 거래를 사용하십시오.

Navicat에서 MySQL에 새로운 연결을 만드는 방법 Navicat에서 MySQL에 새로운 연결을 만드는 방법 Apr 09, 2025 am 07:21 AM

응용 프로그램을 열고 새로운 연결 (Ctrl n)을 선택하여 Navicat에서 새로운 MySQL 연결을 만들 수 있습니다. "MySQL"을 연결 유형으로 선택하십시오. 호스트 이름/IP 주소, 포트, 사용자 이름 및 비밀번호를 입력하십시오. (선택 사항) 고급 옵션을 구성합니다. 연결을 저장하고 연결 이름을 입력하십시오.

Navicat에서 SQL을 실행하는 방법 Navicat에서 SQL을 실행하는 방법 Apr 08, 2025 pm 11:42 PM

Navicat에서 SQL을 수행하는 단계 : 데이터베이스에 연결하십시오. SQL 편집기 창을 만듭니다. SQL 쿼리 또는 스크립트를 작성하십시오. 실행 버튼을 클릭하여 쿼리 또는 스크립트를 실행하십시오. 결과를 봅니다 (쿼리가 실행 된 경우).

Navicat은 데이터베이스 오류 코드 및 솔루션에 연결합니다 Navicat은 데이터베이스 오류 코드 및 솔루션에 연결합니다 Apr 08, 2025 pm 11:06 PM

데이터베이스에 연결할 때의 일반적인 오류 및 솔루션 : 사용자 이름 또는 비밀번호 (오류 1045) 방화벽 차단 연결 (오류 2003) 연결 시간 초과 (오류 10060) 소켓 연결 (오류 1042) SSL 연결 오류 (오류 10055) 너무 많은 연결 시도가 차단되는 경우 (오류 1049) 데이터베이스에 연결되지 않음 (오류 1049) 데이터베이스에 연결되지 않습니다 (오류 1049).

See all articles