2013-07-16 3 views
0

mysql의 구체화 된 뷰와 일반 테이블의 차이점을 알고 싶습니다. mysql은 구체화 된 뷰를 지원하지 않지만 플렉스 뷰를 사용할 수는 있지만mysql의 구체화 된 뷰와 일반 테이블의 차이점은 무엇입니까?

현재 call detail 레코드 (cdr 파일)를 처리하고 테이블 (예 : 테이블 A)에 레코드를 저장하고 다른 테이블 (예 : 테이블 B)는 테이블 A의 레코드를 가지지 만 레코드별로 그룹화합니다. 그래서 테이블 B는 테이블 A의 레코드를 국가 또는 도시별로 계산합니다.

표 A는 모든 CDR 파일 을 저장 표 B 쿼리에 의해

이제

내 질문에 어떻게 구체화를 그룹을 사용하여 우리는 테이블 A에서받은 모든 결과를 저장 될 때 엄청난 크기로 성장에 계속 보기는 위의 시나리오에서 테이블 B와 비교할 때 쿼리 성능과 관련하여이 시나리오에서 구현 될 수 있습니다.

+0

"그래서 테이블 B는 테이블 A의 레코드를 계산합니다 (예 : 국가 또는 도시 별 그룹)." create 문을 게시하십시오. 'B'는 테이블이고 뷰가 아닌가? – Behrang

+0

@behrang saeedzadeh : 테이블이면서보기가 아닙니다. – dell

답변

2

쿼리 성능을 비교할 때, 테이블 B의 SELECT 대 "flewview materialized view"의 SELECT는 차이가 없습니다. 왜냐하면 flexview는 실제 테이블을 생성하고 그 내용을 유지 보수하기 때문입니다 표.

아마도 "materialized view"테이블이 채워지는 방식이 달라질 수 있습니다. 테이블 B를 채우고 유지하는 방법과 다를 가능성이 매우 높습니다.

flexview가 테이블을 유지 관리하는 방법에 따라 삽입/업데이트/삭제 작업이 발생하면 동시성에 영향을 줄 수 있습니다. 즉 "새로 고침"프로세스가 행이 잠길 때 쿼리가 읽기를 수행하는 것을 차단합니다.

그러나 Materialized View에 대한 질의는 일반적인 테이블의 질의와 다를 수 없습니다.

+0

우리가 가지고있는 문제는 테이블 A가 .cdr 파일에서 읽은 데이터로 지속적으로 포격되고 있다는 것입니다. 다른 말로하면 많은 삽입 쿼리가 테이블 A에서 실행되고 있으며 동시에 테이블 A의 데이터를 읽고 (쿼리를 사용하여 그룹을 사용한다는 의미입니다) 테이블 B에 저장합니다. 기본적으로 우리는 표 B의 보고서에 필요한 데이터. 모든 접근법을 사용하여이 프로세스를 더 빨리 수행하려면 여기에 도움이 필요합니다. – dell

관련 문제