sql >> Database >  >> RDS >> Mysql

InnoDB samengestelde indexeringsvolgorde en INSERT-prestaties

(Opmerking:dit antwoord verduidelijkt of is het niet eens met enkele van de reeds geschreven opmerkingen.)

DELETEs worden vertraagd vanwege het verwijderen van de indexitems. UPDATEs mag vertraagd worden -- het hangt ervan af of een geïndexeerde kolom is gewijzigd.

SELECTs , UPDATEs , en DELETEs , maar niet INSERTs , moet de rij(en) vinden; hiervoor kan een index veel helpen.

Een INSERT is een extra bedrag gekwetst als er een UNIQUE . is index om te controleren.

Secundaire sleutels (in InnoDB), behalve voor UNIQUE sleutels, worden bijgewerkt (meestal vanwege INSERT en DELETEs , maar mogelijk vanwege UPDATE ) op een 'vertraagde' manier via de zogenaamde "Change Buffer". Hierdoor wordt het bijwerken van de index effectief uitgesteld, maar blijft de index toch volledig bruikbaar.

Dit alles wordt niet beïnvloed door de volgorde van de kolommen in een index. Als een index echter groter is dan in het RAM-geheugen kan worden opgeslagen, komt "caching" in het spel en kan I/O al dan niet een rol spelen. Maar dat is een ander onderwerp.

Over het algemeen het voordeel uit een index voor lezen veel zwaarder dan de vertraging voor schrijfbewerkingen.



  1. Top 9 tips voor het opzetten van uw SQL Server-cluster

  2. Hoofden in de cloud bij CHAR(10)

  3. php:meerdere csv-bestanden importeren in mysql-tabel

  4. unit testen met in-memory database