2009-10-16 6 views
46

Ho letto la documentazione (http://dev.mysql.com/doc/refman/5.1/en/partitioning.html), ma vorrei, con parole tue, che cos'è e perché è usata.Cos'è il partizionamento MySQL?

  1. È utilizzato principalmente per più server in modo che non trascini verso il basso un server?
  2. Quindi, una parte dei dati sarà su server1 e una parte dei dati sarà su server2. E il server 3 "punta" su server1 o server2 ... è così che funziona?
  3. Perché la documentazione di MYSQL si concentra sul partizionamento all'interno dello stesso server ... se lo scopo è di distribuirlo tra i server?

risposta

122

L'idea alla base del partizionamento non consiste nell'utilizzare più server ma utilizzare più tabelle anziché una tabella. È possibile dividere una tabella in più tabelle in modo da poter disporre di dati vecchi in una sottocartella e nuovi dati in un'altra tabella. Quindi il database può ottimizzare le query in cui chiedi nuovi dati sapendo che si trovano nella seconda tabella. Inoltre, si definisce come vengono suddivisi i dati.

esempio semplice da the MySQL Documentation:

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

Questo permette di velocizzare esempio:

  1. Dropping vecchi dati per semplice:

    ALTER TABLE employees DROP PARTITION p0; 
    
  2. Database può accelerare una query così:

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

Sapendo che tutti i dati sono memorizzati solo sulla partizione p2.

+2

# 2 viene chiamato "potatura" – longneck

+17

Questa è la migliore spiegazione sul partizionamento su Internet. –