15.7.1 MERGE 테이블의 장단점
MERGE
테이블은 다음과 같은 문제를 해결하는 데 도움이 될 수 있습니다.
로그 테이블 세트를 쉽게 관리한다. 예를 들어, 다른 달의 데이터를 별도의 테이블에 넣고, myisampack를 이용하여 그 일부를 압축하여 하나의 물건으로 이용하기 위해
MERGE
테이블을 만들 수 있습니다.속도를 올린다. 큰 읽기 전용 테이블을 같은 기준으로 분할하고 각 테이블을 다른 디스크에 넣을 수 있습니다. 이와 같이 구성된
MERGE
테이블은 하나의 큰 테이블을 사용하는 것보다 속도가 상당히 빨라질 수 있습니다.보다 효율적으로 검색을 실시한다. 검색 할 대상이 정확히 알고있는 경우 한 쿼리에서 기본 테이블 하나만을 검색하고 다른 쿼리에
MERGE
테이블을 사용할 수 있습니다. 중복 테이블 세트를 사용하는 수많은 다른MERGE
테이블을 가질 수 있습니다.보다 효율적인 복구를 실시한다. 1 개의 큰 테이블을 복구하는 것보다
MERGE
테이블에 매핑 된 개별 작은 테이블을 복구하는 것이 더 쉽습니다.많은 테이블을 순간적으로 하나의 테이블로 매핑한다.
MERGE
테이블은 각 테이블의 인덱스를 이용하기 때문에 자체 인덱스를 유지 보수 할 필요가 없습니다. 그 결과,MERGE
테이블 컬렉션을 만들거나 다시 매핑을 매우 빠르게 할 수 있습니다. (MERGE
테이블을 만들 때 인덱싱되지 않은 경우에도 인덱스의 정의를 지정해야합니다.)테이블 세트가 그들로부터 주문형 큰 테이블을 작성하려면 대신 그들로부터 주문형
MERGE
테이블을 만들 수 있습니다. 이 분이 속도가 상당히 빨라 많은 디스크 공간이 절약됩니다.운영 체제의 파일 크기 제한을 초과합니다. 개별
MyISAM
테이블은이 한계치에 제한되지만,MyISAM
테이블의 컬렉션은 제한되지 않습니다.MyISAM
테이블에 매핑하는MERGE
테이블을 정의하는 것으로, 그 단일 테이블의 별칭과 동의어를 만들 수 있습니다. 이를 행해도 특히 눈에 띄는 성능면의 영향은 없을 것입니다 (개별 읽기에 대한 몇 가지 간접 호출과memcpy()
호출이있을뿐입니다).
MERGE
테이블의 단점은 다음과 같습니다.
MERGE
테이블에 동일한MyISAM
테이블 밖에 사용할 수 없습니다.MyISAM
기능 중 일부는MERGE
테이블에서는 사용할 수 없습니다. 예를 들어,MERGE
테이블에FULLTEXT
인덱스를 만들 수 없습니다. (기초MyISAM
테이블에FULLTEXT
인덱스를 만들 수 있지만,MERGE
테이블을 전체 텍스트 검색에서 검색 할 수 없습니다.)MERGE
테이블이 아닌 임시이면 모든 기초MyISAM
테이블은 비 일시적이어야합니다.MERGE
테이블이 임시 인 경우,MyISAM
테이블은 임시 테이블과 비 임시 테이블이 혼합해도 괜찮습니다.MERGE
테이블은MyISAM
테이블보다 많은 파일 디스크립터를 사용합니다. 10 개의 클라이언트가 10 개의 테이블에 매핑하는MERGE
테이블을 사용하는 경우 서버는 (10 × 10) + 10 개의 파일 디스크립터를 사용합니다. (10 개의 클라이언트에 대해 각각 10 개의 데이터 파일 디스크립터 외에도 클라이언트간에 공유되는 10 개의 인덱스 파일 디스크립터입니다.)인덱스 읽기는 떨어집니다. 인덱스를 읽을 때
MERGE
스토리지 엔진은 모든 기초 테이블에 읽기를 실행하여 전달 된 인덱스 값에 정확히 일치하는지 확인해야합니다. 다음 인덱스 값을 읽고,MERGE
스토리지 엔진은 읽기 버퍼를 검색하여 다음 값을 찾아야합니다. 하나의 인덱스 버퍼가 소진 된 경우에만 스토리지 엔진은 다음 인덱스 블록을 읽어야합니다. 이제MERGE
인덱스는eq_ref
검색을 상당히 느려집니다 만,ref
검색에서는 그만큼 감소하지 않습니다.eq_ref
및ref
에 대한 자세한 내용은 섹션 13.8.2 "EXPLAIN 구문" 을 참조하십시오.