찾다

 >  Q&A  >  본문

mysql大表如何修改表结构,如增加字段或修改字段类型

怪我咯怪我咯2862일 전668

모든 응답(2)나는 대답할 것이다

  • 伊谢尔伦

    伊谢尔伦2017-04-17 16:46:52

    대형 MySQL 테이블에 필드를 추가하는 아이디어는 다음과 같습니다.

    <올> <리>

    임시 새 테이블을 생성하고 먼저 이전 테이블의 구조(인덱스 포함)를 복사합니다.

    old_table처럼 new_table 테이블을 생성합니다.

  • 새 테이블에 새 필드 추가

  • <리>

    이전 테이블에서 데이터 복사

    new_table(filed1,filed2…)에 삽입 old_table에서 file1,filed2,… 선택

  • 기존 테이블을 삭제하고 새 테이블의 이름을 기존 테이블의 이름으로 바꿉니다.

  • 세 번째 단계를 수행할 때 이 과정에도 시간이 걸릴 수 있다는 점에 유의해야 합니다. 이때 새로운 데이터가 들어오기 때문에 원본 테이블에 데이터의 쓰기 시간을 기록하는 필드가 있으면 가장 좋습니다. , 데이터에 대해 이 단계를 수행하고 데이터 차이가 매우 작아질 때까지 새 테이블로 가져오기를 반복합니다. 그러나 매우 적은 양의 데이터가 여전히 손실될 수 있습니다.

    따라서 테이블의 데이터가 특히 크고 데이터 무결성을 보장해야 하는 경우 작업을 종료하는 것이 가장 좋습니다.

    회신하다
    0
  • 高洛峰

    高洛峰2017-04-17 16:46:52

    Percona에는 임시 테이블을 사용하여 새로운 데이터 전송 트리거를 추가하는 것이 원칙입니다.

    회신하다
    0
  • 취소회신하다