문제

나는 큰 느린 SQL 쿼리를 리팩토링하는 것에 대해 읽고 있었다. 여기, 그리고 현재 가장 높은 응답은 Mitch Wheat의 것입니다. Mitch Wheat는 쿼리가 주요 선택에 인덱스를 사용하고 다음을 언급하고자합니다.

가장 먼저해야 할 일은 정기적으로 활성 인덱스 유지 보수 작업이 있는지 확인하는 것입니다. 그렇지 않은 경우 기존 인덱스를 모두 재건하거나 가능하지 않은 경우 통계를 업데이트하십시오.

저는 아마추어 DBA 일뿐입니다. 기본적으로 Java 데스크탑 클라이언트이자 때로는 MySQL 백엔드 인 몇 가지 프로그램 프리랜서를 만들었습니다. 시스템을 설정할 때 쿼리 될 열에 인덱스를 생성하는 것을 알고 있습니다. varchar caseid와 varchar custname이 있습니다.

그러나 몇 달 전에이 시스템을 설정하고 클라이언트를 운영했으며 데이터가 입력 될 때 인덱스가 커져야한다고 생각하며 모든 것이 여전히 잘 작동한다고 생각합니다. 오늘은 '활성 유지 보수 작업'이 있어야한다는 것을 읽었 기 때문에 인덱스가 주기적으로 재건되어야 할까 걱정됩니다. 내가 그 일에 설정 한 유일한 유지 보수 작업은 야간 백업이었습니다.

데이터베이스가 요구할 수있는 정기적 인 유지 보수에 대해 커뮤니티에 물어보고 싶었습니다. 인덱스를 재건하는 것이 필요합니까? MySQL 백엔드가 아무도 엉망이되지 않고 데이터가 몇 기가 바이트 아래에 머무는 한 계속 진행할 수 있다고 믿을 수 있습니까?

도움이 되었습니까?

해결책

색인을 '재건'할 필요가 없습니다. 그들은 항상 최신 상태로 유지됩니다. 어쩌면 그는 테이블을 재건하는 것을 언급하고 있었을 것입니다. 사용 패턴과 스키마에 따라 Innodb에서 단편화 된 페이지를 얻을 수 있으며 MyISAM에서도 생각합니다. 테이블을 재건하면 디스크에서 데이터의 조각화를 제거하여 성능을 향상시킬 수 있습니다. MyISAM 테이블을 정기적으로 사용하지는 않지만 특정 사용 패턴으로 '최적화 테이블'을 실행하는 것이 좋습니다. MySQL 문서를 참조하십시오 테이블을 최적화하십시오 Myisam과 Innodb에 대한 좋은 정보.

나는 MyISAM 복잡성에 익숙하지 않지만 InnoDB를 사용하면 통계가 구체화 될 수 있다는 것은 사실입니다. 데이터베이스는 주어진 인덱스에 대한 데이터가 어떻게 배포되는지에 대한 예상 통계를 유지하며, 당연한 사람이 될 수 있지만 MySQL/InnoDB는 통계를 최신 상태로 유지하기 위해 기능성이 내장되어 있습니다. 당신은 보통 그것에 대해 걱정할 필요가 없습니다.

따라서 InnoDB를 사용하는 경우 답은 아니오입니다. 일반적으로 인덱스의 성능을 유지하기 위해 적극적으로 수행 할 필요가 없습니다. 나는 MyISAM을 확신하지 못합니다. 정기적으로 테이블을 최적화 해야하는 것이 더 일반적이라고 생각합니다.

다른 팁

일반적으로 인덱스를 최적화하고 오류를 확인하기 위해 Cronjob을 설정하는 것이 좋습니다.

보다 mysqlcheck. 전형적인 크론 작업은 같은 것 같습니다 mysqlcheck -Aaos 모든 데이터베이스의 모든 테이블을 오류에 대해 확인하고 인덱스를 최적화하며 오류의 출력 만 확인합니다.

"정기 유지 보수"에 관한 답변은 정기적으로 잘린 임시 테이블의 특정 맥락에있었습니다. 대부분의 MySQL 데이터베이스 설치에이를 수행 할 필요는 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top