MySQL에서 구체화 된 뷰를 만드는 가장 좋은 방법


19

MySQL 5.6을 사용하고 있습니다. Oracle에서와 같이 구체화 된 뷰를 만들 수 없습니다. Flexview와 같은 하나 또는 두 개의 솔루션을 보았습니다.

누구나 최소한의 복잡성으로 MySQL에서 구체화 된 뷰를 생성하는 가장 좋은 방법 (Oracle과 같은 자동 새로 고침)을 말해 줄 수 있습니까?

답변:


11

구체화 된 뷰는 MySQL에 존재하지 않습니다.

Flexviews 는 DBA StackExchange에서 권장되었습니다.

이미 가지고 있기 때문에 계속 사용하려면 실사와 팔꿈치 그리스가 필요할 수 있습니다 (아직 그렇게하지 않은 경우).

대안 # 1

요약 테이블을 설정할 수 있습니다. 요약 테이블을 작성하기 전에 집계를 지원하려면 기본 테이블을 색인화해야합니다.

대안 # 2

여기에 http://www.materialized.info/ 의 오래된 게시물이 있습니다 . 여기에는 흥미로운 전략이 있습니다. 트리거를 사용합니다. 재미있을 것 같습니다 ...

대안 # 3

기본 테이블이 크지 않고 일주일에 한 번 전체 테이블을 쿼리 할 수 ​​있다면 CREATE VIEWUser CommentsMySQL 설명서 섹션 에서 아이디어를 얻으십시오 . materialized해당 페이지 에서 단어 를 검색 하십시오.


최신 버전의 MySQL에서는 materliazed 테이블 dba.stackexchange.com/a/226707/50702
Revious

1

MySQL에서 구체화 된 뷰를 갖는 두 가지 가능한 솔루션을 찾았습니다.

  1. 필요한 모든 데이터가 포함 된 집계 테이블을 생성 한 다음 데이터가 제공되는 테이블에서 트리거를 생성하십시오.

  2. 주기적으로 데이터를 테이블로 집계하는 스케줄러 작성

내 블로그 게시물에서 2 가지 옵션을 구현하는 방법에 대한 자세한 내용은 여기를 참조 하십시오.


0

기본 데이터가 대부분 안정적이거나 뷰와 데이터의 차이를 견딜 수있는 경우이 사용 사례를 해결하기 위해 작성한 단순 롤링 도구를 사용해보십시오 . 이를 통해 테이블을 생성하는 복잡한 SQL 쿼리를 별도의 파일에 쓸 수 있습니다. 쿼리 간의 관계가 자동으로 파생되고 쿼리는 Unix make 도구를 통해 적절한 순서로 실행됩니다 . 생성 된 테이블을 새로 고치려면를 실행해야합니다 make clean all. 이 도구는 미리 계산 된 입력 결과를 기반으로 효율적으로 실행되는 정교한 쿼리를 점진적으로 작성하는 데 유용합니다.


당신은 아마도 당신이 (공구 저자라는) 공개를 더 두드러지게 만들어야 할 것입니다.
mustaccio 님이

좋은 지적! 이것을 명확히하기 위해 답을 편집했습니다.
Diomidis Spinellis
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.