1b.app
Link kopiert -

Bewerten Sie die Verfeinerung der Aktion

Nun wird der Mechanismus zur Auswahl aktualisierter Daten in der Aktion „Produkte aus CMS ExtraParts importieren“ durch eine Anfrage ausgeführt:
„SELECT * FROM `price` WHERE `post_date` >= '{$postDateFrom}' ORDER BY `price`.`id` ASC“
Dabei verwendet die Variable „{$postDateFrom}“ die Zeit, zu der die Aktion zuletzt ausgeführt wurde.
Das Problem besteht darin, dass, wenn plötzlich eine große Menge aktualisierter Daten in „Preis“ erscheint (z. B. 4,6 Millionen), die Aktion eine große Datenmenge (ca. 12 GB) erfordert, deren Verarbeitung Stunden dauert (ca. 5 Stunden). ), was zu Zeitüberschreitungen oder Fehlern bei exportierten Produkten oder anderen Fehlern beim Datenexport führt ...
Es ist notwendig, den Mechanismus zur Stichprobenerhebung aktualisierter Daten zu verbessern:
1. Berücksichtigen Sie eine begrenzte Datenmenge (z. B. 100.000 in den Einstellungen angegebene Zeilen) für den Start einer Aktion, verarbeiten Sie dieses Array und stoppen Sie die Aktion.
Verarbeiten Sie beim nächsten Start der Aktion die nächste Menge aktualisierter Daten usw.
2. Wenn zwei oder mehr Exportaktionen gleichzeitig (parallel) arbeiten, müssen die Daten zwischen ihnen verteilt werden, damit nicht jede der Aktionen dieselben Daten verarbeitet.
Die ursprüngliche Frage ist in der Version verfügbar: ua

Antworten:

Bitte klären Sie: Liegt das Problem darin, dass alles lange dauert, bis es funktioniert, oder belastet es den Server? Wenn es etwas ist, das schon lange läuft, können wir Daten in parallele Streams wie 30-40 strömen, wenn es etwas ist, das den Server belastet, dann ist das eine andere Frage.

Oleksandr Grigorowitsch schrieb:
Brüder in der Stirn sind umgeben (zum Beispiel wird es in den angepassten 100.000 Reihen angezeigt)

Nun, wenn Sie 100.000 erreichen, werden Sie den aktuellen Stand nie erreichen.
22.04.2024, 13:28
Originalkommentar zur Version verfügbar: ru

Vielleicht ist es auch möglich, das Verladen von Waren so zu beschleunigen, dass es bei einem solchen Volumen um das X-fache geht
22.04.2024, 13:29
Originalkommentar zur Version verfügbar: ru

Ja, das Problem ist, dass es sehr lange dauert, und je länger dieser Prozess dauert, desto höher ist die Wahrscheinlichkeit, dass der Export scheitert.
Da genügend Serverressourcen vorhanden sind, habe ich den Export in Teilen und in parallelen Aktionen vorgeschlagen
22.04.2024, 13:56
Originalkommentar zur Version verfügbar: ru


Oleksandr Hryhorovych schrieb:
desto höher ist die Wahrscheinlichkeit eines Exportausfalls

Welche Fehler beobachten Sie nun in solchen Situationen?
22.04.2024, 13:58
Originalkommentar zur Version verfügbar: ua


Pflegeabteilung
OneBox Production schrieb:

Alexander Grigorjewitsch schrieb:
desto höher ist die Wahrscheinlichkeit eines Exportausfalls

Ja, was für Versäumnisse sehen Sie derzeit in solchen Situationen?

Wenn der Export sehr lange dauert, werden meistens Marken für Produkte gelöscht oder neue ohne Marke erstellt (die Variable $brandid gibt einen leeren Wert zurück ...) – das führt zu großen Problemen.
22.04.2024, 14:11
Originalkommentar zur Version verfügbar: ru

Wenn dies das einzige Problem ist, wird es innerhalb einer Stunde Überarbeitung behoben.
22.04.2024, 14:26
Originalkommentar zur Version verfügbar: ru

Wenn es eine Lösung zur Beschleunigung des Exports gibt, die es Ihnen ermöglicht, eine solche Menge erfolgreich abzufüllen und gleichzeitig den Markenverlust zu beseitigen, dann stellen Sie eine Rechnung aus.
22.04.2024, 14:34
Originalkommentar zur Version verfügbar: ru

Mit dieser Lösung können Sie sich die gesamte Liste der Marken merken und im Cache nach ihnen suchen. Dies beschleunigt auch den Import ein wenig, aber ich glaube nicht, dass er global sein wird. Versuchen wir es, ich stelle eine Rechnung aus
22.04.2024, 15:30
Originalkommentar zur Version verfügbar: ru


Pflegeabteilung
OneBox Production schrieb:
Mit dieser Lösung können Sie sich die gesamte Markenliste merken und im Cache nach ihnen suchen. Dies beschleunigt auch den Import ein wenig, aber ich glaube nicht, dass er global sein wird. Versuchen wir es, ich stelle eine Rechnung aus

Die Entscheidung, eine Marke von Cash zu übernehmen, wird nicht ausreichen, habe ich überprüft.
Ich habe die Methode zum Einbinden einer Marke in die Klasse vollständig deaktiviert; die Aktualisierung beschleunigt, aber nicht ausreichend.
Ist es möglich, das Gießen in mehrere Threads zu implementieren?
22.04.2024, 16:08
Originalkommentar zur Version verfügbar: ru

Die Geschwindigkeit ist mir egal, wenn am Ende alles normal überflutet wird. Wenn wir in mehrere Threads strömen, können wir die externe Datenbank und unsere eigene stark belasten.
22.04.2024, 16:32
Originalkommentar zur Version verfügbar: ru

Wir können es auch anders machen, ich mache es so, dass Ihr Download von 4 Datensätzen zum Beispiel eine Stunde funktioniert, danach zahlen Sie entsprechend der aufgewendeten Zeit.
22.04.2024, 16:33
Originalkommentar zur Version verfügbar: ru


Pflegeabteilung
OneBox Production schrieb:
Wir können es auch anders machen, ich mache es so, dass Ihr Download von 4 Datensätzen beispielsweise eine Stunde dauert, danach zahlen Sie entsprechend der aufgewendeten Zeit.

Ich stimme zu, wir werden noch länger raten, Sie werden es im Laufe der Zeit herausfinden.
Machen Sie es, ich zahle nachträglich.
22.04.2024, 16:38
Originalkommentar zur Version verfügbar: ru

Bitte beteiligen Sie sich am Dialog. Wenn Sie etwas zu sagen haben - schreiben Sie bitte einen Kommentar. Für die Teilnahme benötigen Sie ein Mobiltelefon und einen SMS-Code zur Identifizierung. Melden Sie sich an und schreiben Sie einen Kommentar