Partizionamento

Se ho una tabella con molti record, e quindi un grosso file, posso decidere di dividere il file in n più piccoli e, in base alla query, ottenere prestazioni migliori.

Un ottimo punto da cui iniziare è: StarData

al quale possiamo aggiungere:

  • Per sapere dove sono saltati i file delle tabelle:

show variables like ‘datadir’

  • Per avere informazioni sullo stato attuale

SELECT DISTINCT PARTITION_EXPRESSION
FROM INFORMATION_SCHEMA.PARTITIONS
WHERE TABLE_SCHEMA=’nomeSchema’ AND TABLE_NAME=’nomeTabella’

SELECT PARTITION_ORDINAL_POSITION, TABLE_ROWS, PARTITION_METHOD
FROM information_schema.PARTITIONS
WHERE TABLE_SCHEMA = ‘nomeSchema’ AND TABLE_NAME = ‘nomeTabella’

  • Per sapere quali file legge una determinata query

EXPLAIN partitions SELECT * FROM tabella WHERE id=1234

  • Per inizializzare

ALTER TABLE nomeTabella
PARTITION BY LIST COLUMNS (idCheVoglioUsare) (
PARTITION P111 VALUES IN (‘111’),
PARTITION P222 VALUES IN (‘222’)
)

  • Per aggiungere altre partizioni

ALTER TABLE nomeTabella
ADD PARTITION (
PARTITION a61714 VALUES IN (‘61714’)
)

  • Per cancellare tutte le partizioni e riavere un solo file per la tabella indicata

ALTER TABLE nomeTabella REMOVE PARTITIONING

  • Per cancellare solo una partizione

ALTER TABLE eventdata2 DROP PARTITION a61714

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.