문제

나는 찾았다 2005 년 MySQL 포럼에 게시, 그러나 그보다 더 최근의 것은 없습니다. 이를 바탕으로 불가능합니다. 그러나 3-4 년 안에 많은 변화가 바뀔 수 있습니다.

내가 찾고있는 것은보기를 통해 인덱스를 갖는 방법이지만, 보는 테이블이 무례한 상태로 남아 있습니다. 인덱싱은 작문 과정에 해를 끼치고이 테이블은 매우 자주 (색인이 크롤링에 모든 것을 속도로 느리게하는 지점까지) 작성됩니다. 그러나 이러한 색인 부족으로 인해 쿼리가 고통스럽게 느려집니다.

도움이 되었습니까?

해결책

MySQL이 당신이 필요로하는 구체화 된 견해를지지한다고 생각하지는 않지만 어쨌든이 상황에서는 당신을 도울 수 없습니다. 인덱스가보기에 있든 기본 테이블에 있든, 기본 테이블을 업데이트하는 동안 어느 시점에서 글을 쓰고 업데이트해야하므로 여전히 쓰기 속도 문제가 발생합니다.

가장 좋은 방법은 아마도 주기적으로 업데이트되는 요약 테이블을 만드는 것입니다.

다른 팁

분석 처리 데이터에서 트랜잭션 처리 데이터를 추상화하여 고유 한 요구 사항을 충족하도록 전문화 할 수 있도록 고려해 보셨습니까?

기본 아이디어는 정기적으로 수정 된 하나의 데이터 버전이 있다는 것입니다. 이는 트랜잭션 처리 측면이므로 쓰기 작업이 빠르도록 정규화 및 조명 인덱스가 필요합니다. 데이터의 두 번째 버전은 분석 처리를 위해 구성되어 있으며 빠른보고 작업을 위해 덜 정규화되고 더 많이 인덱싱 된 경향이 있습니다.

분석 처리를 중심으로 구성된 데이터는 일반적으로 큐브의 측면을 나타내는 사실 테이블과 큐브의 가장자리를 나타내는 치수 테이블로 구성된 데이터웨어 하우징의 큐브 방법론을 중심으로 구축됩니다.

flexviews 기본 테이블의 변경 사항을 추적하고 구체화 된보기로 기능하는 테이블을 업데이트하여 MySQL에서 구체화 된 뷰를 지원합니다. 이 접근법은보기에 의해 지원되는 SQL이 약간 제한되어 있음을 의미합니다 (변경 로깅 루틴이 변경을 위해 추적해야 할 테이블을 파악해야하므로 MySQL에서 구체화 된보기에 가장 가까운 곳이라는 것을 의미합니다. .

하나의 인덱스보기 만 원하십니까? 색인이 하나만있는 테이블에 글을 쓰는 것이 그 파괴적인 것 같지는 않습니다. 기본 키가 없습니까?

각 레코드가 크면 단축 방법을 알아 냄으로써 성능을 향상시킬 수 있습니다. 또는 필요한 색인의 길이를 단축하십시오.

이것이 쓰기 전용 테이블 인 경우 (즉, 업데이트를 수행 할 필요가 없음) MySQL에서 아카이브를 시작하거나 레코드 (및 인덱스 키)를 삭제하는 것이 치명적일 수 있습니다. 새로운 인덱스 값을 추가하기보다는 삭제 된 키의 슬롯. 반 직관적이지만이 경우 더 큰 테이블을 사용하는 것이 좋습니다.

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