Le prestazioni della CPU sono rilevanti per un server di database?


33

Questa è una domanda puramente teorica. Diciamo che ho un'applicazione distribuita su più server.

  1. Un bilanciamento del carico,
  2. Server applicazioni multipli / scalabili
  3. Un (singolo) server di database (per il momento)

Nelle prime due parti, so cosa cercare. Ma per quanto riguarda il server di database? Che tipo di hardware dovrei cercare?

  • La frequenza della CPU è rilevante per un server di database?
  • Le CPU multi core sono rilevanti?
  • La RAM è più importante della CPU?

PS: Supponiamo che il database scelto sia MySQL o PostgreSQL.


Bene, deve averne uno.
Preoccupato di

Risposte:


29

Per PostgreSQL, la potenza della CPU può essere molto rilevante, specialmente se una percentuale abbastanza elevata del set di lavoro attivo dei dati si adatta alla RAM. La maggior parte dei database con cui ho lavorato ha avuto la potenza della CPU come principale collo di bottiglia per la maggior parte del tempo. (Ho appena controllato vmstat su un server che ospita siti Web con milioni di hit al giorno che ospitano oltre 5 TB di spazio del database e non ho mai visto più del 2% di tempo di attesa del disco, ma ho visto un picco del 12% del tempo della CPU dell'utente.)

Poiché PostgreSQL è basato su un processo, ogni singolo processo può essere eseguito solo come un core, ma in un mix come quello che abbiamo sul server sopra menzionato, con un volume elevato di piccole richieste, la CPU totale su tutti i core è la più importante. Per la stessa potenza totale della CPU, PostgreSQL farà generalmente meglio con meno core più veloci rispetto a molti core più lenti.

Fino al punto in cui viene memorizzata nella cache un'alta percentuale del set di dati attivi, l'aggiunta di RAM mostrerà in genere un aumento del valore aggiunto rispetto all'aggiunta di core. Dopo aver ottenuto una cache sufficiente, il vantaggio di RAM aggiuntiva diminuisce e è meglio aumentare la potenza della CPU.

Per maggiori dettagli su questo argomento per quanto riguarda PostgreSQL, non credo che ci sia una fonte migliore di PostgreSQL 9.0 High Performance di Greg Smith . (Informativa completa, sono stato un revisore tecnico del libro, ma non ottengo alcun vantaggio finanziario in base alle vendite.)


Ehi, ho il libro. C'è qualche particolare pagina, sezione o capitolo a cui stai riferendo ??? (BTW +1 per la prospettiva PostgreSQL)
RolandoMySQLDBA

Grazie per le informazioni su PostgreSQL. Controllerò il libro. ;)
Zenklys,

1
Roba buona dalle pagine 21-23
RolandoMySQLDBA

Vedo la saggezza del tuo secondo paragrafo rispetto alle pagine 21-23.
RolandoMySQLDBA,

23

Dal punto di vista strettamente MySQL, questa è una domanda molto carica

Frequenza della CPU rilevante per un server di database?

Mentre CPU e scheda madre più veloci sono eccezionali, altri ostacoli possono essere di ostacolo. Tali strozzature includono:

  • I / O del disco
  • Numero massimo di connessioni
  • Latenza di rete
  • Prestazioni della query per connessione

Ogni piccolo vantaggio aiuta, ma devo dire di no perché la velocità della CPU, di per sé, non migliora i colli di bottiglia di cui sopra. Dopo tutto, a che serve un RaceCar di Formula 1 che indossa un paracadute aperto o con un gorilla da 800 libbre al volante?

Le CPU multi core sono rilevanti?

Dipende interamente dalla versione di MySQL in esecuzione. MySQL 5.1 InnoDB Plugin, MySQL 5.5 e Percona Server XtraDB hanno tutti impostazioni che DEVI CONFIGURARE CORRETTAMENTE per ottenere InnoDB per accedere a tutti i core. Il vero incentivo per farlo deriva dal fatto che alcune versioni precedenti di MySQL LEFT UNCONFIGURED sono più veloci delle versioni più recenti, come ho discusso nei miei post precedenti:

Pertanto, se non sei disposto a configurare InnoDB per l'accesso a tutte le CPU, avere più core non ti compra assolutamente nulla .

La RAM è più importante della CPU?

Oh sì, davvero. La configurazione della memoria per MySQL implica l'installazione

Richiedere troppo o troppo poco di qualsiasi combinazione di queste cose e MySQL torna a morderti. Una CPU più veloce con MySQL non correttamente configurata per la RAM rende MySQL più veloce.


2
Bella risposta. Controllerò tutti quei link, grazie.
Zenklys,

6
  • No
  • No

In termini semplici, sono necessarie prestazioni RAM e I / O (latenza + velocità di lettura + velocità di scrittura) per i database.

La scelta di 4 o 6 core o 2,5 GHz contro 3 GHz non è davvero rilevante (suppongo che non si debba scegliere tra un P3-450 con 32 GB di RAM o l'ultimo Xeon con 1 GB di RAM).

Se sei associato alla CPU, hai altri problemi (design scadente, indici scadenti, scambio, server non dedicato ecc.)


Grazie per la risposta. Gli SSD sono una buona scelta allora? Oltre la potenza della CPU?
Zenklys,

@Zenklys: difficile da dire. Che dimensione del database hai? Scrivi volume? Leggi il caricamento? OLTP o OLAP? ecc.
gbn,

20-30 gb massimo. Rapporto lettura / scrittura da 10 a 1, solo piccoli dati, OLTP.
Zenklys,

2
@Zenklys: in tal caso, non importa. Basta acquistare RAM soprattutto per MySQL, in modo che la maggior parte dei dati sia memorizzata nella cache
gbn,

3
Non sono sicuro del motivo per cui questa è la risposta accettata. È semplicistico in quanto non considera l'applicazione, il carico di lavoro o le dimensioni del set di dati. @kgrittn ha dato una risposta migliore fondata sull'esperienza del mondo reale e una migliore comprensione della teoria dell'operazione per Postgres.
dbenhur,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.