L'inserto $this->db->insert_batch();
viene inserito con una connessione a una tabella oppure inserisce ciascuna riga separatamente durante l'overhead delle connessioni di apertura?Codeigniter prestazioni inserto lotto
risposta
Dalla documentazione di codeigniter insert_batch
fare questo tipo di cose
$data = array(
array(
'title' => 'My title' ,
'name' => 'My Name' ,
'date' => 'My date'
),
array(
'title' => 'Another title' ,
'name' => 'Another Name' ,
'date' => 'Another date'
)
);
$this->db->insert_batch('mytable', $data);
// Produces: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date'), ('Another title', 'Another name', 'Another date')
Quindi sarebbe solo produrre una query con tutti i valori, normalmente in questo modo più veloce quindi fare inserti separati.
Per rispondere alla tua domanda: utilizza una connessione.
In realtà la risposta @RageZ basata sul documento non è sempre corretta. Perché è totalmente basato sul numero di elementi che vuoi inserire. Quando si guarda il codice codeigniter insert_batch()
, si può notare che tagliano gli inserimenti batch in 100 elementi.
// Batch this baby (Around line number 1077 in codeigniter 2.x)
for ($i = 0, $total = count($this->ar_set); $i < $total; $i = $i + 100)
{
$sql = $this->_insert_batch($this->_protect_identifiers($table, TRUE, NULL, FALSE), $this->ar_keys, array_slice($this->ar_set, $i, 100));
//echo $sql;
$this->query($sql);
}
significa che i valori saranno fetta di inserti 100s e se si tolgono i commenti alla parte echo $sql
si può vedere che cosa è simile a quando si utilizza inserto in batch per 101 articoli. Pertanto, in base alle preferenze di connessione, è possibile che sia necessaria più di una connessione per l'inserimento in db.
@ La risposta di Ragez potrebbe essere stata vera quando è stata posta questa domanda, penso che stavo usando CI 1.xx –
@amiawizard Questo può essere giusto e l'unico modo per assicurarsi è di guardare il codice. Come so che non hanno cambiato i documenti di questa parte da 1.x ma è possibile che il codice sia cambiato da 1.x a 2.x – sobhan
@amiawizard Ho controllato 1.7.1 e 1.7.3 e non c'è alcuna funzione insert_batch in loro e sembra che questa funzione sia stata introdotta nella versione 2.x https://github.com/EllisLab/CodeIgniter/blob/develop/user_guide_src/source/changelog.rst – sobhan
- 1. Come creare Codeigniter lotto inserto di matrice
- 2. CodeIgniter lotto inserire in colonne fisse
- 3. UPDATE rispetto alle prestazioni INSERTO
- 4. Aggiornamento lotto Meteor
- 5. Lotto analizza ogni parametro
- 6. Doctrine2 Inserto batch
- 7. Primavera lotto: Tasklet con multi esecutore filettato ha pessime prestazioni legate alla Throttling algoritmo
- 8. lotto: Rimuovere estensione del file
- 9. lotto di primavera con annotazione
- 10. Recupero ID seriale da lotto inserito righe in PostgreSQL
- 11. Django - ultimo inserto ID
- 12. delle identità inserto
- 13. Java Swing JTextField inserto
- 14. mysqli ultimo ID inserto
- 15. MATLAB valore inserto tra
- 16. Batch inserto in Yii
- 17. Un UPDATE diventa implicito INSERTO
- 18. PostgreSQL: Sub-select inserto all'interno
- 19. inserto combinano (valore e selezionare)
- 20. BoxShadow: inserto sul tag img
- 21. SQL Server - Sostanze errore inserto
- 22. mysql inserto in ritardo timestamp
- 23. MySql INSERTO vs PHP file_put_contents
- 24. Inserto batch usando groovy Sql?
- 25. Lotto elimina un numero elevato di file
- 26. utilizzando facebook richiesta lotto API JavaScript
- 27. decomprimere il file .gz nel lotto
- 28. Lotto di ridenominazione di file con Bash
- 29. Apache Nutch 2.1 ID lotto diverso (null)
- 30. if/then/else in Windows lotto
La connessione al database deve essere sempre una, sia batch che non. – Usman