- Este adăugarea de indicele la care se schimbă rapid coloana ca "lastUpdatedOn" în valoare de ea ?
- Cum de a calcula compromis ?
- Poate cineva să-mi punctul de documentația oficială pe când și cum nu MySQL reindexes pe rând inserții și actualizări de pe indexate coloana.
Dacă doriți să aibă un indice inclusiv o "schimbare rapidă coloana" este un compromis.
O UPDATE
nevoie pentru a șterge o intrare într-un index și se adaugă o intrare nouă în altă parte în index.
Pe de altă parte, indicele poate accelera foarte mult din cauza la index.
Vă rugăm să furnizați un exemplu concret astfel încât să putem discuta despre compromisuri în continuare.
Regulat non-UNIQUE
indici (spre deosebire de FULLTEXT
și SPATIAL
) sunt menținute astfel:
Există o "schimbare tampon" (qv) în buffer_pool care menține indicele de actualizări care nu au fost încă scrise pe disc.
Atunci când un DELETE
apare, o intrare este adăugat la Schimbare Tampon să spun că indicele de intrare trebuie să fie eliminate.
Pentru UPDATE
două intrări ar trebui să fie pus în CB.
Atunci când un SELECT
foloseste un astfel de indice, se verifică atât CB si real, pe disc, BTree pentru index. Că Pomul este de cache (bloc cu bloc) în buffer_pool. (Este un bloc de 16KB și poate deține sute(e) de intrări.)
CB este spălată pe disc "în fundal" sau "necesar". Care implică preluarea unui index block (dacă nu deja în cache), actualizarea unor înregistrări (delete, și/sau pentru a adăuga), și scrie-spate pe disc. Atât citi și a scrie sunt memorate în cache în buffer_pool, deci fie sau nu poate fi fizic I/O.
MySQL nu "reconstrui" un index regular ("reindex"), cu excepția prin anumite ALTERs
sau OPTIMIZE
. Asta este, toate modificările sunt făcute pe zbor. Acțiunea de CB este transparent pentru utilizator.