Ich habe mir gerade die https://dev.mysql.com/doc/refman/5.7/en/insert-delayed.html des MySQL-Dokuments angesehen
Ich hatte vor, ein INSERT DELAYED zu verwenden, aber ich sehe, dass dies veraltet ist.
Ich benötige diese Funktionalität weiterhin, um mit einem PHP-Code kompatibel zu sein, der einige sehr große Datenübertragungen verarbeitet. Ich bin ziemlich glücklich, mein PHP zu aktualisieren, aber ich habe keine Ahnung, wie ich jetzt die gleiche Funktionalität erreichen kann.
Wie würden wir das gleiche Ergebnis wie beim herkömmlichen INSERT DELAYED erzielen, wenn es veraltet ist?
mysql
insert
mysql-5.7
bulk-insert
TolMera
quelle
quelle
Antworten:
Laut MySQL 5.5. Dokumentation
Sie könnten ein Downgrade auf MySQL 5.5 durchführen (natürlich mache ich Witze). Ich habe drei Vorschläge. Bitte schauen Sie in sie.
VORSCHLAG # 1
Sie können MySQL Replication einrichten und Folgendes ausführen
VORSCHLAG # 2
Optimieren der InnoDB-Umgebung für schnellere Schreibvorgänge. Weitere Informationen finden Sie in meinen 4,5 Jahre alten Beiträgen. Wie verwende ich die Einfügungsverzögerung mit der InnoDB-Engine und verwende weniger Verbindungen für Einfügeanweisungen? und MySQL laden von infile stecken auf Festplatte warten
VORSCHLAG # 3
Passen Sie die Masseneinfügung an, um erweiterte Einfügungen zu verwenden, die eine feste Anzahl von Zeilen gleichzeitig laden, wie dies bei einem mysqldump der Fall ist.
quelle
Ich verstehe Ihre Frage so, dass Sie die Arbeit bis nach einem bestimmten Zeitraum verschieben müssen.
Unter diesen Umständen würde ich eine Warteschlange verwenden und meinen Warteschlangenjob für die erforderliche Zeit verschieben.
Als Beispiel https://laravel.com/docs/5.3/queues#delayed-dispatching
Obwohl aus den Dokumenten "Warteschlange zum Einfügen, wenn die Tabelle von keinem anderen Thread verwendet wird" nicht wie mit dieser Methode erreichbar ist, müssten Sie diese Funktionalität in Ihrem Job implementieren, wenn dies erforderlich ist.
quelle