tabele de partiționare în cutia neagră mysql

tabele de partiționare în mySQL

Începând cu versiunea 5.1 mySQL suporta tabele partitsirovanie orizontale. Ce este? Partiționarea (partiționare) - această partiționare tabele mari în secțiuni logice pentru criteriile selectate. La nivelul inferior pentru tabele MyISAM, este fizic diferite fișiere de la 3 pe partiție (definiția de masă, fișier index și fișiere de date). Pentru tabelele InnoDB în configurația implicită - diferite spații din tabelele de fișiere InnoDB (nu uitați că InnoDB vă permite să configurați de stocare individuale la nivelul bazei de date sau chiar tabele specifice).

Cum arată?

Cele mai delicioase - cereri cu absolut nici o nevoie de a rescrie / optimiza:

Deci, ce se întâmplă:

Mai mult decât atât, accelerația este realizată chiar și în cazul executării de interogare, care afectează toate datele din toate partițiile - de fapt, în acest caz, mai întâi un primar „tratament“ tabele pentru mai puțin, atunci datele sunt fuzionat și au făcut calculul final. Deci, asta e doar etapa de „primul“, în acest caz, va fi mult mai rapid.

Care sunt beneficiile?

Principalul avantaj aș spune faptul că partiția cu datele „operaționale“ (de exemplu, cele mai recente pentru care apare cel mai frecvent de eșantionare) au o dimensiune minimă, și, ca rezultat, poate locui în memoria RAM.

Dacă aveți un tabel de jurnal, care este în continuă să fie înregistrate și hard disk-uri nu au timp, și ai pus raidul nu permite religia, puteți regla împărțirea funcției hash, și specificați o singură partiție de pe fiecare unitate hard disk pentru tine. În acest caz, noile date vor fi scrise în mod uniform pe toate hard disk-uri.

Ceea ce înseamnă „separare“ a datelor prevede mySQL?

Peste un interval de valori

PARTITION BY RANGE (store_id) (
PARTITION VALORI P0 MAI MICĂ (10)
PARTITION VALORI p1 MAI MICĂ (20)
PARTITION VALORI p3 MAI MICĂ (30)
);

Pe lista exactă a valorilor

PARTITION BY LIST (store_id) (
VALORI PARTITION pNorth IN (3,5,6,9,17),
VALORI PARTITION pEast IN (1,2,10,11,19,20)
)

De ce, vă întreb? Split, în partiții trebuie să se bazeze fie pe optimizarea considerente de eșantionare (care este de multe ori), fie pe baza optimizării motivelor de înregistrare (mai rar). Prin urmare, opțiunea ideală - este atunci când rupe un tabel pe cel mai mare număr posibil de partiții, astfel încât ar fi de 90% din toate probele au loc într-o singură partiție. Și, dacă aveți o logică complexă de eșantionare (de exemplu, obiectele situate în raioanele de nord a orașului, care se află în neconcordanța ID) pe care uneori are sens să le enumăr cu forța.

PARTITION BY HASH (store_id)
PARTITIONS 4;

Nu puteți gestiona partitsirovaniem, pur și simplu punct în care câmp pentru a construi hash și cât de multe „sub-tabele“ pentru a crea. De ce? Mult mai repede prelevarea de probe din câmpul specificat. În unele cazuri, se poate realiza „dispersie uniformă“ și înregistrarea datelor de accelerare.

Aproape la fel ca HASH, dar este mai logic - cu cheie.

PARTITION BY KEY (s1)
PARTITIONS 10;

Ie prelevarea de probe de câmp cheie menționat are loc cât mai eficient posibil.

Dar, apoi, același lucru ar trebui să decidă cu privire la modul în care partitsirovaniya. Ei bine, potrivit pentru vizitatori, atunci când contra-conectare este singurul identificator pentru care doriți să selectați toate datele rămase.

Nr partitsirovaniya verticală. Acest lucru este atunci când diferitele coloane (câmpuri) sunt în diferite „subtabele“. Pentru că, uneori, este util, puteți realiza acest lucru pe cont propriu, chiar dacă nu sunt atât de transparente: să împartă masa în două, conectându-le pe cheia primară. Dacă doriți cu adevărat frumusețea - puteți crea în plus a le vizualiza, de exemplu, pentru că nu va suprascrie vechea parte a codului.

Și finisare articol oferă un exemplu de tabele partitsirovaniya „reale“ - lunar. Deoarece LISTA / RANGE acceptă numai valori întregi, acesta trebuie să fie un pic mai complicat:

PS: În mysql au întotdeauna un pic „complicat“, astfel încât plictisitor nu va fi niciodată cu ea, iar la rândul său, niciodată nu va fi lăsat fără un loc de muncă :)

A fost acest răspuns de ajutor? Da Nu

Din păcate, nu am putut să vă ajute în rezolvarea problemei. Recenzia dvs. ne va permite să îmbunătățească acest articol.

articole similare