MySqlbug bestätigen



  • Hi, könnt ihr mal folgende Datenbank in MySql importieren

    www.die-gaming.de/sqlbug/test.sql

    und dann den untenstehenden SQL ausführen?

    SELECT gtier.gruppe%100 AS gruppe,tier.tiernummer as dummy FROM gkuh JOIN gfutterdaten AS gsorte1 ON gkuh.primusnummer = gsorte1.primusnummer AND gkuh.gruppe = gsorte1.gruppe AND gsorte1.sorte = 0 AND gsorte1.art = 4 JOIN gfutterdaten AS gsorte2 ON gkuh.primusnummer = gsorte2.primusnummer AND gkuh.gruppe = gsorte2.gruppe AND gsorte2.sorte = 1 AND gsorte2.art = 4 JOIN gfutterdaten AS gsorte3 ON gkuh.primusnummer = gsorte3.primusnummer AND gkuh.gruppe = gsorte3.gruppe AND gsorte3.sorte = 2 AND gsorte3.art = 4 JOIN gfutterdaten AS gsorte4 ON gkuh.primusnummer = gsorte4.primusnummer AND gkuh.gruppe = gsorte4.gruppe AND gsorte4.sorte = 3 AND gsorte4.art = 4 JOIN gtier ON gtier.gruppe = gkuh.gruppe AND gtier.primusnummer = gkuh.primusnummer AND gtier.art = 4 JOIN gkuh_grind ON gkuh.primusnummer = gkuh_grind.primusnummer AND gkuh_grind.art = 4 AND gkuh.gruppe = gkuh_grind.gruppe JOIN milchleistungskurven AS mkurve ON mkurve.gruppe = gkuh.gruppe AND mkurve.primusnummer = gtier.primusnummer JOIN traechtigkeitskurven AS tkurve ON tkurve.gruppe = gkuh.gruppe AND tkurve.primusnummer = gtier.primusnummer and tkurve.art = 4 JOIN gkuh_laktationskurven AS lkurve ON lkurve.gruppe = gkuh.gruppe AND lkurve.primusnummer = gtier.primusnummer JOIN tier ON tier.gruppe+100= gtier.gruppe AND tier.art = 1 AND tier.primusnummer = gtier.primusnummer JOIN kuh_rind ON gtier.primusnummer = kuh_rind.primusnummer JOIN futterdaten AS sorte1 ON sorte1.primusnummer = gtier.primusnummer AND sorte1.sorte = 0 JOIN futterdaten AS sorte2 ON sorte2.primusnummer = gtier.primusnummer AND sorte2.sorte = 1 JOIN futterdaten AS sorte3 ON sorte3.primusnummer = gtier.primusnummer AND sorte3.sorte = 2 JOIN futterdaten AS sorte4 ON sorte4.primusnummer = gtier.primusnummer AND sorte4.sorte = 3 WHERE gtier.art = 4 AND gtier.gruppe = 101 GROUP BY gtier.gruppe

    Und dann sagen euer Server noch funktioniert.

    Hier hab ich nämlich 2 Mysqlserver( 4.1.0-alpha-max-nt und 4.0.12) mehrfach dadurch komplett zum Absturz gebracht(über Apache/phpadmin und über MySqlDac, auch von meinem Rechner aus auf einen anderen).

    Er hat zu 100% das System ausgelastet und sonst gar nix mehr gesagt(Windows war logischerweise danach auch unbenutzbar) und das auch nachdem der timeout vorbei war.

    Das man das nicht unbedingt an einem mysqlserver testen sollte wo man nicht an den resetschalter rankommt, es seidenn man mag seinen Provider nicht sollte klar sein :D.



  • Was ist denn das für eine Mammut-Abfrage 😮
    Und ehrlich gesagt habe ich nicht allzuviel Lust sie auszuführen, wenn du schon sagst, dass dann wohl der Rechner abstürzt 🙄



  • Naja die Abfrage muss so sein ^^ frag nicht warum, ist so.
    Und er stürzt ja nicht wirklcih ab, nur der mysql Server macht eine Auslastung von 100% und akzeptiert sonst gar nix mehr(Datenbank überlebt es auch unbeschadet :p).
    Aber das Ding ist doch, das wenn das wirklich überall so ist und der Rechner abstürzt:
    Auf Webserver von nem tollen Provider db importieren
    Auf Webserver query ausführen
    Webserver -> platt
    Provider -> Problem

    Denke nicht das das gewollt ist :p



  • Ich denke das du hgier eine Deadlock verursachst. Das bei einem Apachetimeout die Datenbank trotzdem weiterarbeitet ist klar, da der SQL abgesetzt wurde und MYSQL noch arbeitet.
    Du solltest aber dein Desig überdenke bzw. TEMP-Tabellen anlegen und somit den Query verkürzen.



  • Naja der MySql Server und die Datenbank dazu ist nicht fürs Web gedacht sondern für das C++ Projekt an dem ich grad arbeite.
    In der Regel sitzt da auch nur ein Benutzer an einer Datenbank dran, das heisst wenn die 20 Abfragen von der obigen Länge eine Sekunde dauern, dann ist das relativ egal.
    Ist vieleicht nicht schön, aber die Datenbankist nunmal so zerstückelt, schon weil ich mich an dazugehörige C++ Objekte halten muss(Tabelle Kalb enthält alles aus Klasse Kalb usw).


Log in to reply