Qual è la differenza tra i metodi di inserimento e perché uno è più veloce

6

Ho inserito 14.485 linee su MySQL come questo:

INSERT INTO 'bairros' ('id','cidade_id','descricao') VALUES (1,8891,'VILA PELICIARI');
INSERT INTO 'bairros' ('id','cidade_id','descricao') VALUES (2,8891,'VILA MARIANA');
...

Ci sono voluti circa 5 minuti.

Ho dovuto inserire in un'altra tabella 16.021 linee, stesso database, quindi per il test ho fatto questo:

INSERT INTO 'bairros' ('id','cidade_id','descricao') VALUES (1,8891,'VILA PELICIARI'),(2,8891,'VILA MARIANA');
...

Ci sono voluti solo pochi secondi.

Qual è la differenza, per il database, tra gli script? E perché uno è più veloce dell'altro?

    
posta Gerep 17.08.2012 - 21:21
fonte

3 risposte

9

È la differenza tra avere più istruzioni che devono essere salvate e salvate nel log delle transazioni, inserite negli indici corrispondenti (se presenti) e con una dichiarazione singola (anche se molto lunga) .

Tuttavia, questa è una congettura.

È possibile che durante il primo set di inserimenti, il server del database fosse sottoposto a un carico elevato e durante il secondo set non lo fosse.

Hai davvero bisogno di benchmark entrambi (più esecuzioni di ciascuna, resettando il DB ogni volta, prendendo le medie ecc ...).

    
risposta data 17.08.2012 - 21:25
fonte
1

Il primo è composto da molte query, il secondo è solo una query. Il DBMS può fare molte più ottimizzazioni quando ha tutti i dati con cui lavorare. Vale a dire, può fare una specie di aggiornamento di massa che è molto più veloce dell'aggiunta di singole righe alle tabelle. Evita anche il sovraccarico di eseguire la query ogni volta (ottimizzazione, registrazione, ecc.)

    
risposta data 17.08.2012 - 21:24
fonte
0

Nel primo blocco: ogni operazione di inserimento acquisisce il blocco e quindi, dopo averlo rilasciato, richiede tempo.

In secondo: una volta colpisci il database per risparmiare tempo.

    
risposta data 17.08.2012 - 21:47
fonte

Leggi altre domande sui tag