Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

MySQL Datenbank + PHP Anwendung "langsam"

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von Aredon, 30 September 2015.

  1. Aredon

    Aredon Benutzer

    Hallo,

    ich habe da ein gröberes Problem gestern feststellen müssen mit meiner MySQL-Datenbank...

    Ich war mitten im Programmieren und beim Testen, plötzlich wurden die PHP-Seitenaufrufe immer langsamer und bis zu 20 Sekunden dauerte es, dass die Seite geladen wurde. Andere Anwendungen waren nicht betroffen, also sprich diese, die keine Datenbankanbindung hatten. Achja, ich Hoste den Server selbst und die CPU war unauffällig, der RAM allerdings auch.

    Laut PHPMyAdmin sollte ich den Cache erhöhen, allerdings bin ich mir nicht sicher, welche Variablen auf welche Werte zu setzen. (Screenshot im Anhang).

    Stunden später war dann wieder alles "normal". Habt ihr eine Idee ob das jetzt am MySQL-Cache liegen kann, oder etwas anderem oder bin ich am ganz falschem Ansatz? Hattet ihr das auch schon?

    MfG,
    Patrick Bildschirmfoto vom 2015-09-30 03:40:13.png
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Was hat denn die Prozessliste der, ähm, Datenbank gesagt? Was sagt das Slow-Query-Log, was Explain zum Inhalt des slow-query-logs?
     
  3. Aredon

    Aredon Benutzer

    Hallo, leider hab ich keinen Screenshot von der Prozessliste gemacht :(

    Weiters hatte ich keine Slow-Query-Logs aktiviert, sodass ich erst wieder etwas warten muss, bis ich dieses Fehlverhalten wieder bekomme und dies dann auslesen kann.

    Ich melde mich dann, sobald ich neues weiß.
     
  4. akretschmer

    akretschmer Datenbank-Guru

    Klingt für mich nach einer vor Dir programmierten Sache, oder? Dann solltest Du aber eigentlich schon mit so einfachen Dingen wie dem Slow-Log täglich arbyten ...
     
  5. Aredon

    Aredon Benutzer

    Sodala, da bin ich wieder... laut dem Slow-Query sind es mehrere Tabellen die betroffen sind, jedoch immer abwechselnd, und nicht immer nur die selbe. Habe die Indexes nun auch optimiert. Scheinte gleich mal besser zu laufen, aber nächsten Tag war dann wieder ne andere Tabelle betroffen :confused: Wieder optimiert... Wieder besser und wieder ne andere Tabelle, äh jetzt hab ich alle mal optimiert... bis jetzt kann ich nichts konkreteres dazu erstmal sagen (wahrscheinlich morgen erst wieder). Hier mal ein kleiner Auszug vom Log:

    ----------------------
    # Time: 151006 3:14:27
    # User@Host: project[project] @ localhost []
    # Query_time: 2.157774 Lock_time: 0.000030 Rows_sent: 0 Rows_examined: 1
    SET timestamp=1444094067;
    UPDATE cookies SET try = '0', expiry = '1449278065' WHERE user_id = '1';
    # Time: 151006 3:20:02
    # User@Host: root[root] @ localhost []
    # Query_time: 3.827951 Lock_time: 0.000107 Rows_sent: 1 Rows_examined: 1
    SET timestamp=1444094402;
    SELECT *,
    `TABLE_SCHEMA` AS `Db`,
    `TABLE_NAME` AS `Name`,
    `TABLE_TYPE` AS `TABLE_TYPE`,
    `ENGINE` AS `Engine`,
    `ENGINE` AS `Type`,
    `VERSION` AS `Version`,
    `ROW_FORMAT` AS `Row_format`,
    `TABLE_ROWS` AS `Rows`,
    `AVG_ROW_LENGTH` AS `Avg_row_length`,
    `DATA_LENGTH` AS `Data_length`,
    `MAX_DATA_LENGTH` AS `Max_data_length`,
    `INDEX_LENGTH` AS `Index_length`,
    `DATA_FREE` AS `Data_free`,
    `AUTO_INCREMENT` AS `Auto_increment`,
    `CREATE_TIME` AS `Create_time`,
    `UPDATE_TIME` AS `Update_time`,
    `CHECK_TIME` AS `Check_time`,
    `TABLE_COLLATION` AS `Collation`,
    `CHECKSUM` AS `Checksum`,
    `CREATE_OPTIONS` AS `Create_options`,
    `TABLE_COMMENT` AS `Comment`
    FROM `information_schema`.`TABLES` t
    WHERE BINARY `TABLE_SCHEMA`
    IN ('project')
    AND t.`TABLE_NAME` = 'cookies' ORDER BY Name ASC;
    # Time: 151006 3:23:03
    # User@Host: project[project] @ localhost []
    # Query_time: 2.740511 Lock_time: 0.000056 Rows_sent: 0 Rows_examined: 5
    SET timestamp=1444094583;
    SELECT * FROM tbl_one WHERE type = '0' AND info = '0' AND expired < '1440000000';
    ---------------------------

    Oder grenze ich vllt. etwa schon an die MySQL-Limits?
     
  6. akretschmer

    akretschmer Datenbank-Guru

    Select *, <lange Liste von Spalten> ist schon mal reichlich dumm.

    Davon abgesehen ist das finden lang laufender Abfragen der erste Schritt. Der nächste wäre dann, sich das mit Explain anzuschauen. Beim MySQL-Explain bitte Kotztüte in Reichweite haben ;-)

    Wie hast Du denn Indexe optimiert, wenn ich mal fragen darf?
     
  7. Aredon

    Aredon Benutzer

    Stimmt, denn diese Liste wird nicht von der PHP-Applikation angefordert (siehe User: root), sondern von PHPMYAdmin, denn da konnte ich auch wieder nichts verwalten, da die Seite wieder gässlich am hängen war :eek:

    Habe die Spalten mit id indiziert, das hat sich auch dann extrem verbessert.

    Du magst MySQL scheinbar nicht :D Und du meinst nicht, dass es am Cache liegen könnte (z.B.: zu klein)?
     
  8. akretschmer

    akretschmer Datenbank-Guru

    Hä?

    Es gibt Regeln, nach denen man Indexe setzt.

    Absolut korrekt.

    Cache? Welcher?

    Die Geschwindigkeit einer DB-Abfrage hängt maßgeblich am Abfrageplan (ich rede jetzt mal von Datenmengen, die um viele Größenordnungen größer als RAM und Caches sind).
     
  9. Aredon

    Aredon Benutzer

    PHPMyAdmin fragt ja nach allem ab, was für einen sichtbar an Tabellen und Datenbanken ist, deswegen diese lange Liste (da ich als root eingeloggt war). So eine Abfrage macht meine PHP-Anwendung nicht (da ich für jede Anwendung einen eigenen Benutzer / Datenbank habe). Verständlicher?

    In meinen Tabellen sind sowieso nur 5-20 Datensätze vorhanden, also sind das auch keine großen Datenmengen die die Datenbank bremsen...
     
  10. akretschmer

    akretschmer Datenbank-Guru

    Am Anfang war von 20 Sekunden die Rede.
     
  11. Aredon

    Aredon Benutzer

    Was haben Sekunden mit Datensätzen zu tun? Trotzdem habe ich mit bis zu 20 Sekunden andauernden Abfragen zu tun.

    Ich denke, wir kommen hier nicht weiter.
     
  12. akretschmer

    akretschmer Datenbank-Guru

    Viel. Tabellen mit 5-10 Datensätzen sollten selbst bei MySQL etwas schneller als in 20 Sekunden kommen. Egal.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden