sql >> Databáze >  >> RDS >> Mysql

doctrine2 - Jak zlepšit účinnost splachování?

Děláte to správně – je to jen pomalé, protože přidaná abstrakce ORM znamená, že nemůžete provádět takové optimalizace, jaké byste chtěli.

To znamená, že EntityManager se u tak velkých transakcí zpomaluje. Pokud je absolutně nepotřebujete všechny v jedné velké transakci, můžete pravděpodobně získat výkonnější kód vyprázdněním () a následným vymazáním () vymazáním EM každých 20-200 iterací vaší smyčky.

Pokud vám to nepřinese dostatečný výkon, jediná alternativa, která mě napadá, je vrátit se k vlastnímu kódu, který spouští vlastní SQL přímo proti vašemu DBMS.

Vím, že to není skvělá odpověď, ale alespoň vám mohu říct, že nejste blázen.

------ upravit ------

Z oficiálního článku Doctrine2 na Dávkové zpracování :

Také existuje významný rozdíl ve výkonu při použití vzdáleného vs místního databáze jako režie odesílání každého dotazu na vzdálený server je poměrně velká. Režie je mnohem nižší při použití lokální databáze díky transakcím a optimalizacím DB. (např. 70 s sníženo na 300 ms v případě příkladu v otázce)



  1. PHP strtotime() funguje špatně o 1 hodinu?

  2. mysql group_concat s počtem uvnitř?

  3. Postgres UNIQUE CONSTRAINT pro pole

  4. Escapování názvů sloupců podobných klíčovým slovům v Postgresu