-
Kan MySQL rimligen utföra frågor på miljarder rader? -- MySQL kan "hantera" miljarder rader. "Rimligen" beror på frågorna; låt oss se dem.
-
Är InnoDB (MySQL 5.5.8) det rätta valet för flera miljarder rader? -- 5.7 har några förbättringar, men 5.5 är ganska bra, trots att det är
nästan 68 år gammal, ochpå gränsen tillstöds inte längre. -
Bästa datalager för miljarder rader -- Om du menar "Engine", så InnoDB.
-
Hur stor kan en MySQL-databas bli innan prestandan börjar försämras -- Återigen, det beror på frågorna. Jag kan visa dig en 1K radtabell som kommer att smälta ner; Jag har arbetat med miljardradstabeller som nynnar med.
-
Varför kan MySQL vara långsam med stora tabeller? -- Avståndssökningar leder till I/O, vilket är den långsamma delen.
-
Kan Mysql hantera tabeller som kommer att innehålla cirka 300 miljoner poster? -- igen, ja. Gränsen går någonstans runt en biljon rader.
-
(för InnoDB-tabeller vilket är mitt fall) öka innodb_buffer_pool_size (t.ex. upp till 80% av RAM). Jag hittade också några andra MySQL prestandajusteringsinställningar här i Perconas blogg -- ja
-
ha korrekta index på bordet (med EXPLAIN på frågor) -- ja, låt oss se dem. Det finns många misstag som kan göras i denna kritiska område.
-
partitionering av bordet -- "Partitionering är inget universalmedel!" Jag pratar om det i min blogg
-
MySQL Sharding -- För närvarande är detta DIY
-
MySQL-klustring -- För närvarande är det bästa svaret något Galera-baserat alternativ (PXC, MariaDB 10, DIY w/Oracle). Oracles "Group Replication" är en livskraftig utmanare.
-
Partitionering stöder inte
FOREIGN KEY
eller "global"UNIQUE
. -
UUID, i den skala du talar om, kommer inte bara att sakta ner systemet, utan faktiskt döda det. UUID av typ 1 kan vara en lösning.
-
Infoga och indexbygga hastighet -- Det finns för många varianter för att ge ett enda svar. Låt oss se din preliminära
CREATE TABLE
och hur du tänker mata in data. -
Många kopplingar -- "Normalisera, men övernormalisera inte." Normalisera i synnerhet inte datumtider eller flytningar eller andra "kontinuerliga" värden.
-
2,3 miljoner transaktioner per dag -- Om det är 2,3 miljoner inlägg (30/sek), då är det inte så mycket prestandaproblem. Om det är mer komplext kan RAID, SSD, batchning, etc, vara nödvändigt.
-
hantera sådana datavolymer -- Om den mesta aktiviteten är med de "senaste" raderna, kommer buffert_poolen att "cache" aktiviteten på ett bra sätt och därmed undvika I/O. Om aktiviteten är "slumpmässig", då MySQL (eller vem som helst else) kommer att ha I/O-problem.
-
Att krympa datatyperna hjälper i en tabell som din. Jag tvivlar på om du behöver 4 byte för att ange
fuel_type
. Det finns flera 1-byte metoder.