Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony] Jak przyspieszyć dodawanie rekordów do bazy?
SnakeEater
post 7.04.2010, 12:53:23
Post #1





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 12.03.2010

Ostrzeżenie: (0%)
-----


Mam kolejny, taki o to problem.
  1. public function generateTokens()
  2. {
  3. for($i = 0; $i < $this->tokensToGen; $i++)
  4. {
  5. $vt = new Token();
  6. $vt->setQuestion($this);
  7. $vt->save();
  8. }
  9. }


Tokeny są generowane w sporej ilości (po około 100). Jak można przyśpieszyć dodawanie tych rekordów? jeżeli stworzę obiekty, ale zakomentuję linijkę $vt->save(); to całość działa super szybko, więc to dodawanie rekordów niestety długo trwa. Czy można jakoś przyspieszyć dodawanie tych rekordów do bazy? Czy są one dodawane w tym samym połączeniu? Czy może to być powód tak powolnego dodawania?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
phpion
post 7.04.2010, 13:44:35
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Utwórz sobie klasę do tworzenia tzw. multi-insertów czyli zamiast:
  1. INSERT INTO tab (id) VALUES (1);
  2. INSERT INTO tab (id) VALUES (2);
  3. INSERT INTO tab (id) VALUES (3);

wykonującą:
  1. INSERT INTO tab (id) VALUES (1), (2), (3);

Na stronie Doctrine swego czasu czytałem, że nie Doctrine takiej możliwości nie ma i mieć nie będzie bo nie każdy standard przyjmuje takie polecenia (głupie tłumaczenie moim zdaniem - jeśli dana baza tego nie wspiera to po prostu nie byłoby użyte). Z własnego doświadczenia powiem Ci, że takie inserty dużo dadzą. Podobne rozwiązanie zastosowałem przy importowaniu kategorii z Allegro (ok. 25 000) i wrzucanie ich w paczkach (np. po 50) jest znacznie szybsze niż wrzucanie ich pojedynczo.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 16:07