sql >> Databasteknik >  >> RDS >> Mysql

Vad är MYSQL-partitionering?

Tanken bakom partitionering är inte att använda flera servrar utan att använda flera tabeller istället för en tabell. Du kan dela upp en tabell i många tabeller så att du kan ha gamla data i en undertabell och nya data i en annan tabell. Då kan databasen optimera frågor där du ber om ny data med vetskap om att de finns i den andra tabellen. Dessutom definierar du hur data partitioneras.

Enkelt exempel från MySQL-dokumentationen :

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
);

Detta gör det möjligt att snabba upp t.ex.:

  1. Släpp gamla data genom att enkelt:

    ALTER TABLE employees DROP PARTITION p0;
    
  2. Databas kan påskynda en fråga så här:

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

Att veta att all data endast lagras på p2-partitionen.



  1. Formatera resultatet av en MySQL-fråga som om den kördes från konsolen

  2. MySQL INSERT INTO med dubbla villkor för IF NOT EXIST

  3. SQL-utvecklare 4.1.2

  4. Implementera sökning (hoppa över / ta) funktionalitet med denna fråga