sql >> Database teknologi >  >> RDS >> Mysql

Højvolumen opdateringstællere Mysql

Har du opdelt klienten i en separat maskine fra serveren? Det er et første, mindre skridt i skalering.

Har du replikering og skrivebeskyttede forespørgsler sendt til slaver? Det kan give mulighed for ubegrænset læsning skalering. (Men dette løser ikke OPDATERING-spørgsmålet, andet end at lette byrden på masteren.)

115 IOP'er på en enkelt, roterende disk vil stort set mætte den. innodb_flush_log_at_trx_commit er standard til 1, hvilket fører til mindst 1 IOP pr. transaktion. Nogle midlertidige løsninger (indtil din trafik vokser med yderligere 10x)...

SSD'er -- måske 1000 IOP'er.

Batch opdateringerne (såsom nævnt af @N.B.) Dette reducerer antallet af "flushes" med 100 gange.

innodb_flush_log_at_trx_commit =2 -- for praktisk talt at eliminere skylningerne (ved et vist tab af sikkerhed).

Men -- Selvom du kan lave OPDATERINGER hurtigt nok, behøver du så ikke også at læse værdierne? Det vil sige, at der vil være strid. Hvor mange SELECT'er på samme bord laver du? 100/sek kan være ok; 1000/sek kan forårsage så meget interferens, at det ikke virker.

Hvor stort er bordet? For at noget af dette kan fungere, skal det være lille nok til at blive cachelagt hele tiden.

Reddit er en anden tilgang - indfang opdateringerne der. Træk derefter løbende akkumulerede tal ud og lav de nødvendige OPDATERINGER.

Sharding -- Det er her, du deler dataene op på flere maskiner. Opdeling på en hash eller opslag (eller en kombination af de to) af bruger-id'et er almindeligt. Så skal OPDATERING finde ud af, hvilken maskine der skal opdateres, og derefter udføre handlingen der. Hvis du har 10 skår (maskiner), kan du opretholde næsten 10 gange opdateringshastigheden. I sidste ende er dette den eneste måde, hvorpå alle de tunge brugere kan håndtere mere end 100 millioner brugere og milliarder af forespørgsler om dagen.

PARTITIONERING hjælper sandsynligvis ikke. Partitionsbeskæringskoden er endnu ikke effektiv nok til at undgå for meget overhead til sådan en lille forespørgsel.




  1. Udsættelse af hyppige opdateringer i MySQL

  2. Arbejde med Java Data i Qlik Sense

  3. MYSQL - Opdel data i flere rækker

  4. Introduktion til SQL-gruppering og sammenlægning