Heim > Artikel > Backend-Entwicklung > Über die Lösung für PHP, das zufällig mysql rand() aufzeichnet und die CPU zu 100 % belastet
Dieser Artikel stellt hauptsächlich die Lösung vor, die zu 100 % durch die zufällige Aufzeichnung von MySQL rand() verursacht wird. Jetzt kann ich ihn mit Ihnen teilen
mysql Die Datenbank enthält Zehntausende von Daten, und rand() wird zum Extrahieren von 10 zufälligen Datensätzen verwendet, was dazu führt, dass die CPU-Auslastung des Servers bis zum Absturz hoch bleibt~
Baidu hat einige Informationen konsultiert, kombiniert mit einigen von Nach eigener Erfahrung wurde die folgende Lösungsmethode übernommen:
$idlist=''; for($i=1;$i<=20;$i++){ if($i==1){ $idlist=mt_rand(3,25216); } else{ $idlist=$idlist.','.mt_rand(3,25216); } } $query="select * from table where id in ($idlist) LIMIT 0,10";
Das Prinzip ist eigentlich sehr einfach: Generieren Sie einen Satz zufälliger IDs und rufen Sie nach einer solchen Optimierung die diesem Satz von IDs entsprechenden Datensätze ab , die Seitenöffnungsgeschwindigkeit ist offensichtlich viel schneller und die CPU-Auslastung ist fast so gering wie 0, haha ~ Übrigens habe ich mit dieser Idee auch die SQLServer-Site optimiert!
Geschwindigkeitsvergleich:
Die Verwendung von rand() dauert mehr als 400 Millisekunden, um 10 zufällige Datensätze zu erhalten, aber die Verwendung der oben genannten Methode dauert nur etwa 0,6 Millisekunden. Der Unterschied ist riesig! ! !
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.
Verwandte Empfehlungen:
So lösen Sie das Problem der Implementierung mehrerer Datenbankverbindungen durch ThinkPHP
ThinkPHP implementiert die offizielle Ajax-Imitationswebsite Suchfunktion
Das obige ist der detaillierte Inhalt vonÜber die Lösung für PHP, das zufällig mysql rand() aufzeichnet und die CPU zu 100 % belastet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!