Ergebnis 1 bis 4 von 4

Thema: MySQL tmp Tables problem

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer
    Registriert seit
    14.03.2008
    Beiträge
    121

    MySQL tmp Tables problem

    Guten Morgen

    Mein Hoster hatte mich angeschrieben, ich soll meine Queries Optimieren und komme nicht weiter. Ich hoffe ihr könnt mir helfen.

    Text aus der Mail
    Ihr Server ist mit etwa 200MB großen MySQL tmp Tables regelmäßig Verursacher von kurzen I/O Peaks, die auch den await in die Höhe treiben.

    Folgende Arten von Queries sind mir hierbei aufgefallen:
    HTML-Code:
    SELECT *,id as spielid, categoryid as gcat, 
    (select count(id) FROM `jos_community_games_fav` WHERE gid = spielid) as favorit,
    (select voteavg FROM `jos_community_games_votes` WHERE id = spielid) as durchschnitt,
    (select uname FROM `jos_community_games_scores` WHERE Rang = 1 and gid = spielid) as topscorerid, 
    (select username FROM jos_users WHERE id = (select uname FROM `jos_community_games_scores` WHERE Rang = 1 and gid = spielid)) as topscorername, 
    (select title FROM `jos_community_games_category` WHERE id=gcat) as gamecat FROM `jos_community_games`  
    WHERE `published`='1' AND `scoring_structure` != '0'  ORDER BY rand() ASC LIMIT 0, 12
    Wie kann ich diese Abfragen Optimieren...?
    Kann man die tmp Tables löschen bzw. leeren?
    Was sind den I/O Peaks?
    Hier wird man fürs Zocken bezahlt!

  2. #2
    Abfrage optimieren:
    Gedanken über die Daten und dessen Strukturierung machen
    Weiterführende Gedanken darüber welche Daten wie benötigt werden
    Dahingehend Datenbankstruktur anlegen Indexe setzen und Querys schreiben

    Prinzipiell nicht so schwierig, muss man sich nur mit beschäftigen.

    Die tmp-Tables werden während der Ausführung des Querys angelegt, eine art Zwischenablage, wird danach wieder vernichtet - brauchst du also nicht löschen

    IO ist Input/Output ; die tmp-Tables werden nach Möglichkeit im Ram gehalten, wird der benötigte Platz zu groß werden diese auf die Festplatte ausgelagert, welches um ein vielfaches langsamer ist.

    Die Datenmenge die nun auf den Bereich geschrieben und auch wieder gelesen wird ist bei einem PEAK deutlich höher bzw. meißt der höchste Stand des üblichen normalbetriebes.

  3. #3
    Erfahrener Benutzer Avatar von jpwfour
    Registriert seit
    06.02.2008
    Beiträge
    3.717
    Wow, ein Select mit 5 subselects, und am ende dann noch order by rand, womit zuerst alle gesammelten daten in einer temp. tabelle abgelegt werden müssen, um am ende dann zufällig 12 rauszusuchen.

    Was ist "jos_community_games" denn?

    Man müsste wissen, was genau damit bezweckt werden soll.
    Wenn es um die Auflistung 12 zufälliger Einträge aus einer Tabelle geht, zu denen man dann noch weitere Zusatzdaten benätigt, ist hier evtl die Aufteilung in mehrere Anfragen sinnvoll, also zuerst aus 1er Tabelle via rand() 12 Einträge holen, dann erst in weiteren Anfragen die zusätzlichen Daten.

    Scheinbar wird aber auch jedesmal über ein COUNT() gezählt, wie viele User diesen Eintrag als Favorit haben, das sollte man auch vermeiden und besser einen eigenen Counter dafür führen, der halt jedesmal +-1 gemacht werden muss, wenn ein User was an seinen Favoriten ändert. uvm...

    Siehe dazu auch:
    http://dev.mysql.com/doc/refman/5.1/de/explain.html

    Wenn man dem ganzen ein EXPLAIN voranstellt, sagt einem MySQL, was intern genau gemacht wird, daran sieht man dann schnell, wo kein Index genutzt wird usw.
    Kill one man, and you are a murderer.
    Kill millions of men, and you are a conqueror.
    Kill them all, and you are a god.
    - Jean Rostand, Thoughts of a Biologist (1939)

  4. #4
    Erfahrener Benutzer
    Registriert seit
    14.03.2008
    Beiträge
    121
    Danke für eure hilfe hat mir sehr geholfen
    Hier wird man fürs Zocken bezahlt!

Ähnliche Themen

  1. [SQL] Mysql Problem beim Installieren von VMS
    Von Lars-Marcel im Forum [HD] Programmieren
    Antworten: 7
    Letzter Beitrag: 04.07.2011, 12:54
  2. Sperrcron - Mysql problem..
    Von cr00sy im Forum Support zu Addons & Erweiterungen
    Antworten: 6
    Letzter Beitrag: 10.03.2010, 07:00
  3. Mysql Problem Tagesklickrally
    Von Slith im Forum Support zu Addons & Erweiterungen
    Antworten: 4
    Letzter Beitrag: 11.02.2010, 18:59
  4. MySQL Insert problem
    Von StephenKing im Forum [HD] Programmieren
    Antworten: 12
    Letzter Beitrag: 07.08.2008, 20:33
  5. MYSQL Problem bei dem Slot Icy Seven
    Von vecc im Forum Support zu Addons & Erweiterungen
    Antworten: 3
    Letzter Beitrag: 21.04.2008, 00:32

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •