sql >> Database >  >> RDS >> Mysql

MySQL-inserts optimaliseren om een ​​gegevensstroom te verwerken

Als uw gegevens niet onmiddellijk in de database hoeven te gaan, kunt u uw invoeggegevens ergens in de cache plaatsen en vervolgens een grotere invoegopdracht geven, bijvoorbeeld

invoegen in table_name (x, y, z) waarden (x1, y1, z1), (x2, y2, z2), ... (xN, yN, zN) bij dubbele update ...;

Voor de duidelijkheid, ik zou een lijst bijhouden van in behandeling zijnde inserts. In dit geval een lijst van (x,z,y) tripletten. Zodra uw lijst een bepaalde drempel (N) overschrijdt, genereert u de insert-instructie en geeft u deze uit.

Ik heb geen nauwkeurige timingcijfers voor u, maar deze verbeterde prestaties ongeveer 10 keer in vergelijking met het invoegen van elke rij afzonderlijk.

Ik heb ook niet met de waarde van N gespeeld, maar ik vond 1000 goed werken. Ik verwacht dat de optimale waarde wordt beïnvloed door hardware- en database-instellingen.

Ik hoop dat dit helpt (ik gebruik ook MyIsam).



  1. PDO Bind Params, afhankelijk van of ze in de query voorkomen

  2. Verschillende LISTAGG die zich in een subquery in de SELECT-lijst bevindt

  3. 3 manieren om het schema van een resultatenset in SQL Server te krijgen

  4. ORA-907 ontbreekt rechterhaakje bij gebruik van AS-trefwoord