2012-10-16 2 views
3

250MB 500M 행의 MySQL 테이블이 있는데 해당 열 중 하나를 삭제하려고합니다. 열은 VARCHAR (255)입니다. 가능한 한 작게 다운 타임으로이 작업을 수행하고 싶습니다. 생각 :MySQL 대용량 테이블에서 열을 삭제하는 방법

  1. 이 작업을 돕기 위해 추가 할 수있는 구성이 있습니까?
  2. PHP에서 각 행에 대해 반복 수행하고 그 안의 값을 삭제하는 것이 더 좋을까요?
  3. 나중에 OPTIMIZE TABLE이 필요합니까?
  4. 그러한 절차에 대한 합리적인 시간 추정은 어떻게됩니까?
+0

'2. 각 행에 PHP를 반복하여 넣고 그 값을 삭제하는 것이 더 낫지는 않습니까? '- 확실히 MySQL 자체에서는 그렇게하지 마십시오. – TZHX

+0

먼저 색인에 사용할 색인에 색인을 추가하십시오. 그리고 PHP를 사용하지 마십시오. PHP는 RAM에 변수를로드 할 것이고 동시에 250GB를 처리 할 RAM이 없으므로 MySQL 작업보다 더 많은 시간이 걸릴 청크를 반복해야합니다. – Leri

+0

@DainisAbols하지만 하루가 걸릴까요? – Noam

답변

0

다운 타임을 최소화하려면 개인적으로 다른 데이터베이스로 백업하고 복원 한 다음 다시 복원하기 전에 '열 삭제'를 수행하십시오.

  1. link

  2. 이 될 수도 있지만 시간이 오래 걸릴 내가 말할 것 오류에 더 경향이 있습니다.

  3. 예, 좋은 생각, 또한, 손

OPTIMIZE 표 전에 표를 분석 사용을 고려; 예약 된 유지 보수를 위해 DBMS가 오프라인 일 때 OPTIMIZE 명령을 실행해야합니다. 이 명령은 비표준 SQL입니다.

관련 문제