> 데이터 베이스 > MySQL 튜토리얼 > 데이터베이스 테이블에서 1억 2천만 개의 레코드를 빠르게 업데이트하려면 어떻게 해야 합니까?

데이터베이스 테이블에서 1억 2천만 개의 레코드를 빠르게 업데이트하려면 어떻게 해야 합니까?

Mary-Kate Olsen
풀어 주다: 2025-01-04 17:26:41
원래의
848명이 탐색했습니다.

How Can I Quickly Update 120 Million Records in a Database Table?

1억 2천만 개의 레코드를 신속하게 업데이트하기 위한 팁

1억 2천만 개의 레코드가 포함된 테이블을 업데이트하려고 시도하는 동안 성능 문제가 발생하는 것은 일반적인 문제입니다. UPDATE 문을 사용하는 기존 접근 방식은 엄청나게 느릴 수 있어 완료하는 데 몇 시간, 심지어 며칠이 걸릴 수 있습니다.

직접 업데이트를 시도하는 대신 SELECT 문을 사용하여 두 번째 테이블을 채우는 것을 고려해 보세요. 이 접근 방식은 아래 그림과 같이 상당한 성능 이점을 제공합니다.

간단한 경우:

  • 클러스터형 인덱스가 없고 DML이 낮은 기간 동안 테이블의 경우 활동:

    • 실행: SELECT *, new_col = 1 INTO clone.BaseTable FROM dbo.BaseTable
    • 새 테이블에서 인덱스, 제약 조건 등을 다시 생성
    • ALTER SCHEMA ... TRANSFER를 사용하여 기존 테이블과 새 테이블 전환
    • 이전 테이블 삭제 table

비단순 사례:

  • 다른 스키마(clone.table)에서 동일한 이름으로 BaseTable을 다시 만듭니다. BaseTable)
  • 클러스터형 인덱스, ID 열, 계산 열 및 새 열을 포함합니다. INT 열
  • 제외 트리거, 외래 키 제약 조건, 비클러스터형 인덱스 및 검사 제약 조건
  • 소수의 행으로 삽입 테스트
  • 복제 테이블을 자르고 전체 삽입을 수행합니다
  • 모든 비클러스터형 제약 조건을 다시 생성합니다. 인덱스 및 트리거
  • dbo.BaseTable을 백업 스키마로 이동하고 clone.BaseTable을 dbo 스키마로 이동

직접 업데이트를 피하고 SELECT 문의 기능을 활용하면 업데이트 시간이 단축되어 대용량 테이블도 효율적으로 업데이트가 가능합니다.

위 내용은 데이터베이스 테이블에서 1억 2천만 개의 레코드를 빠르게 업데이트하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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