Czy wstawia się $this->db->insert_batch();
z 1 połączeniem stołowym, czy też wstawia każdy rząd osobno ponosząc koszty połączeń otwierania?Wydajność wsadowego wsadu kodowania
Odpowiedz
Z dokumentacji codeigniter insert_batch
zrobić tego rodzaju rzeczy
$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')
Tak byłoby produkować tylko jedno zapytanie ze wszystkimi wartościami, zwykle w ten sposób szybciej niż robi osobne wkładki.
Aby odpowiedzieć na pytanie: Używa jednego połączenia.
Właściwie odpowiedź @RageZ na podstawie dokumentu nie zawsze jest poprawna. Ponieważ jest całkowicie oparty na liczbie elementów, które chcesz wstawić. Patrząc na kod codeigniter insert_batch()
widać, że segmentują wsadowe inserty na 100 pozycji.
// 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);
}
Oznacza to, że wartości będą plaster do 100s wkładkami i jeśli odkomentuj echo $sql
część można zobaczyć, co to wyglądać, gdy używasz wkładki partię do 101 pozycji. Tak więc w zależności od preferencji połączenia może istnieć więcej niż jedno połączenie potrzebne do wstawienia w db.
@ Odpowiedź Rageza mogła być prawdziwa, gdy zadawano to pytanie, myślę, że używałam CI 1.xx –
@amiawizard To może być słuszne i jedynym sposobem na zapewnienie jest spojrzenie na kod. Jak wiem, nie zmienili dokumentów tej części z 1.x, ale możliwe, że kod zmienił się z 1.x na 2.x – sobhan
@amiawizard Sprawdziłem 1.7.1 i 1.7.3 i nie ma funkcji insert_batch w i wydaje się, że ta funkcja została wprowadzona w wersji 2.x https://github.com/EllisLab/CodeIgniter/blob/develop/user_guide_src/source/changelog.rst – sobhan
- 1. Wydajność wsadu wsadowego JDBC
- 2. Jak uzyskać wygenerowane klucze z wsadu wsadowego JDBC w Oracle?
- 3. Wydajność przy korzystaniu z trybu wsadowego Qt/MySQL
- 4. elasticsearch java wielkość wsadu zbiorczego
- 5. Codeigniter 2.1 - identyfikatory zwrotne po dodaniu wsadu
- 6. Jak zatrzymać wczytanie pliku wsadowego Windows Batch?
- 7. Zmiana stylu kodowania ze względu na wydajność GC Androida, jak daleko jest za daleko?
- 8. Wpis współzależności JPA "Po wydaniu wsadu nadal zawierał wyciągi JDBC"
- 9. Odczytywanie linii z pustymi polami z pliku przy użyciu wsadu
- 10. Jak usunąć wszystkie pliki w katalogu przy użyciu wsadu?
- 11. Uruchamianie prowizji z pliku wsadowego
- 12. Dodawanie flag do skryptu wsadowego
- 13. Wstawianie wsadowego SQL w .NET
- 14. Czy Kafka ma konsumenta wsadowego?
- 15. wysyłanie wiadomości z pliku wsadowego
- 16. Przykład opóźnionego rozszerzenia pliku wsadowego
- 17. podprocedura skryptu wsadowego: przekazywanie argumentów
- 18. Styl kodowania: Jak poprawić styl kodowania i standardy w firmie
- 19. Zrozumienie wydajność Sinon.js w(), wydajność()() i callsArg
- 20. Wydajność przydzielania pamięci Haskell FFI Wydajność
- 21. Jquery dane kodowania ajax
- 22. Naprawianie uszkodzonego kodowania UTF8
- 23. Raw kodowania zmiennoprzecinkowa
- 24. DBF - kodowania CP1250
- 25. GWT: Charakter umlauty kodowania
- 26. Normy kodowania Objective-C?
- 27. obiektywne wytyczne c kodowania
- 28. Algorytm wykrywania kodowania znaków
- 29. Apache mod_proxy URL kodowania
- 30. ścieżka kodowania obrazu
Połączenie z bazą danych powinno być zawsze jedno, bez względu na to, czy jest to partia, czy nie. – Usman