j4nk3y: Performance MySQL updaten

Beitrag lesen

Einen schönen Sonntag zusammen,

Ich bin ja stolz wie Oscar, dass mein Raspberry jetzt als Server läuft. Gestern hab ich den ersten Cronjob geschrieben und eingerichtet (Ich freu mir'n Keks).
In diesem hole ich mir Daten aus meiner Datenbank und berechne einen Wert aus einer Hand von Daten und Update diesen Wert für die entsprechende Id. Jetzt landet in meiner Log Datei folgendes:

[05.03.2017 - 14:30:01] Updated 1452 Rows in 19.094034910202 seconds. Get Data in 3.0557448863983 seconds, calculated in 0.066218137741089 seconds and updated informations in 15.952975988388 seconds.

[05.03.2017 - 14:40:01] Updated 169 Rows in 0.44454598426819 seconds. Get Data in 0.083180904388428 seconds, calculated in 0.008436918258667 seconds and updated informations in 0.3280611038208 seconds.

Zwischendurch hab ich kurz die Datenbank gelöscht und neu erstellt. Nun sieht das PHP Script dazu etwa so aus:

$time = microtime(true);

include('db_connect_function.php');
include('general_functions.php');

$get_start_time = microtime(true);
$get_data = $db->prepare(sprintf('SELECT x,y FROM a'));
$get_data->execute();
$result_data = $get_data->get_result();
if(!mysqli_error($db)){
	while ($row_data = $result_data->fetch_assoc()){
		$id = $row_data['id'];
		unset($row_data['id']);
		$data[$id] = $row_data;
		
	}
	$db->close();
	$calc_start_time = $get_end_time =  microtime(true);
	foreach($data as $id => $set){
	 //calculations
	}
	$calc_end_time = $update_start_time = microtime(true);
	
	include('db_connect_function.php');
	foreach($data as $id => $set){
		
		$update_data = $db->prepare(sprintf('UPDATE %s SET y = %.20f WHERE id = %d', mysqli_real_escape_string($db, 'table'), $data['y'], $id));
		
					
	}
	$db->commit();
}	
else{
	
}

Lange rede, kurze Frage. Gibt es eine bessere Methode, Werte in der Datenbank zu aktualisieren?

Gruß
Jo

akzeptierte Antworten