Forking mehrere Prozesse in PHP (Supervisor). Jeder erstellt eine Verbindung zur selben Mysql-DB und führt dieselbe SELECT-Abfrage parallel aus (Gearman). Wenn ich die Anzahl der Prozesse (d. H. Verbindungen mit gleicher Zeit) vergrößern und mehr parallele Abfragen führen, wird die Sendezeit in SHOW PROCESSLIST in jedem Prozess erhöht. Es ist eine einfache Auswahl mit Transaktionsebene READ UNCOMMITED. Ist es ein mysql config Problem? Oder SELECT-Abfrage verursachte Tabellensperren? Oder vielleicht Full Scan?Erhöhen Sie die Verbindungen zu mysql verursachen steigende Sendezeit in jeder Abfrage für die gleiche Abfrage
Server: Ubuntu 16.04.2 LTS. 1 CPU-Kern. MySQL 5.7.17. innodb_buffer_pool_size 12 GB
Es könnte sich um Netzwerklatenz, Tabellenstruktur, Indizes und Abfrageeffizienz handeln. Daher sollten Sie mehr Details zu Ihrem Schema und Ihrer Abfrage angeben. – abeyaz
Es verwendet 32 Tabellen einschließlich Self Joins (13 eindeutige Tabellen), die in 3 Sekunden in einer Verbindung ausgeführt werden, aber in zwei parallelen dauert es 6 Sekunden in jedem Prozess und so weiter, wie ihre in der Warteschlange ausführt. Query ist groß genug mit vielen Joins, aber ohne Aggregation und Sortierung. nur eine Tabelle scannt 4262 Zeilen mit using_where und 45% gefiltert, andere mit index –
Sieht so aus, als ob Sie die Tabelle in jeder Abfrage sperren. Verwenden Sie BEGIN TRANSACTION? – abeyaz