Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony] Jak przyspieszyć dodawanie rekordów do bazy?
SnakeEater
post
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
destroyerr
post
Post #2





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

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


Są dodawane w tym samym połączeniu. Może działać powoli ze względu na budowanie zapytania lub ze względu na powolną bazę danych.
Samo wstawianie do bazy można przyspieszyć korzystając z transakcji.
Budowanie zapytania można też przyspieszyć. Potrzebujesz dobrać się do raz stworzonego zapytania i samemu bindować do niego.

Napisz jeszcze co oznacza, że długo trwa. Wypróbuj też działanie na serwerze produkcyjnym. Nie wiem dokładnie z czego to wynika ale w moim przypadku różnice w szybkości działania potrafią być ogromne.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 22.10.2025 - 01:20