-
Kan MySQL med rimelighed udføre forespørgsler på milliarder af rækker? -- MySQL kan 'håndtere' milliarder af rækker. "Med rimelighed" afhænger af forespørgslerne; lad os se dem.
-
Er InnoDB (MySQL 5.5.8) det rigtige valg til multi-milliard rækker? -- 5.7 har nogle forbedringer, men 5.5 er ret godt, på trods af at det er
næsten 68 år gammel, ogpå grænsen tilikke længere understøttes. -
Bedste datalager for milliarder af rækker -- Hvis du mener 'Engine', så InnoDB.
-
Hvor stor kan en MySQL-database blive, før ydeevnen begynder at forringes -- Igen, det afhænger af forespørgslerne. Jeg kan vise dig en 1K række tabel, der vil smelte sammen; Jeg har arbejdet med milliardrækketabeller, der nynner med.
-
Hvorfor MySQL kunne være langsom med store borde? -- rækkeviddescanninger fører til I/O, som er den langsomme del.
-
Kan Mysql håndtere tabeller, som vil indeholde omkring 300 millioner poster? -- igen, ja. Grænsen er et sted omkring en billion rækker.
-
(for InnoDB-tabeller, hvilket er mit tilfælde) at øge innodb_buffer_pool_size (f.eks. op til 80% af RAM). Jeg fandt også nogle andre MySQL-ydeevnejusteringsindstillinger her i Percona-bloggen -- ja
-
at have ordentlige indekser på bordet (ved at bruge EXPLAIN på forespørgsler) -- godt, lad os se dem. Der er mange fejl, der kan begås i denne kritiske område.
-
opdeling af bordet -- "Opdeling er ikke et vidundermiddel!" Jeg taler om det i min blog
-
MySQL Sharding -- I øjeblikket er dette DIY
-
MySQL klynge -- I øjeblikket er det bedste svar en Galera-baseret mulighed (PXC, MariaDB 10, DIY m/Oracle). Oracles "Group Replication" er en levedygtig konkurrent.
-
Partitionering understøtter ikke
FOREIGN KEY
eller "global"UNIQUE
. -
UUID'er, i den skala du taler om, vil ikke bare bremse systemet, men faktisk dræbe det. Type 1 UUID'er kan være en løsning.
-
Indsæt- og indeksopbygningshastighed -- Der er for mange variationer til at give et enkelt svar. Lad os se din foreløbige
CREATE TABLE
og hvordan du har tænkt dig at indlæse dataene. -
Masser af joins -- "Normaliser, men overnormaliser ikke." Normaliser især ikke dato- og klokkeslæt eller flydere eller andre "kontinuerlige" værdier.
-
2,3 millioner transaktioner om dagen -- hvis det er 2,3 millioner indsættelser (30/sek), så er der ikke det store ydelsesproblem. Hvis det er mere komplekst, kan RAID, SSD, batching osv. være nødvendigt.
-
beskæftige sig med en sådan mængde data -- Hvis det meste af aktiviteten er med de "seneste" rækker, vil buffer_puljen pænt 'cache' aktiviteten og derved undgå I/O. Hvis aktiviteten er "tilfældig", så MySQL (eller hvem som helst else) vil have I/O-problemer.
-
Formindskelse af datatyperne hjælper i en tabel som din. Jeg tvivler på, om du har brug for 4 bytes for at angive
fuel_type
. Der er flere 1-byte tilgange.