2011-09-21 14 views
6

Questa è una domanda solo per il gusto di chiedere:La dimensione della tabella influisce sulle prestazioni INSERT?

Blocco tutto intermedio ad argomenti avanzati o tecniche (indici cluster, inserimenti di massa, trucchi di esportazione/importazione, ecc), non un INSERT richiedere più tempo del grande tavolo cresce?

Questo presuppone che ci sia solo una colonna auto-int, ID [cioè, tutte le nuove righe sono INSERITE in basso, dove nessuna memoria deve essere mischiata per contenere un posizionamento di riga specifico].


Un collegamento a un buon "benchmarking MySQL" sarebbe utile. Ho preso Oracle a scuola e finora la conoscenza non mi ha fatto molto bene su SO.

Grazie a tutti.

risposta

5

La mia esperienza è stata che le prestazioni si riducono se l'indice del set di dati non si adatta più alla memoria. Una volta che ciò accade, i controlli per gli indici duplicati dovranno colpire il disco e rallenteranno considerevolmente. Crea una tabella con tutti i dati che pensi di dover affrontare e fai alcuni test e tuning. È davvero il modo migliore per sapere in che cosa ti imbatterai.

1

Posso solo condividere la mia esperienza. spero che sia d'aiuto.

Sto inserendo un sacco di righe alla volta, su un enorme database (diversi milioni di voci). Ho uno script che stampa il tempo prima e dopo che eseguo gli inserti. beh, non ho visto alcun calo nelle prestazioni.

Spero che ti abbia dato un'idea, ma sono su sqlite non su mysql.

+0

Ti fornirò la risposta migliore se mi mostri una versione generica dello script di benchmarking delle prestazioni con risultati di output di esempio. Grazie. – Droogans

+0

non è uno script di benchmarking, come ho detto prima di stampare le volte prima e dopo le query, quindi vedo quanto tempo impiegano. Io uso uno script python e questa è la dichiarazione per farlo: print datetime.datetime.now(). Strftime ("% H:% M:% S") – Danny

6

Sì, ma non è la dimensione del tavolo in sé, ma la dimensione degli indici che contano. Una volta che la riscrittura dell'indice inizia a battere il disco, noterai un rallentamento. Una tabella senza indici (ovviamente, non avresti mai una cosa del genere nel tuo database) non dovrebbe vedere alcun degrado. Una tabella con indici minimi compatti può raggiungere dimensioni molto grandi senza subire degrado. Una tabella con molti indici di grandi dimensioni inizierà a peggiorare prima.

+0

Cerca su google "riscrittura dell'indice" ora ... grazie. – Droogans

1

La velocità non è influenzata fintanto che MySQL può aggiornare l'indice completo in memoria, quando inizia a scambiare l'indice diventa più lento. Questo è ciò che accade se ricostruisci istantaneamente un indice enorme usando ALTER TABLE.

Problemi correlati