Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

O que é particionamento MYSQL?


A ideia por trás do particionamento não é usar vários servidores, mas usar várias tabelas em vez de uma tabela. Você pode dividir uma tabela em várias tabelas para que possa ter dados antigos em uma subtabela e dados novos em outra tabela. Em seguida, o banco de dados pode otimizar consultas em que você solicita novos dados sabendo que eles estão na segunda tabela. Além disso, você define como os dados são particionados.

Exemplo simples da Documentação do 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
);

Isso permite acelerar, por exemplo:

  1. Descartando dados antigos por simples:
    ALTER TABLE employees DROP PARTITION p0;
    

  2. O banco de dados pode acelerar uma consulta como esta:
    SELECT COUNT(*)
    FROM employees
    WHERE separated BETWEEN '2000-01-01' AND '2000-12-31'
    GROUP BY store_id;
    

Sabendo que todos os dados são armazenados apenas na partição p2.