2009-10-05 3 views
0

일부 중복 테이블을 제거하고 새로운 테이블을 추가하는 MySQL 테이블 유지 관리를 수행하고 있습니다.MySQL의 테이블 변경에서 DROP + ADD보다 빠르게 이름 바꾸기

삭제할 열의 유형 중 일부는 추가 할 열과 동일합니다. 이 기능을 활용하고 기존 열을 재사용하면 절차가 더 빨라지겠습니까?

필자의 이론적 근거에 따르면 열 이름을 변경하면 단순한 테이블 메타 데이터가 변경되지만 열을 제거하고 추가하면 파일 끝에있는 공간 (데이터 조각)을 찾거나 모든 행을 올바른 열로 다시 빌드하여 결국 ' 디스크의 같은 위치에 있습니다.

문제의 엔진은 MyISAM이며 이전에는 같은 상황에 있었던 사람의 의견을 듣고 싶습니다.

+0

열을 의미하지 않습니까? –

+0

Well spotted;) – jond

+0

업데이트와 삭제 + 삽입 사이에 의심의 여지가 있습니까? 나는 이해할 수 없다! 너 "재사용"을 위해 무엇을 할까? –

답변

1

성능이 인 의 이슈가 없다면 이름 바꾸기 접근법을 사용하지 않을 것입니다. 왜냐하면 당신이 놓고 가고자하는 모든 더러운 데이터 때문입니다.

마틴

+0

고맙게도 열이 사용되지 않습니다. 이것이 유일한 관심사입니까? 나는 MySQL이 어떻게 작동하는지에 대해 전제하고있다. 성능면에서는 좋은 점수를 얻지 만 라이브 사이트이므로 피할 수있는 경우 다운 타임이 20 분 이상인 것이 좋습니다. – jond

0

나는 열을 떨어 것 ... 가끔씩 좋은 생각이다 - 또한

는 테이블을 놓는 방법으로, 당신은 어떤 인덱스가 다시가 내장 취득하게됩니다. 어느쪽으로 든 분열을 일으킬 것입니다. 이는 정기적 인 유지 보수 계획에서 처리해야합니다. 많은 수의 수정 작업을 수행 한 후에 가속화 할 수 있습니다.

0

Myisam 테이블에서 모든 ALTER TABLE 작업이 전체 테이블 복사본을 수행하므로 서버가 테이블을 복사해야하는 시간 동안 테이블이 잠길 수 있습니다.

0

나는 동일한 논리를 사용했고 테이블을 다시 작성할 필요가없는 변경 (예 : 테이블 이름 바꾸기)이 필요한 경우에도 MySQL 버그로 인해 테이블을 다시 작성해야한다는 변경 사항이 발생했기 때문에 끈적 거 렸습니다. 표.

처리중인 필드가 날짜, 날짜 시간 또는 시간 소인 필드 인 경우이 항목이 표시 될 수 있습니다. 즉, 전체 재 작성을 계획하고 그런 식으로 계획해야한다고 가정해야합니다.