Mysql
 sql >> база данни >  >> RDS >> Mysql

doctrine2 - Как да подобрим ефективността на промиването?

Правите го правилно – просто е бавно, защото добавената абстракция на ORM означава, че не можете да правите видовете оптимизации, които искате.

Въпреки това EntityManager се забавя при толкова големи транзакции. Ако не ви трябват всички в една голяма транзакция, вероятно можете да получите по-ефективен код чрез flush()ing и след това изчистване() на EM на всеки 20-200 повторения на вашия цикъл.

Ако това не ви осигури достатъчно производителност, единствената алтернатива, за която се сещам, е да се върнете към персонализиран код, който изпълнява персонализиран SQL директно срещу вашата СУБД.

Знам, че това не е страхотен отговор, но поне мога да ти кажа, че не си луд.

------ редактиране ------

От официалната статия на Doctrine2 за Пакетна обработка :

Също така има значителна разлика в производителността при използване на отдалечено спрямо локално база данни, тъй като режийните разходи за изпращане на всяка заявка до отдалечен сървър са доста големи. Разходите са много по-ниски при използване на локална база данни благодарение на транзакции и оптимизации на DB. (напр. 70 секунди намалено до 300 мс в случая на примера във въпроса)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL ON UPDATE CURRENT_TIMESTAMP не се актуализира

  2. Хибридни работни натоварвания на база данни OLTP/Analytics в клъстер Galera, използващи асинхронни подчинени устройства

  3. MySQL:Колко място използва полето NULL?

  4. Има ли начин за поддържане на db връзка (pk/fk) в следния сценарий

  5. Да поставите MySQL базата данни под контрол на версиите?