- Je dodal, index na rychle se měnící sloupce jako "lastUpdatedOn" stojí za to ?
- Jak vypočítat kompromis ?
- Může mi někdo říct kde je oficiální dokumentaci o tom, kdy a jak dělá MySQL reindexes na řádek vloží a aktualizace na indexované sloupce.
Zda chcete mít index, včetně "rychle se měnící sloupec" je kompromis.
O UPDATE
potřebuje, aby se odstranit jednu položku v indexu a přidat novou položku jinde v indexu.
Na druhé straně, index může výrazně urychlit vzhledem k indexu.
Uveďte prosím konkrétní příklad, tak to můžeme probrat kompromisy další.
Pravidelné non-UNIQUE
indexy (oproti FULLTEXT
a SPATIAL
), jsou zachována takto:
Tam je "změna paměti" (qv) v buffer_pool, že udržuje index aktualizace, které ještě nebyly zapsány na disk.
Když DELETE
nastane, bude položka přidána ke Změně Pufru říci, že index vstupu musí být odstraněny.
Pro UPDATE
dvě položky mohou třeba dát do CB.
Když SELECT
používá se takový index, kontroluje jak na CB a skutečný, na disku, BTree pro index. Že BTree je mezipaměti (blok po bloku) v buffer_pool. (Blok je 16KB a může mít set(s) záznamů.)
CB je zapsány na disk "v pozadí" nebo "podle potřeby". To zahrnuje načítání indexu bloku (pokud již není v mezipaměti), aktualizaci některé položky (odstranit a/nebo přidat), a zápis zpět na disk. Jak číst a psát jsou ukládány do mezipaměti v buffer_pool, takže buď a nebo taky může být fyzická I/O.
MySQL není "obnovit" normální index ("reindex"), s výjimkou prostřednictvím určitých ALTERs
nebo OPTIMIZE
. To znamená, že všechny změny jsou prováděny v reálném čase. Akce centrální banky je transparentní pro uživatele.