>데이터 베이스 >MySQL 튜토리얼 >전체 테이블을 잠그지 않고 MySQL에서 ALTER TABLE 작업을 어떻게 수행할 수 있습니까?

전체 테이블을 잠그지 않고 MySQL에서 ALTER TABLE 작업을 어떻게 수행할 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-21 03:17:17393검색

How Can I Perform an ALTER TABLE Operation in MySQL Without Locking the Entire Table?

테이블을 잠그지 않고 ALTER TABLE

데이터베이스 관리 영역에서 MySQL의 ALTER TABLE 작업은 일반적으로 테이블 수준 읽기- 동시 읽기를 허용하면서 동시 쓰기를 방해합니다. 광범위한 테이블의 경우 이로 인해 INSERT 또는 UPDATE 문이 크게 지연될 수 있습니다.

그러나 한 가지 잠재적인 해결책은 "핫 변경" 접근 방식을 고려하는 것입니다. MySQL은 기본적으로 이를 지원하지 않지만 다른 RDBMS 시스템에서는 이를 제공할 수 있습니다. 그러나 MySQL의 경우 수동 해결 방법을 사용해야 합니다.

  • 원래 테이블의 구조를 미러링하되 원하는 추가 열을 사용하여 새 테이블을 설정합니다.
  • 점진적으로 데이터를 원본 테이블에서 새 테이블로 청크를 가져와 원본 테이블에 대한 동시 INSERT/UPDATE/DELETE 작업을 처리하기 위한 예방 조치를 취합니다(예: 다음을 사용). 트리거).
  • 완료되면 가급적이면 트랜잭션 내에서 원본 테이블과 새 테이블의 테이블 이름을 바꾸세요.
  • 변경된 테이블에 의존하는 모든 저장 프로시저를 재구성하세요.

새 열을 추가하는 것은 본질적으로 디스크의 전체 테이블 구조와 데이터 구성에 영향을 미치는 변환 작업이라는 점에 유의하는 것이 중요합니다. 따라서 이 프로세스는 포괄적인 UPDATE 작업과 유사하게 성능 저하가 불가피하게 발생합니다. 그러나 이 해결 방법을 사용하면 명시적인 테이블 잠금이 필요하지 않으므로 변경 프로세스 중에 데이터를 업데이트할 수 있습니다.

위 내용은 전체 테이블을 잠그지 않고 MySQL에서 ALTER TABLE 작업을 어떻게 수행할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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