Ricerca…


Osservazioni

  • RANGE partizionamento . Questo tipo di partizionamento assegna le righe alle partizioni in base ai valori delle colonne che rientrano in un determinato intervallo.

  • Partizione LIST . Simile al partizionamento per RANGE, tranne per il fatto che la partizione è selezionata in base a colonne corrispondenti a uno di un set di valori discreti.

  • Partizionamento HASH . Con questo tipo di partizionamento, viene selezionata una partizione in base al valore restituito da un'espressione definita dall'utente che opera sui valori delle colonne nelle righe da inserire nella tabella. La funzione può essere costituita da qualsiasi espressione valida in MySQL che restituisca un valore intero non negativo. È disponibile anche un'estensione per questo tipo, LINEAR HASH .

  • Partizionamento KEY . Questo tipo di partizionamento è simile al partizionamento di HASH, tranne per il fatto che vengono fornite solo una o più colonne da valutare e il server MySQL fornisce la propria funzione di hashing. Queste colonne possono contenere valori diversi dai numeri interi, poiché la funzione di hashing fornita da MySQL garantisce un risultato intero indipendentemente dal tipo di dati della colonna. È disponibile anche un'estensione per questo tipo, LINEAR KEY .

RANGE Partizionamento

Una tabella partizionata per intervallo viene partizionata in modo tale che ciascuna partizione contenga righe per le quali il valore dell'espressione partizionamento si trova all'interno di un determinato intervallo. Gli intervalli devono essere contigui ma non sovrapposti e vengono definiti utilizzando l'operatore VALUES LESS THAN Per i prossimi esempi, si supponga di creare una tabella come la seguente per contenere record personali per una catena di 20 negozi video, numerati da 1 a 20:

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 NOT NULL,
    store_id INT NOT NULL
);

Questa tabella può essere suddivisa in vari modi, a seconda delle esigenze. Un modo sarebbe utilizzare la colonna store_id . Ad esempio, potresti decidere di suddividere la tabella in 4 modi aggiungendo una clausola PARTITION BY RANGE come mostrato qui:

ALTER TABLE employees PARTITION BY RANGE (store_id) (
    PARTITION p0 VALUES LESS THAN (6),
    PARTITION p1 VALUES LESS THAN (11),
    PARTITION p2 VALUES LESS THAN (16),
    PARTITION p3 VALUES LESS THAN MAXVALUE
);

MAXVALUE rappresenta un valore intero che è sempre maggiore del valore intero più grande possibile (in linguaggio matematico, funge da limite minimo).

basato sul documento ufficiale MySQL .

LISTA Partizionamento

Il partizionamento delle liste è simile al partizionamento della gamma in molti modi. Come nel partizionamento di RANGE, ogni partizione deve essere definita in modo esplicito. La principale differenza tra i due tipi di partizionamento è che, nel partizionamento delle liste, ogni partizione viene definita e selezionata in base all'appartenenza di un valore di colonna in uno di un insieme di liste valori, piuttosto che in uno di un insieme di intervalli contigui di valori. Questo viene fatto usando PARTITION BY LIST(expr) dove expr è un valore di colonna o un'espressione basata su un valore di colonna e restituendo un valore intero, e quindi definendo ogni partizione per mezzo di VALUES IN (value_list) , dove value_list è una elenco di numeri interi separati da virgola.

Per gli esempi che seguono, assumiamo che la definizione di base della tabella da partizionare sia fornita CREATE TABLE mostrata qui:

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

Supponiamo che ci siano 20 negozi video distribuiti tra 4 franchising come mostrato nella seguente tabella.

Regione Numeri ID negozio
Nord 3, 5, 6, 9, 17
est 1, 2, 10, 11, 19, 20
ovest 4, 12, 13, 14, 18
Centrale 7, 8, 15, 16

Per suddividere questa tabella in modo tale che le righe per i negozi appartenenti alla stessa regione siano memorizzate nella stessa partizione

ALTER TABLE employees PARTITION BY LIST(store_id) (
    PARTITION pNorth VALUES IN (3,5,6,9,17),
    PARTITION pEast VALUES IN (1,2,10,11,19,20),
    PARTITION pWest VALUES IN (4,12,13,14,18),
    PARTITION pCentral VALUES IN (7,8,15,16)
);

basato sul documento ufficiale MySQL .

Partizionamento HASH

Il partizionamento di HASH viene utilizzato principalmente per garantire una distribuzione uniforme dei dati tra un numero predeterminato di partizioni. Con intervallo o elenco di partizioni, è necessario specificare esplicitamente in quale partizione deve essere memorizzato un determinato valore di colonna o un insieme di valori di colonna; con il partizionamento hash, MySQL si occupa di questo per te, e devi solo specificare un valore o un'espressione di colonna in base al valore di una colonna da sottoporre a hash e il numero di partizioni in cui deve essere divisa la tabella partizionata.

La seguente istruzione crea una tabella che utilizza l'hashing sulla colonna store_id ed è divisa in 4 partizioni:

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 HASH(store_id)
PARTITIONS 4;

Se non si include una clausola PARTITIONS , il numero di partizioni è impostato su 1.

basato sul documento ufficiale MySQL .



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow