-
MySQL può ragionevolmente eseguire query su miliardi di righe? -- MySQL può "gestire" miliardi di righe. "Ragionevolmente" dipende dalle query; vediamoli.
-
InnoDB (MySQL 5.5.8) è la scelta giusta per miliardi di righe? -- 5.7 ha alcuni miglioramenti, ma 5.5 è abbastanza buono, nonostante sia
quasi 68 anni esul punto dinon è più supportato. -
Il miglior archivio dati per miliardi di righe:se intendi "Motore", allora InnoDB.
-
Quanto può diventare grande un database MySQL prima che le prestazioni inizino a peggiorare -- Ancora una volta, questo dipende dalle query. Posso mostrarti una tabella di righe da 1K che crollerà; Ho lavorato con tabelle di miliardi di righe che ronzavano insieme.
-
Perché MySQL potrebbe essere lento con tabelle di grandi dimensioni? -- le scansioni dell'intervallo portano all'I/O, che è la parte lenta.
-
Mysql può gestire tabelle che conterranno circa 300 milioni di record? -- di nuovo, sì. Il limite è di circa un trilione di righe.
-
(per le tabelle InnoDB che è il mio caso) aumentando innodb_buffer_pool_size (ad esempio, fino all'80% della RAM). Inoltre, ho trovato alcune altre impostazioni di ottimizzazione delle prestazioni di MySQL qui nel blog di Percona -- sì
-
avere gli indici appropriati sul tavolo (usando EXPLAIN sulle query) -- beh, vediamoli. Ci sono molti errori che possono essere commessi in questa critica zona.
-
partizionamento della tabella -- "Il partizionamento non è una panacea!" Ne parlo in il mio blog
-
MySQL Sharding -- Attualmente questo è fai-da-te
-
Clustering MySQL -- Attualmente la risposta migliore è qualche opzione basata su Galera (PXC, MariaDB 10, DIY w/Oracle). La "Group Replication" di Oracle è un valido contendente.
-
Il partizionamento non supporta
FOREIGN KEY
o "globale"UNIQUE
. -
Gli UUID, alla scala di cui stai parlando, non solo rallenteranno il sistema, ma lo uccideranno. UUID di tipo 1 potrebbe essere una soluzione.
-
Velocità di inserimento e creazione dell'indice:ci sono troppe variazioni per dare una risposta univoca. Vediamo il tuo tentativo
CREATE TABLE
e come intendi inserire i dati. -
Molti join:"Normalizza, ma non sovranormalizzare". In particolare, non normalizzare datetime o float o altri valori "continui".
-
Crea tabelle di riepilogo
-
2,3 milioni di transazioni al giorno -- Se si tratta di 2,3 milioni di inserimenti (30/sec), quindi non c'è molto di un problema di prestazioni. Se più complessi, potrebbero essere necessari RAID, SSD, batch, ecc.
-
gestire tale volume di dati -- Se la maggior parte dell'attività è con le righe "recenti", buffer_pool "memorizzerà nella cache" l'attività, evitando così l'I/O. Se l'attività è "casuale", MySQL (o chiunque altrimenti) avrà problemi di I/O.
-
Ridurre i tipi di dati aiuta in una tabella come la tua. Dubito che tu abbia bisogno di 4 byte per specificare
fuel_type
. Esistono più approcci a 1 byte.