Se le query sono Inserti, nella pagina 7.2.19. Speed of INSERT Statements del manuale MySQL dà due informazioni interessanti, a seconda se si sta usando un motore di transactionnal o no:
Quando si utilizza un motore non transactionnal:
Per accelerare le operazioni INSERT che sono eseguite con più istruzioni per le tabelle non transazionali , bloccare le tabelle .
Questo benefici prestazioni poiché il buffer dell'indice è lavata disco solo volta, dopo che tutte le istruzioni INSERISCI hanno completato. Normalmente, ci sarebbe come molti buffer di indice, poiché ci sono le istruzioni INSERT . Il blocco esplicito delle istruzioni non è necessario se è possibile inserire tutte le righe con un singolo INSERT.
E, con un motore transactionnal:
Per ottenere inserimenti più rapidi per tabelle transazionali, è necessario utilizzare START TRANSACTION e COMMIT invece di LOCK TABLES.
Quindi immagino che usare le transazioni possa essere una buona idea - ma suppongo che potrebbe dipendere dal carico sul server, e se ci sono più usi usando la stessa tabella nello stesso momento, e tutto ciò ...
ci sono maggiori informazioni nella pagina ho collegato a, quindi non esitate a leggerlo ;-)
E, se si sta facendo update statements:
Un altro modo per ottenere aggiornamenti rapidi è quello di aggiornare il ritardo di e quindi eseguire più aggiornamenti di seguito. L'esecuzione di più aggiornamenti insieme è molto più rapida di eseguendo uno alla volta se si blocca la tabella .
Quindi, immagino che si possa dire lo stesso che per gli inserti.
BTW: per essere sicuri, si può provare entrambe le soluzioni, li benchmarking con microtime
, sul lato PHP, per esempio ;-)
Grazie mille per l'informazione, credo che dovrò solo provare e punto di riferimento. – jeroen
Suppongo di sì ^^ Facci sapere i risultati ;-) Potrebbe interessare altre persone! E, btw: un'altra soluzione sarebbe quella di utilizzare una query di inserimento per fare più inserimenti contemporaneamente, riducendo il numero totale di query - un po 'più difficile da codificare, ma ho visto grandi miglioramenti con questo, poiché significa meno chiama da un server all'altro. –
Sì, ridurre il numero di query sarebbe la soluzione migliore, ma come ho già detto a James Black, non l'ho mai provato con INSERT ON DUPLICATE KEY UPDATE, non so nemmeno se è possibile. – jeroen