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

Gestione di dati molto grandi con mysql

  • 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 6 8 anni e sul punto di non è 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.