È possibile inserire più entità in DB con una singola query? Quando uso un esempio da here posso vedere diverse query nel Debugger WebDoctrine2 Inserto batch
AGGIORNAMENTO 23.08.2012
ho trovato i seguenti link correlati. Spero che vi aiuterà a qualcuno per capire un elaborazione batch:
- http://www.doctrine-project.org/blog/doctrine2-batch-processing.html
- doctrine2 - How to improve flush efficiency?
- Doctrine 2: weird behavior while batch processing inserts of entities that reference other entities
Le cose principali:
Alcune persone sembrano chiedersi perché Doctrine non usa i multi-inserti (inserisci in (...) valori (...), (...), (...), ...
Prima di tutto, questa sintassi è supportata solo su versioni mysql e più recenti di postgresql. In secondo luogo, non esiste un modo semplice per accedere a tutti gli identificatori generati in tale multi-insert quando si utilizza AUTO_INCREMENT o SERIAL e un ORM ha bisogno degli identificatori per la gestione degli oggetti dell'identità . Infine, inserire le prestazioni è raramente il collo di bottiglia di un ORM. Gli inserti normali sono più che veloci per la maggior parte delle situazioni e se vuoi veramente fare inserimenti veloci, allora un multi-insert non è il modo migliore, cioè Postgres COPY o Mysql LOAD DATA INFILE sono diversi ordini di grandezza più veloce .
Questi sono i motivi per cui non vale la pena di implementare un'astrazione che esegue multi-inserimenti su mysql e postgresql in un ORM. Spero che chiarisca alcuni punti interrogativi.
Grazie per la risposta, ma non sono sicuro che 'solo una query al database per call' "a filo", perché posso vedere un tempo di esecuzione per ogni istruzione INSERT . Significa che ogni istruzione INSERT è una query su DB. Ho aggiornato la mia domanda – Mikhail