Heim  >  Artikel  >  Backend-Entwicklung  >  Über die Lösung für PHP, das zufällig mysql rand() aufzeichnet und die CPU zu 100 % belastet

Über die Lösung für PHP, das zufällig mysql rand() aufzeichnet und die CPU zu 100 % belastet

不言
不言Original
2018-07-03 17:30:011520Durchsuche

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.&#39;,&#39;.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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn