MySQL Script Ausführung dauert bis zu 20 Sekunden


tvtotal

Erfahrenes Mitglied
#1
Hallo, das Schreiben von einer Tabelle (als Geschwindigkeitstest) dauert bis zu 20 Sekunden. Welche möglichen Ursachen kann das haben? Danke im Voraus.
 
Zuletzt bearbeitet:

Yaslaw

n/a
Moderator
#2
Welcher Teil geht wie lange?
Ist es das erstellen der Tabelle, das einzelne Einfügen von 1000 Einträgen oder der Abruf der 1000 Datensätz und einfügen in ein Array?

Noch ein Tipp: Deine Code-Formatierung sieht nach Zufall aus. Es ist nicht möglich den Code einfach zu lesen. Irgendwo beginnen { und irgendwo enden sie. Man muss sie zählen um herauszufinden welches } zu welchem { gehört. Ich musste den Code formatieren um ihn zu lese. Damit weitere Forumsuser das nicht müssen, hier der Formatierte Code
PHP:
// Connect to Database
$mysqli = new mysqli($src_shop->dbHost, $src_shop->dbUser, $src_shop->dbPwd, $src_shop->dbName);

echo "Db connection establishedat: {$timer->get()}<br \> " ;

// Create an sql command structure for creating a table
$tableCreate = "CREATE TABLE IF NOT EXISTS test_tbl (
                    id int(11) NOT NULL auto_increment ,
                    RandomTxt TEXT ,
                    PRIMARY KEY (id)
                ) ";

// This line uses the mysqli_query() function to create the table now
$queryResult = mysqli_query($mysqli , $tableCreate);

echo "Table created at: {$timer->get()}<br \> " ;

// Create a conditional to see if the query executed successfully or not
if ($queryResult === TRUE) {
    for ($i = 1; $i <= 1000; $i++) {
        mysqli_query($mysqli , "INSERT INTO test_tbl (RandomTxt) VALUES ('abcdefghklmnopqrsst')");
    }
} else {
    print "<br /><br />No TABLE created. Check";
}

echo "Data inserted into the table at: {$timer->get()}<br \> " ;

$result = mysqli_query($mysqli , 'SELECT * FROM test_tbl') ;
$arrayResults = array() ;
while ($row = $result->fetch_assoc()) {
    array_push($arrayResults , $row['RandomTxt']);
}

echo "Data is read from table and inserted into an array at: {$timer->get()}";
 

tvtotal

Erfahrenes Mitglied
#3
Hallo und danke vielmals. Das erstellen der Tabelle geht schnell, nur das Schreiben dauert:

Db connection established at : 0.00101113
Table created at : 0.00122499
Data inserted into the table at : 20.56852701
Data is read from table and inserted into an array at : 0.04123712

Es wird nur 1 Wert geschrieben (in 1000 Zeilen).
 
Zuletzt bearbeitet:

tvtotal

Erfahrenes Mitglied
#5
Hallo und danke. 1000 dürfte problemlos gehen (laut dem verlinkten Artikel locker 12000/sec). Und ich habe das Script jetzt mal auf einem anderen Server getestet und hier ist es 50x schneller, also 0,4 Sekunden für's schreiben.
 
Zuletzt bearbeitet:

Fragenfrager

Erfahrenes Mitglied
#6
Dann scheint das ein langsames Subsystem zu sein. Teste das mal mit "Diskspd", danach ggf. schnellere Festplatten einbauen , mehr RAM, ggf. dem Betriebssystem mehr Platz geben.
Falls es bei MySQL soetwas auch gibt, die Datenfileinitialisierung prüfen und das Autogrowth hoch setzen (obwohl das bei 1000 Einträgen kein Problem sein sollte.)