2009-03-10 6 views
2

매우 중요한 열 (날짜)에 인덱스가 누락 된 프로덕션 테이블이 있으면 사용자 영향없이 상기 인덱스를 적용 할 수있는 방법이 있습니까?잠금없이 MySQL/MyISAM 테이블에 인덱스를 적용하는 방법은 무엇입니까?

테이블은 현재 매초 5-10 개의 삽입을 얻으므로 전체 테이블 잠금이 해제됩니다. 일시적으로라도 이러한 삽입을 대체 테이블/데이터베이스로 리디렉션하는 것은 (기업 정치상 이유로) 거부됩니다. 다른 방법?

답변

2

내가 알고있는 한, MyISAM에서는 이것이 가능하지 않습니다. 초당 5 ~ 10 회의 INSERT를 사용하면 그렇게 많이 읽지 않는 이상 InnoDB를 고려해야합니다.

마스터 - 마스터 설정에서 복제를 사용하고 있습니까? (그래야합니다!) 그렇다면 대기 서버에서 CREATE INDEX을 수행하고 역할을 전환 한 다음 동일한 작업을 수행 한 다음 다시 전환하십시오. CREATE INDEX을 활성 노드로 복제하지 않으려면 master-master를 사용하는 경우 일시적으로 복제를 비활성화하십시오.

해당 테이블을 주로 로그를 아카이브하는 데 사용하는지 여부에 따라 아카이브 스토리지 엔진을 조사 할 수 있습니다.

+0

확실히 InnoDB로 이동하십시오. 요즘은 MyISAM 테이블이 손상되어 실제 정치적인 문제가 발생할 것입니다. 어쨌든,이 대답은 정확합니다. 복제가 실행 중이 아니면 정치인에게 필요하다고 알리십시오. –