• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 1. MySQL Partitioning 개요
    2. Partitioning Types
    3. 파티션 관리
    4. Partition Pruning
    5. 파티션 선택
    6. 파티셔닝 제약 및 제한
    1. Partitioning Keys, Primary Keys, and Unique Keys
    2. 스토리지 엔진 관련 파티셔닝 제한
    3. 함수 관련 파티셔닝 제한
    4. Partitioning and Locking
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

19.6.4 Partitioning and Locking

MySQL 5.6.5 이전 버전에서는 DML 또는 DDL 문을 실행할 때 테이블 수준 잠금을 실제로 실행하는 MyISAM 등의 스토리지 엔진의 경우, 파티션 된 테이블에 영향을주는 그런 문이 테이블에 전체 잠금 를 적용하고있었습니다. 즉, 문이 완료 될 때까지 모든 파티션이 잠겨있었습니다. MySQL 5.6.6 파티션 잠금 가지 치기를 구현하고 이에 따라 많은 경우에 불필요한 잠금이 제거됩니다. MySQL 5.6.6 이후에서는 분할 된 MyISAM 테이블에서 읽거나 업데이트 할 대부분의 문에서 영향을받는 파티션 만 고정됩니다. 예를 들어, MySQL 5.6.6 이전에는 분할 MyISAM 테이블에서 SELECT 전체 테이블이 잠겨있었습니다. MySQL 5.6.6 이후에는 SELECT 문 WHERE 조건을 채우는 행을 실제로 들어있는 파티션 만 고정됩니다. 여기에는 분할 된 MyISAM 테이블에 대한 동시 작업의 속도 및 효율성을 향상시키는 효과가 있습니다. 이 개선은 많은 (32 이상)의 파티션이있는 MyISAM 테이블을 조작 할 때 더욱 그러합니다.

이 동작 변경은 행 수준 잠금을 사용하여 파티션 가지 치기 전에 잠금을 실제로 실행하지 않는 (또는 실행 할 필요가 없다), InnoDB 등의 스토리지 엔진을 사용하는 파티션 된 테이블에 영향을 미치는 문 에 영향을주지 않습니다.

다음 몇 단락에서는 테이블 수준 잠금을 사용하는 스토리지 엔진을 사용하는 테이블에 대한 다양한 MySQL 문에 파티션 잠금 가지 치기의 효과에 대해 설명합니다.

DML 문에 미치는 영향

SELECT 문 (union 또는 join을 포함하는 것을 포함)가 실제로 읽어야하는 파티션 만 잠글 수 있습니다. 이것은 SELECT ... PARTITION 에도 적용됩니다.

UPDATE 는 파티셔닝 컬럼이 갱신되지 않는 테이블에만 잠금을 정리합니다.

REPLACE 및 INSERT 삽입 또는 교체되는 행이있는 파티션 만 잠글 수 있습니다. 그러나 AUTO_INCREMENT 값이 파티셔닝 컬럼으로부터 생성되는 경우, 모든 파티션이 잠겨 있습니다.

INSERT ... ON DUPLICATE KEY UPDATE 는 파티셔닝 컬럼이 갱신되지 않는 한 정리됩니다.

INSERT ... SELECT 는 읽어야 소스 테이블의 파티션 만 잠글 수 있습니다 (대상 테이블의 모든 파티션은 잠겨 있습니다).

참고

INSERT DELAYED 는 파티션 된 테이블에서 지원되지 않습니다.

LOAD DATA 문에 의해 분할 된 테이블에 적용되는 잠금 치기 수 없습니다.

파티션 된 테이블의 파티셔닝 컬럼을 사용하는 BEFORE INSERT 또는 BEFORE UPDATE 트리거가 존재하는 경우,이 테이블을 업데이트 할 INSERT 및 UPDATE 문에 잠금을 정리 할 수 없음을 의미합니다 (트리거가 그 값을 변경할 수 있기 때문에). 테이블 파티셔닝 컬럼에 대한 BEFORE INSERT 트리거가 존재하는 경우, INSERT 또는 REPLACE 에 의해 설정되는 잠금을 정리 할 수 없음을 의미합니다 ( BEFORE INSERT 트리거가 행이 삽입되기 전에 행의 파티셔닝 컬럼을 변경하고이를 통해 행이 본래의 것과 다른 파티션에 강제로 삽입 될 수 있기 때문에). 파티셔닝 컬럼의 BEFORE UPDATE 트리거는 UPDATE 또는 INSERT ... ON DUPLICATE KEY UPDATE 에 의해 적용되는 잠금을 정리 할 수 없음을 의미합니다.

영향을받는 DDL 문

CREATE VIEW 에서 잠금을하지 않게됩니다.

ALTER TABLE ... EXCHANGE PARTITION 잠금을 정리하게됩니다. 교환되는 테이블 및 교환되는 파티션 만 고정됩니다.

ALTER TABLE ... TRUNCATE PARTITION 락이 정리하게됩니다. 하늘에있는 파티션 만 고정됩니다.

ALTER TABLE 문은 계속 테이블 수준에서 메타 데이터 잠금을합니다.

기타 문의

LOCK TABLES 는 파티션 잠금 치다 수 없습니다.

CALL stored_procedure( expr ) 은 잠금 가지 치기를 지원하지만, expr 을 평가할 때하지 않습니다.

DO 및 SET 문은 파티션 잠금 가지 치기를 지원하지 않습니다.

서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved