2012-06-12 13 views
6

Qualcuno può spiegarmi perché esiste una notevole differenza di prestazioni tra MySQL e SQL Server per questa semplice istruzione select?MySQL vs SQL Server 2008 R2 prestazioni di query di selezione semplice

SELECT email from Users WHERE id=1 

Attualmente il database ha una sola tabella con 3 utenti. Il tempo MySQL è in media 0.0003 mentre SQL Server è 0.05. È normale o il server MSSQL non è configurato correttamente?

EDIT:
Entrambe le tabelle hanno la stessa struttura, chiave primaria è impostata id, tipo di motore è MySQL InnoDB.
Ho provato la query con WITH(NOLOCK) ma il risultato è lo stesso.

+1

I tavoli hanno una struttura simile? Entrambi hanno un indice (PRIMARY KEY) su 'id'? –

+0

Sì, la struttura della tabella è la stessa, PK è impostato su 'id' – matino

+0

Quale tipo di motore stai usando per la tabella MySQL? – Namphibian

risposta

2

I server hanno lo stesso livello di alimentazione? Anche l'hardware fa la differenza. E ci sono all'incirca lo stesso numero di persone che accedono al db allo stesso tempo? Ci sono altre applicazioni che utilizzano lo stesso hardware (i database in generale non dovrebbero condividere server con altre applicazioni).

Personalmente non mi preoccuperei di questo tipo di differenza. Se vuoi vedere quale sta andando meglio, aggiungi milioni di record al database e poi prova le query. Il database in generale funziona bene con query semplici su tabelle minuscole, anche progettate male o impostate in modo errato. Per sapere se si verificherà un problema di prestazioni è necessario testare con grandi quantità di dati e molti utenti simultanei su hardware simile a quello che si avrà in prod.

+0

Il problema era che il server MySQL era in esecuzione su localhost e MSSQL su un altro host e il tempo di benchmarking misurato includeva la latenza di rete ... Dato che eri il più vicino alla tua risposta, lo accetto ma vorrei ringraziare gli altri per il loro contributo:) E sì, stavo confrontando le piattaforme per un nuovo progetto e ho provato prima con una query di base ... – matino

1

Il problema con la diagnosi di query a basso costo è che il costo fisso può sommergere i costi variabili. Non che io sia un MS-Fanboy, ma ho più familiarità con MS-SQL, quindi parlerò principalmente di questo.

MS-SQL ha probabilmente un maggiore overhead per l'ottimizzazione e l'analisi delle query, che aggiunge un costo fisso alla query quando si decide se utilizzare l'indice, guardando le statistiche, ecc. MS-SQL registra anche molte cose sul piano di query quando viene eseguito e memorizza molti dati per l'ottimizzazione futura che aggiunge overhead

Questo sarebbe tutto utile quando la query richiede molto tempo, ma quando si analizza una singola query, sembra mostrare un risultato più lento.

0

Ci sono diversi fattori che potrebbero influire su tale benchmark, ma il più significativo è probabilmente il modo MySQL caches queries.

Quando si esegue una query, MySQL memorizzerà nella cache il testo della query e il risultato. Quando la stessa query viene emessa nuovamente, restituirà semplicemente il risultato dalla cache e non eseguirà effettivamente la query.

Un altro fattore importante è la metrica di SQL Server è il tempo trascorso totale, non solo il tempo necessario per cercare quel record, o estrarlo dalla cache. In SQL Server, attivando SET STATISTICS TIME ON si analizzerà un po 'di più ma non si sta ancora confrontando come per esempio.

Infine, non sono sicuro di quale sia l'obiettivo di questo benchmark poiché si tratta di una query eccessivamente semplicistica. Stai confrontando le piattaforme per un nuovo progetto? Quali sono i tuoi criteri per la selezione?

Problemi correlati