Programing

MYSQL 파티셔닝이란?

crosscheck 2020. 12. 3. 07:31
반응형

MYSQL 파티셔닝이란?


나는 문서 ( http://dev.mysql.com/doc/refman/5.1/en/partitioning.html )를 읽었 지만 그것이 무엇이며 왜 사용되는지 당신의 말로 원합니다.

  1. 주로 여러 대의 서버에 사용되므로 한 대의 서버를 끌어 내리지 않습니까?
  2. 따라서 데이터의 일부는 server1에 있고 데이터의 일부는 server2에 있습니다. 그리고 서버 3은 server1 또는 server2를 "지시"합니다. 작동 방식이 맞습니까?
  3. MYSQL 문서가 동일한 서버 내에서 분할하는 데 초점을 맞추는 이유는 무엇입니까? 목적이 서버간에 분산하는 것이라면?

분할의 기본 개념은 여러 서버를 사용하는 것이 아니라 하나의 테이블 대신 여러 테이블을 사용하는 것입니다. 테이블을 여러 테이블로 나눌 수 있으므로 한 하위 테이블에는 이전 데이터가 있고 다른 테이블에는 새 데이터가있을 수 있습니다. 그러면 데이터베이스는 두 번째 테이블에 있다는 것을 알고 새 데이터를 요청하는 쿼리를 최적화 할 수 있습니다. 또한 데이터가 분할되는 방식을 정의합니다.

MySQL 문서의 간단한 예 :

CREATE TABLE employees (
    id INT NOT NULL,
    fname VARCHAR(30),
    lname VARCHAR(30),
    hired DATE NOT NULL DEFAULT '1970-01-01',
    separated DATE NOT NULL DEFAULT '9999-12-31',
    job_code INT,
    store_id INT
)
PARTITION BY RANGE ( YEAR(separated) ) (
    PARTITION p0 VALUES LESS THAN (1991),
    PARTITION p1 VALUES LESS THAN (1996),
    PARTITION p2 VALUES LESS THAN (2001),
    PARTITION p3 VALUES LESS THAN MAXVALUE
);

예를 들어 속도를 높일 수 있습니다.

  1. 간단한 방법으로 오래된 데이터 삭제 :

    ALTER TABLE employees DROP PARTITION p0;
    
  2. 데이터베이스는 다음과 같은 쿼리 속도를 높일 수 있습니다.

    SELECT COUNT(*)
    FROM employees
    WHERE separated BETWEEN '2000-01-01' AND '2000-12-31'
    GROUP BY store_id;
    

모든 데이터가 p2 파티션에만 저장된다는 것을 알고 있습니다.


분할 된 테이블은 여러 물리적 서브 테이블로 구성있어 하나의 논리적 테이블입니다. 분할 코드는 실제로 기본 파티션을 나타내는 Handler 개체 집합을 둘러싼 래퍼이며 Handler 개체를 통해 요청을 스토리지 엔진에 전달합니다. 분할은 해시로 구분 된 명명 규칙을 사용하는 구성 요소 테이블을 볼 수있는 파일 시스템을 보면 쉽게 볼 수 있지만 SQL 계층에서 기본 분할 영역을 숨기는 일종의 블랙 박스입니다.

예를 들어, 다음은 매년 매출액을 별도의 파티션에 배치하는 간단한 방법입니다.

CREATE TABLE sales (
 order_date DATETIME NOT NULL,
 -- Other columns omitted
) ENGINE=InnoDB PARTITION BY RANGE(YEAR(order_date)) (
 PARTITION p_2010 VALUES LESS THAN (2010),
 PARTITION p_2011 VALUES LESS THAN (2011),
 PARTITION p_2012 VALUES LESS THAN (2012),
 PARTITION p_catchall VALUES LESS THAN MAXVALUE );

여기에서 더 많은 것을 읽으 십시오 .

참고 URL : https://stackoverflow.com/questions/1579930/what-is-mysql-partitioning

반응형