Endlosabfragen/ Schleifen in MYSQL
![](http://www.drupalcenter.de/files/noavatar_mini.gif)
am 22.12.2008 - 17:04 Uhr in
Hallo,
habe bei einem Projekt ständig MySQL Abfragen/ Schleifen und weiss nicht woher die kommen.
Es ist defenitiv ein Programmierfehler in einem Modul - wie bekomme ich sowas raus wo sichd er befindet?
Habe vom Provider folgenden Auszug erhalten:
| 34061594 | sexyladies | localhost | sexyladies | Query | 2159 | statistics | SELECT count( DISTINCT(node.nid)) FROM node node INNER JOIN usernode usernode ON node.nid = usernode.nid LEFT JOIN users usernode_users ON usernode.uid = usernode_users.uid INNER JOIN users users ON node.uid = users.uid LEFT JOIN profile_values profile_kategorie ON users.uid = profile_kategorie.uid AND profile_kategorie.fid = '22' LEFT JOIN profile_values profile_bundesland_business ON users.uid = profile_bundesland_business.uid AND profile_bundesland_business.fid = '40' LEFT JOIN profile_values profile_ort_business ON users.uid = profile_ort_business.uid AND profile_ort_business.fid = '13' LEFT JOIN profile_values profile_plz_business ON users.uid = profile_plz_business.uid AND profile_plz_business.fid = '12' LEFT JOIN profile_values profile_bezirk_business ON users.uid = profile_bezirk_business.uid AND profile_bezirk_business.fid = '24' LEFT JOIN profile_values profile_vorlieben_erste_favoite_vorliebe ON users.uid = profile_vorlieben_erste_favoite_vorliebe.uid AND profile_vorlieben_erste_favoite_vorliebe.fid = '28' LEFT JOIN profile_values profile_vorlieben_sonderbar ON users.uid = profile_vorlieben_sonderbar.uid AND profile_vorlieben_sonderbar.fid = '35' LEFT JOIN profile_values profile_vorlieben_merkmal_1 ON users.uid = profile_vorlieben_merkmal_1.uid AND profile_vorlieben_merkmal_1.fid = '31' LEFT JOIN profile_values profile_vorlieben_merkmal_2 ON users.uid = profile_vorlieben_merkmal_2.uid AND profile_vorlieben_merkmal_2.fid = '32' LEFT JOIN profile_values profile_vorlieben_merkmal_3 ON users.uid = profile_vorlieben_merkmal_3.uid AND profile_vorlieben_merkmal_3.fid = '33' LEFT JOIN profile_values profile_vorlieben_merkmal_4 ON users.uid = profile_vorlieben_merkmal_4.uid AND profile_vorlieben_merkmal_4.fid = '34' INNER JOIN node_access na ON na.nid = node.nid WHERE (na.grant_view >= 1 AND ((na.gid = 0 AND na.realm = 'all') OR (na.gid = 1 AND na.realm = 'content_access_rid'))) AND ( (node.status = '1') AND (usernode_users.uid != '1') AND (usernode_users.uid != '3') AND (node.type IN ('usernode')) AND (profile_kategorie.value LIKE 'Lányok/Frauen/Girls') AND (profile_bundesland_business.value LIKE 'Bács-Kiskun' OR profile_bundesland_business.value LIKE 'Baranya' OR profile_bundesland_business.value LIKE 'Békés' OR profile_bundesland_business.value LIKE 'Borsod-Abaúj-Zemplén' OR profile_bundesland_business.value LIKE 'Csongrád' OR profile_bundesland_business.value LIKE 'Fejér' OR profile_bundesland_business.value LIKE 'Gy?r-Moson-Sopron' OR profile_bundesland_business.value LIKE 'Hajdú-Bihar' OR profile_bundesland_business.value LIKE 'Heves' OR profile_bundesland_business.value LIKE 'Jász-Nagykun-Szolnok' OR profile_bundesland_business.value LIKE 'Komárom-Esztergom' OR profile_bundesland_business.value LIKE 'Nógrád' OR profile_bundesland_business.value LIKE 'Pest' OR profile_bundesland_business.value LIKE 'Somogy' OR profile_bundesland_business.value LIKE 'Szabolcs-Szatmár-Bereg' OR profile_bundesland_business.value LIKE 'Tolna' OR profile_bundesland_business.value LIKE 'Vas' OR profile_bundesland_business.value LIKE 'Veszprém' OR profile_bundesland_business.value LIKE 'Zala') AND (profile_ort_business.value LIKE 'Budapest') AND (UPPER(profile_plz_business.value) LIKE UPPER('%1144%')) AND (profile_bezirk_business.value LIKE 'XIV. kerület') AND (profile_vorlieben_erste_favoite_vorliebe.value LIKE 'Franciázás-gumi-nélkül | Französich-ohne | French-without-condom') AND (profile_vorlieben_sonderbar.value LIKE 'Szex-mozgássérültekkel | Gehandicapten-Gästen | Handicapped-Guests') AND (profile_vorlieben_merkmal_1.value LIKE 'Vékony | Schlank | Slim') AND (profile_vorlieben_merkmal_2.value LIKE 'Érett | Reif | Mature') AND (profile_vorlieben_merkmal_3.value LIKE 'Borotvált-vagyok | Ich-bin-rasiert | I'm-shaven') AND (profile_vorlieben_merkmal_4.value LIKE '170cm - 180cm') ) |
| 34061826 | sexyladies | localhost | sexyladies | Query | 2145 | Locked | UPDATE users SET access = 1229702492 WHERE uid = 1 |
| 34061898 | sexyladies | localhost | sexyladies | Query | 2141 | Locked | SELECT u.*, s.* FROM users u INNER JOIN sessions s ON u.uid = s.uid WHERE s.sid = '62e1ac97020bf2cb0c8a7752a02340b3' |
| 34070677 | sexyladies | localhost | sexyladies | Query | 1542 | Locked | SELECT u.*, s.* FROM users u INNER JOIN sessions s ON u.uid = s.uid WHERE s.sid = 'e1ab8878c17b21947f9d2ab360b04bdf' |
| 34070763 | sexyladies | localhost | sexyladies | Query | 1535 | Locked | SELECT count( DISTINCT(node.nid)) FROM node node INNER JOIN usernode usernode ON node.nid = usernode.nid LEFT JOIN users usernode_users ON usernode.uid = usernode_users.uid INNER JOIN users users ON node.uid = users.uid LEFT JOIN profile_values profile_kategorie ON users.uid = profile_kategorie.uid AND profile_kategorie.fid = '22' LEFT JOIN profile_values profile_ort_business ON users.uid = profile_ort_business.uid AND profile_ort_business.fid = '13' INNER JOIN node_access na ON na.nid = node.nid WHERE (na.grant_view >= 1 AND ((na.gid = 0 AND na.realm = 'all') OR (na.gid = 1 AND na.realm = 'content_access_rid'))) AND ( (node.status = '1') AND (usernode_users.uid != '1') AND (usernode_users.uid != '3') AND (node.type IN ('usernode')) AND (profile_kategorie.value LIKE 'Lányok/Frauen/Girls' OR profile_kategorie.value LIKE 'Férfiak/Männer/Men' OR profile_kategorie.value LIKE 'Melegek/leszbikusok/Gays' OR profile_kategorie.value LIKE 'Escort' OR profile_kategorie.value LIKE 'Sztriptíz - GoGo/Stripper/Tabledance' OR profile_kategorie.value LIKE 'Transzszexuálisok/Transen/Transsexuals' OR profile_kategorie.value LIKE 'Bizarr' OR profile_kategorie.value LIKE 'Klubok/ Clubs') AND (usernode_users.uid != '53') ) |
| 34070796 | sexyladies | localhost | sexyladies | Query | 1533 | Locked | DELETE FROM sessions WHERE timestamp < 1229503104 |
| 34070840 | sexyladies | localhost | sexyladies | Query | 1529 | Locked | SELECT count( DISTINCT(node.nid)) FROM node node INNER JOIN usernode usernode ON node.nid = usernode.nid LEFT JOIN users usernode_users ON usernode.uid = usernode_users.uid INNER JOIN users users ON node.uid = users.uid LEFT JOIN profile_values profile_kategorie ON users.uid = profile_kategorie.uid AND profile_kategorie.fid = '22' LEFT JOIN profile_values profile_ort_business ON users.uid = profile_ort_business.uid AND profile_ort_business.fid = '13' INNER JOIN node_access na ON na.nid = node.nid WHERE (na.grant_view >= 1 AND ((na.gid = 0 AND na.realm = 'all') OR (na.gid = 1 AND na.realm = 'content_access_rid'))) AND ( (node.status = '1') AND (usernode_users.uid != '1') AND (usernode_users.uid != '3') AND (node.type IN ('usernode')) AND (profile_kategorie.value LIKE 'Lányok/Frauen/Girls' OR profile_kategorie.value LIKE 'Férfiak/Männer/Men' OR profile_kategorie.value LIKE 'Melegek/leszbikusok/Gays' OR profile_kategorie.value LIKE 'Escort' OR profile_kategorie.value LIKE 'Sztriptíz - GoGo/Stripper/Tabledance' OR profile_kategorie.value LIKE 'Transzszexuálisok/Transen/Transsexuals' OR profile_kategorie.value LIKE 'Bizarr' OR profile_kategorie.value LIKE 'Klubok/ Clubs') AND (usernode_users.uid != '53') ) |
| 34071625 | sexyladies | localhost | sexyladies | Query | 1481 | Locked | SELECT count( DISTINCT(node.nid)) FROM node node INNER JOIN usernode usernode ON node.nid = usernode.nid LEFT JOIN users usernode_users ON usernode.uid = usernode_users.uid INNER JOIN users users ON node.uid = users.uid LEFT JOIN profile_values profile_kategorie ON users.uid = profile_kategorie.uid AND profile_kategorie.fid = '22' LEFT JOIN profile_values profile_ort_business ON users.uid = profile_ort_business.uid AND profile_ort_business.fid = '13' INNER JOIN node_access na ON na.nid = node.nid WHERE (na.grant_view >= 1 AND ((na.gid = 0 AND na.realm = 'all') OR (na.gid = 1 AND na.realm = 'content_access_rid'))) AND ( (node.status = '1') AND (usernode_users.uid != '1') AND (usernode_users.uid != '3') AND (node.type IN ('usernode')) AND (profile_kategorie.value LIKE 'Lányok/Frauen/Girls' OR profile_kategorie.value LIKE 'Férfiak/Männer/Men' OR profile_kategorie.value LIKE 'Melegek/leszbikusok/Gays' OR profile_kategorie.value LIKE 'Escort' OR profile_kategorie.value LIKE 'Sztriptíz - GoGo/Stripper/Tabledance' OR profile_kategorie.value LIKE 'Transzszexuálisok/Transen/Transsexuals' OR profile_kategorie.value LIKE 'Bizarr' OR profile_kategorie.value LIKE 'Klubok/ Clubs') AND (usernode_users.uid != '53') ) |
| 34071841 | sexyladies | localhost | sexyladies | Query | 1466 | Locked | SELECT u.*, s.* FROM users u INNER JOIN sessions s ON u.uid = s.uid WHERE s.sid = 'e1ab8878c17b21947f9d2ab360b04bdf' |
| 34072509 | sexyladies | localhost | sexyladies | Query | 1412 | Locked | SELECT u.*, s.* FROM users u INNER JOIN sessions s ON u.uid = s.uid WHERE s.sid = '282e243432c0b14dce31c7df3dc1ccd2' |
| 34073076 | sexyladies | localhost | sexyladies | Query | 1371 | Locked | SELECT u.*, s.* FROM users u INNER JOIN sessions s ON u.uid = s.uid WHERE s.sid = '282e243432c0b14dce31c7df3dc1ccd2' |
| 34073359 | sexyladies | localhost | sexyladies | Query | 1351 | Locked | SELECT u.*, s.* FROM users u INNER JOIN sessions s ON u.uid = s.uid WHERE s.sid = 'e1ab8878c17b21947f9d2ab360b04bdf' |
| 34074162 | sexyladies | localhost | sexyladies | Query | 1294 | Locked | SELECT u.*, s.* FROM users u INNER JOIN sessions s ON u.uid = s.uid WHERE s.sid = 'e1ab8878c17b21947f9d2ab360b04bdf' |
| 34074258 | sexyladies | localhost | sexyladies | Query | 1287 | Locked | SELECT count( DISTINCT(node.nid)) FROM node node INNER JOIN usernode usernode ON node.nid = usernode.nid LEFT JOIN users usernode_users ON usernode.uid = usernode_users.uid INNER JOIN users users ON node.uid = users.uid LEFT JOIN profile_values profile_kategorie ON users.uid = profile_kategorie.uid AND profile_kategorie.fid = '22' LEFT JOIN profile_values profile_ort_business ON users.uid = profile_ort_business.uid AND profile_ort_business.fid = '13' INNER JOIN node_access na ON na.nid = node.nid WHERE (na.grant_view >= 1 AND ((na.gid = 0 AND na.realm = 'all') OR (na.gid = 1 AND na.realm = 'content_access_rid'))) AND ( (node.status = '1') AND (usernode_users.uid != '1') AND (usernode_users.uid != '3') AND (node.type IN ('usernode')) AND (profile_kategorie.value LIKE 'Lányok/Frauen/Girls' OR profile_kategorie.value LIKE 'Férfiak/Männer/Men' OR profile_kategorie.value LIKE 'Melegek/leszbikusok/Gays' OR profile_kategorie.value LIKE 'Escort' OR profile_kategorie.value LIKE 'Sztriptíz - GoGo/Stripper/Tabledance' OR profile_kategorie.value LIKE 'Transzszexuálisok/Transen/Transsexuals' OR profile_kategorie.value LIKE 'Bizarr' OR profile_kategorie.value LIKE 'Klubok/ Clubs') AND (usernode_users.uid != '53') ) |
| 34074458 | sexyladies | localhost | sexyladies | Query | 1268 | Locked | SELECT count( DISTINCT(node.nid)) FROM node node INNER JOIN usernode usernode ON node.nid = usernode.nid LEFT JOIN users usernode_users ON usernode.uid = usernode_users.uid INNER JOIN users users ON node.uid = users.uid LEFT JOIN profile_values profile_kategorie ON users.uid = profile_kategorie.uid AND profile_kategorie.fid = '22' LEFT JOIN profile_values profile_ort_business ON users.uid = profile_ort_business.uid AND profile_ort_business.fid = '13' INNER JOIN node_access na ON na.nid = node.nid WHERE (na.grant_view >= 1 AND ((na.gid = 0 AND na.realm = 'all') OR (na.gid = 1 AND na.realm = 'content_access_rid'))) AND ( (node.status = '1') AND (usernode_users.uid != '1') AND (usernode_users.uid != '3') AND (node.type IN ('usernode')) AND (profile_kategorie.value LIKE 'Lányok/Frauen/Girls' OR profile_kategorie.value LIKE 'Férfiak/Männer/Men' OR profile_kategorie.value LIKE 'Melegek/leszbikusok/Gays' OR profile_kategorie.value LIKE 'Escort' OR profile_kategorie.value LIKE 'Sztriptíz - GoGo/Stripper/Tabledance' OR profile_kategorie.value LIKE 'Transzszexuálisok/Transen/Transsexuals' OR profile_kategorie.value LIKE 'Bizarr' OR profile_kategorie.value LIKE 'Klubok/ Clubs') AND (usernode_users.uid != '53') )
- Anmelden oder Registrieren um Kommentare zu schreiben
Ich frage mal besser nicht
am 22.12.2008 - 17:14 Uhr
Ich frage mal besser nicht nach, was für ein Projekt das ist. Wenn ich die Auszüge so überfliege.. ;-)
Endlosschleifen gibt es so in SQL nicht, weil SQL keine Schleifen oder Sprünge oder dergleichen kennt (Stored Procedures kommen bei Drupal nicht zum Einsatz).
Daher wäre es sinniger du würdest das Problem beschreiben, aufgrund dessen du von deinem Hoster den Auszug aus der MySQL Prozessliste angefordert hast. Wenn die Abfragen zu lange dauern, dann ist der DB Server zu lahm. Woran das ursächlich liegt, kann man oft nur in Zusammenarbeit mit dem Hoster klären. Glück hat derjenige, der einen kooperativen und kompetenten Hoster hat, der einem dort unter die Arme greift.
Ansonsten:
Nacheinander die Module deaktivieren, die man zuletzt eingebaut hat und seitdem es die Probleme gibt.
hi, ja da hast du recht mit
am 22.12.2008 - 17:28 Uhr
hi,
ja da hast du recht mit dem projekt ;-)
Nun ja, der provider sagt, dass etwas ständig eine abfrage generiert, diese bis zu 2000 sekunden durchläuft und irgendwann ist die datenbank tilt.
Es hiess, es ist irgendwo eine schleife generiert, die ständig ein abfrage sendet bis es zu einem fehler der "max_connections...." ( ähnlich ) führt.
Muss da nicht vorher schon
am 22.12.2008 - 17:59 Uhr
Muss da nicht vorher schon der Timeout des PHP Skripts anschlagen und kann man anhand dessen und über den obigen Code nicht sagen, welcher Teil des Systems Schuld ist?
Problem ist, dass in MySQL keine Timeouts gibt, es sei denn man patcht das Ding und backt es sich aus dem Quellcode selbst. Das machen aber die allerwenigsten.
Hallo, ich kann mir
am 04.04.2009 - 10:53 Uhr
Hallo,
ich kann mir vorstellen, dass es an der cron.php liegt. Wird diese zu öft ausgeführt oder schon ein neuer Request gestartet wenn der Alte noch läuft, kommt es zu Überschneidungen. Diese führen zu diesem "Loop" der eigentlich keiner ist. Guck mal in deine Logs von Drupal was dort zu den Cron-Aufrufen steht. Ich selbst hatte das Problem vor einiger Zeit. Bei mir lag es an falschen Type-Cast auf DB-Ebene. Die Abfrage erwartete z.B. einen String aber wurde mit einem Integer gefüttert. Das führte zu einer weissen Seite, was ja ein FATAL-ERROR in PHP ist. Tritt solch ein Fehler in einem Cronlauf auf steht das Skript still. Dann kann Drupal nicht in die DB schreiben, dass der Cronlauf erfolgreich abgeschlossen wurde und es kommt beim nächsten Cronlauf zu gleichen Problemen. Diese summieren sich und es sieht so aus, als würde ein Loop vorhanden sein. Am besten, du deaktivierst zunächst die Module nacheinander und versucht so dem Problem auf die Spur zu kommen. Du solltest auch sicherstellen, dass du die aktuellen Versionen deiner installierten Module verwendest. Oft sind solche Probleme bekannt und in aktuellen Versionen gefixed.
--
![XING](http://www.xing.com/img/buttons/9_de_btn.gif)
--
Software is like sex; it's better if it's free. (Linus Torvalds)