lunedì 1 agosto 2011

5 modi per amplificare scalabilità di MySQL

Inviato da Sean Hull

Ci sono un sacco di problemi di scalabilità che vediamo con i clienti più e più volte. L'elenco potrebbe facilmente comprendere 20, 50 o anche 100 pezzi, ma l'abbiamo accorciato fino al più grande dei cinque temi che vediamo.

1. Tune le query

Di gran lunga il più grande bang per il dollaro è l'ottimizzazione delle query. Le query possono essere funzionalmente corretta e soddisfare i requisiti aziendali senza lo stress test per traffico intenso e carico elevato. È per questo che spesso vediamo i clienti con dolori della crescita, la scalabilità e le sfide come il loro sito diventa più popolare. Questo rende anche un senso.Non sarebbe necessariamente un buon uso del tempo per sintonizzare una query per qualche pagina in un angolo remoto del tuo sito, che non hanno ricevuto nel mondo reale del traffico. Quindi una certa quantità di regolazione reattiva è comune e appropriata.

Attivare il log delle query lente e guardarlo. Usa , il grande strumento da Maatkit per analizzare il log.Assicurarsi inoltre che il log_queries_not_using_indexes flag è impostato. Una volta trovata una query pesante alta intensità di risorse e ottimizzazione! Utilizzare il EXPLAIN struttura, utilizzare un profiler, guarda l'utilizzo degli indici e creare indici mancanti, e capire come si sta unendo e / o smistamento.

2. Impiegare master-Master Replication

Master-master attivo-passivo replica, altrimenti noto come replicazione circolare, può essere un vantaggio per l'alta disponibilità, ma anche per la scalabilità. Questo perché hai subito in sola lettura schiavo per la vostra applicazione di colpire pure. Molte applicazioni web presentano una ripartizione 80/20, dove l'80% di attività viene letto o SELECT e il resto è INSERT e UPDATE. Configurare l'applicazione per inviare leggere il traffico verso lo schiavo o rearchitect quindi questo è possibile. Questo tipo di scalabilità orizzontale può essere ulteriormente estesa, aggiungendo ulteriori sola lettura schiavi per le infrastrutture, se necessario.

3. Usa la tua memoria

Sembra molto semplice e diretto, ma ci sono spesso trascurate i dettagli. Al minimo accertarsi di impostare questi:

  • innodb_buffer_pool_size
  • key_buffer_size (caching indice MyISAM)
  • query_cache_size - anche se attenzione ai temi sui grandi scatole SMP
  • thread_cache & table_cache
  • innodb_log_file_size & innodb_log_buffer_size
  • sort_buffer_size, join_buffer_size, read_buffer_size, read_rnd_buffer_size
  • tmp_table_size & max_heap_table_size


4. RAID del disco I / O

Qual è sotto la vostra base dati? Non sai? Ebbene si prega di scoprirlo! Stai usando RAID 5? Questo è un grosso calo di prestazioni. RAID5 è lento per gli inserti e gli aggiornamenti. E 'anche quasi non funzionali nel corso di una ricostruzione se si perde un disco. Prestazioni molto molto lento. Cosa dovrei usare al posto? RAID 10 mirroring e striping, con dischi come molti come si può stare in una server o cabinet raid. Un database fa un sacco di disco I / O anche se si dispone di memoria sufficiente per contenere l'intero database. Perché? L'ordinamento richiede le righe riorganizzare, come fa gruppo, si unisce, e così via. Inoltre il log delle transazioni è il disco I / O, come pure!

Sei in esecuzione su EC2? In questo caso EBS è già fault tolerant e ridondanti. Quindi dare le prestazioni una spinta da striping sola in un certo numero di volumi EBS usare il raid md software Linux.

5. Tune parametri chiave

Questi parametri addizionali possono anche aiutare molto con le prestazioni.

innodb_flush_log_at_trx_commit = 2

Questo accelera inserisce e aggiornamenti drammaticamente con l'essere un po 'pigro di svuotamento del buffer log InnoDB. Si può fare più ricerca da soli, ma per la maggior parte degli ambienti questa impostazione è consigliata.

innodb_file_per_table

InnoDB è stato sviluppato come Oracle con il modello tablespace per la conservazione. A quanto pare gli sviluppatori del kernel non ha fatto un ottimo lavoro. Questo perché l'impostazione di default per usare un tablespace singolo si rivela essere un collo di bottiglia. Contesa per descrittori di file e così via. Questa impostazione rende innodb creare tabelle e file di dati di base per ogni tabella, proprio come fa MyISAM.


Corso SQL Server - Corso Hyper-V -Corso Windows Server

Certificazione Microsoft

Nessun commento:

Posta un commento

Nota. Solo i membri di questo blog possono postare un commento.