- Czy warto dodawać pocztowy w szybko zmieniającym się kolumna, taka jak "lastUpdatedOn"?
- Jak obliczyć kompromis ?
- Czy może ktoś podać mi na oficjalną dokumentację o tym, kiedy i jak MySQL wykonuje poprawki podczas wstawiania wierszy i aktualizacji indeksowanej kolumny.
Obecność indeksu zawierającego "szybko zmieniający się kolumna", jest kompromisem.
Jeden UPDATE
należy usunąć jeden wpis w indeksie i dodać nowy wpis w innym miejscu indeksu.
Z drugiej strony, indeks może znacznie przyspieszyć z indeksu.
Podaj konkretny przykład, abyśmy mogli kontynuować dyskusję kompromisów.
Regularne, nie-UNIQUE
indeksy (w przeciwieństwie do FULLTEXT
i SPATIAL
) są obsługiwane w taki sposób:
W puli buforów jest bufor zmian" (qv), który obsługuje aktualizacji indeksu, które nie zostały jeszcze zapisane na dysku.
Kiedy a DELETE
w tym przypadku bufor zmian dodaje się zapis wskazujący, że wpis do indeksu należy usunąć.
Dla UPDATE
być możetrzeba będzie dokonać w CBA dwa wpisy.
Kiedy a SELECT
używa się do tego indeksu, sprawdza jak CB, jak i prawdziwe, na dysku, BTree dla indeksu. To BTree jest buforowany (blok za blokiem) w puli buforów. (Blok o wymiarach 16 KB może zawierać setki wpisów.)
CB jest resetowany na dysku "w tle" lub "w miarę potrzeby". Obejmuje to wyjmowanie bloku indeksu (jeśli jeszcze nie buforowane), aktualizacja niektórych rekordów (usuwanie i/lub dodawanie) i nagrywanie z powrotem na dysk. Zarówno odczyt, jak i zapis w pamięci podręcznej w puli buforów, więc każdy lub żaden z nich nie może być fizycznym wejściem-wyjściem.
MySQL nie "przebudowuje" zwykły indeks ("переиндексирует"), jak tylko za pomocą określonych ALTERs
lub OPTIMIZE
. Czyli wszystkie zmiany są wprowadzane na bieżąco. Akcja CBA w sposób przejrzysty dla użytkownika.