sql >> Databasteknik >  >> RDS >> Mysql

doktrin 2 - Hur kan man förbättra spolningseffektiviteten?

Du gör det rätt -- det är bara långsamt, eftersom den extra abstraktionen av ORM innebär att du inte kan göra de typer av optimeringar du vill.

Som sagt, EntityManager blir långsam på så stora transaktioner. Om du inte absolut behöver dem alla i en stor transaktion, kan du förmodligen få mer presterande kod genom att flush()ing och sedan rensa() av ​​EM var 20-200:e iteration av din loop.

Om det inte ger dig tillräckligt med prestanda är det enda alternativet jag kan tänka mig att återgå till anpassad kod som kör anpassad SQL direkt mot ditt DBMS.

Jag vet att detta inte är ett bra svar, men jag kan åtminstone säga att du inte är galen.

------ redigera ------

Från den officiella Doctrine2-artikeln om Satsbearbetning :

Det finns också en betydande skillnad i prestanda när du använder fjärr vs lokal databas som overhead för att skicka varje fråga till fjärrserver är ganska stor. Omkostnaderna är mycket lägre när du använder lokal databas tack vare transaktioner och DB-optimeringar. (t.ex. 70 sek sänkt till 300 ms i fallet med exemplet i frågan)



  1. Hämta data från sql databse i flutter datewise?

  2. MySQL-servern får slut på minne eller startar inte

  3. SQL Server Pre-Login Handshake Acknowledgement Error

  4. Läs och importera XLSX (Excel)-fil i Oracle