>  기사  >  데이터 베이스  >  Mysql의 MERGE 스토리지 엔진 소개(코드 예)

Mysql의 MERGE 스토리지 엔진 소개(코드 예)

不言
不言앞으로
2019-02-14 13:21:421848검색

이 기사는 MySQL의 MERGE 스토리지 엔진(코드 예제)에 대한 소개를 제공합니다. 이는 특정 참조 가치가 있으므로 도움이 필요한 친구가 될 수 있기를 바랍니다.

MERGE 스토리지 엔진은 MyISAM 데이터 테이블 세트를 논리 단위로 처리하여 동시에 쿼리할 수 있습니다. MERGE 데이터 테이블 구조를 구성하는 MyISAM 데이터 테이블의 각 구성원은 정확히 동일한 테이블 구조를 가져야 합니다. 각 멤버 데이터 테이블의 데이터 컬럼은 동일한 이름과 동일한 타입으로 동일한 순서로 정의되어야 하며, 인덱스도 동일한 순서, 동일한 방식으로 정의되어야 한다. 여러 개의 로그 데이터 테이블이 있고 그 내용이 지난 몇 년 동안의 각 연도에 대한 로그 기록 항목이라고 가정합니다. 해당 정의는 다음과 같습니다. YY는 연도를 나타냅니다(권장 과정: MySQL 튜토리얼)

CREATE TABLE log_YY ( 
    dt DATETIME NOT NULL, 
    info VARCHAR(100) NOT NULL, 
    INDEX (dt) 
) ENGINE = MyISAM;

로그 데이터 가정 현재 테이블 모음에는 log_2004, log_2005, log_2006, log_2007이 포함되어 있으며 아래와 같이 MERGE 데이터 테이블을 생성하여 논리 단위로 그룹화할 수 있습니다.

CREATE TABLE log_merge ( 
    dt DATETIME NOT NULL, 
    info VARCHAR(100) NOT NULL, 
    INDEX(dt) 
) ENGINE = MERGE UNION = (log_2004, log_2005, log_2006, log_2007);

ENGINE 옵션의 값은 MERGE여야 하며 UNION 옵션 목록 이 MERGE 데이터 시트에는 해당 관련 데이터 시트가 포함되어 있습니다. 이 MERGE가 생성된 후에는 각 쿼리가 이를 구성하는 각 멤버 데이터 테이블에 동시에 영향을 미친다는 점을 제외하면 다른 데이터 테이블과 마찬가지로 쿼리할 수 있습니다. 다음 쿼리를 사용하면 위 로그 데이터 테이블의 총 데이터 행 수를 알 수 있습니다.

SELECT COUNT(*)FROM log_merge;

다음 쿼리는 지난 몇 년 동안의 로그 기록 항목 수를 확인하는 데 사용됩니다.

SELECT YEAR(dt) AS y, COUNT(*) AS entries FROM log_merge GROUP BY y;

또한 여러 개의 쿼리를 실행하지 않고도 여러 개의 데이터 테이블을 동시에 참조할 수 있어 편리하도록 MERGE 데이터 테이블은 다음과 같은 편의성도 제공합니다.

 1) MERGE 데이터 테이블을 사용하면 각 MyISAM 데이터 테이블에서 허용하는 최대 길이를 초과하는 크기의 논리 단위를 생성할 수 있습니다.
 2) 압축된 데이터 테이블은 MERGE 데이터 테이블에 포함됩니다. 예를 들어, 특정 연도가 끝나면 더 이상 해당 로그 파일에 레코드를 추가하면 안 되므로 myisampack 도구를 사용하여 압축하여 공간을 절약할 수 있으며 MERGE 데이터 테이블은 평소대로 작동할 수 있습니다
 3) , MERGE 데이터 테이블은 DELETE 및 UPDATE 작업도 지원합니다. INSERT 작업은 MySQL이 새 데이터 행을 삽입해야 하는 멤버 테이블을 알아야 하기 때문에 더 까다롭습니다. MERGE 데이터 테이블의 정의에는 INSERT_METHOD 옵션이 포함될 수 있습니다. 이 옵션의 가능한 값은 NO, FIRST, LAST입니다. 해당 의미는 INSERT 작업이 금지되고 현재 UNION 옵션에 새로운 데이터 행이 삽입된다는 의미입니다. . 첫 번째 데이터 테이블 또는 마지막 데이터 테이블. 예를 들어, 다음 정의는 log_merge 테이블의 INSERT 작업을 UNION 옵션에 나열된 마지막 테이블인 log_2007 테이블의 INSERT인 것처럼 처리합니다.

CREATE TABLE log_merge( 
    dt DATETIME NOT NULL, 
    info VARCHAR(100) NOT NULL, 
    INDEX(dt) 
) ENGINE = MERGE UNION = (log_2004, log_2005, log_2006, log_2007) INSERT_METHOD = LAST;

새 멤버 테이블 log_2009를 생성하고 이를 허용합니다. 동일한 테이블 구조를 사용하고 log_2009: log_2009:

CREATE TABLE log_2009 LIKE log_2008; //根据旧表创建新表
ALTER TABLE log_merge UNION = (log_2004, log_2005, log_2006,log_2007,log_2008,log_2009);
를 포함하도록 log_merge 데이터 테이블을 수정합니다.

위 내용은 Mysql의 MERGE 스토리지 엔진 소개(코드 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제