> 데이터 베이스 > MySQL 튜토리얼 > 테이블을 잠그거나 동시 업데이트를 중단하지 않고 MySQL `ALTER TABLE` 작업을 어떻게 수행할 수 있습니까?

테이블을 잠그거나 동시 업데이트를 중단하지 않고 MySQL `ALTER TABLE` 작업을 어떻게 수행할 수 있습니까?

Mary-Kate Olsen
풀어 주다: 2024-12-17 09:22:25
원래의
313명이 탐색했습니다.

How Can I Perform a MySQL `ALTER TABLE` Operation Without Locking the Table and Disrupting Concurrent Updates?

테이블을 잠그지 않고 ALTER TABLE

MySQL에서 ALTER TABLE 작업을 수행하면 해당 테이블은 해당 기간 동안 읽기 잠금 상태가 됩니다. 문, 잠재적으로 동시 쓰기를 차단합니다. 큰 테이블에서 이 작업을 수행하면 INSERT 또는 UPDATE 문이 장기간 중단될 수 있습니다. 진행 중인 업데이트에 영향을 주지 않고 "핫 변경"을 수행할 수 있는 솔루션이 있습니까?

유일한 대안: 수동 조작

MySQL은 핫 변경을 직접 지원하지 않지만 대안이 있습니다: 많은 RDBMS 시스템이 자동으로 수행하는 기능을 수동으로 복제하는 것입니다. 여기에는 다음이 포함됩니다.

  1. 새 테이블 만들기: 원하는 열 구조로 빈 테이블을 만듭니다.
  2. 데이터 복사: 원본 테이블의 동시 작업을 모니터링하면서 이전 테이블에서 새 테이블로 데이터를 점진적으로 전송합니다. table.
  3. 테이블 이름 바꾸기: 데이터 마이그레이션이 완료되면 이상적으로는 트랜잭션 내에서 소스 테이블과 새 테이블의 이름을 바꿉니다.
  4. 객체 재컴파일: 구조적 문제로 인해 실행 계획을 조정해야 하므로 테이블을 참조하는 저장 프로시저나 기타 개체를 업데이트하세요. 변경됩니다.

기술적 고려 사항:

새 필드를 추가하면 테이블의 모든 행이 효과적으로 수정됩니다. 이 프로세스에는 더 큰 영향을 미치는 광범위한 UPDATE 작업과 유사하게 디스크에 있는 데이터의 물리적 재구성이 필요합니다. 필드 수준 잠금은 행 수준 잠금보다 더 복잡하며 테이블 전체 잠금이 항상 바람직한 것은 아닙니다.

기타 RDBMS 솔루션:

MySQL은 그렇지 않을 수도 있습니다. 기본적으로 핫 변경을 지원하는 경우 다른 RDBMS 시스템이 이러한 기능을 제공할 수도 있습니다. 예를 들어 PostgreSQL에서는 다른 파티션에 영향을 주지 않고 개별적으로 변경할 수 있는 파티션된 테이블을 허용합니다.

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿