sql >> Databasteknik >  >> RDS >> Mysql

Hur optimerar man mysql-index så att INSERT-operationer sker snabbt på ett stort bord med frekventa skrivningar och läsningar?

Skrivoperationer för en enskild rad i en datatabell ska inte ta 5 sekunder, oavsett hur stort bordet blir.

Är ditt klustrade index baserat på tidsstämpelfältet? Om inte, borde det vara det, så att du inte skriver in mitt på bordet någonstans. Se också till att du använder InnoDB-tabeller - MyISAM är inte optimerat för skrivningar.

Jag skulle föreslå att du skriver i två tabeller:en långtidstabell, en korttidsrapporteringstabell med liten eller ingen indexering, som sedan dumpas vid behov.

En annan lösning skulle vara att använda memcached eller en databas i minnet för liverapporteringsdata, så det finns ingen träff på produktionsdatabasen.

En tanke till:exakt hur "live" måste någon av dessa rapporter vara? Kanske att hämta en ny lista på tidsbestämd basis jämfört med en gång för varje sidvisning skulle räcka.



  1. SQL-kommandot avslutades inte korrekt när LIMIT användes

  2. Kan inte ansluta till MySQL-servern på 'localhost' (10061) efter installationen

  3. Varför genererar Entity Framework kapslade SQL-frågor?

  4. Finns det något sätt att få den första och sista vardagen i en månad?