php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 11.06.2010, 15:35  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard MySQL Config Performance bei schlechten Abfragen

Hallo zusammen,

ich habe es schon öfters erlebt und ihr kennt es sicherlich auch, es soll mal ganz schnell (einmalig) nebenbei irgendwas per Hand aus der Datenbank abgefragt werden. Nun kann es dabei passieren (da es halt schnell gehen muss...) das z.B. fehlerhafte Joins entstehen oder ähnliches die das Query bei einer größeren Datenbank schonmal auf eine Laufzeit von mehreren Minuten oder noch länger kommen.

Ich weiss nicht ob das bei euch auch so ist, aber ich habe das Problem das dann der ganze MySQL Server solange für alles ewigkeiten brauch, bis dieses Query dann mal abgearbeitet ist.

Gibt es eine Möglichkeit das die Performance des MySQL Servers für einzelne Query beschränkt wird oder etwas ähnliches um die Auswirkung von solchen Queries zu begrenzen?

Gruß
CyCap
cycap ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 11.06.2010, 16:56  
erc
Erfahrener Benutzer
 
Registriert seit: 02.01.2009
Beiträge: 730
PHP-Kenntnisse:
Fortgeschritten
erc wird schon bald berühmt werden
Standard

Nein, derartiges kennt Mysql überhaupt nicht. Entweder du setzt dafür ein Slave auf oder lebst damit.
erc ist offline   Mit Zitat antworten
Alt 11.06.2010, 19:03  
thomas_w
Gast
 
Beiträge: n/a
Standard

Folgenden Hinweis habe ich dazu gefunden, aber noch nie probiert.

Zitat:
How to kill Run Away Queries ?

Have script which runs SHOW PROCESS LIST every second and kills them
EDIT
Eine zweite Idee mit einem Hint "/*TIMEOUT:30*/" , Stop nach 30 Sekunden, aber auch noch nicht selber probiert und es findet sich auch keine Doku dazu. Eventuell ein undokumentierter Entwicklertrick...

Code:
mysql> select /*TIMEOUT:30*/ col1, col2, col3 FROM tabelle1;
Vielleicht eine Anregung...

Grüße
Thomas

Geändert von thomas_w (11.06.2010 um 19:19 Uhr). Grund: EDIT
  Mit Zitat antworten
Alt 14.06.2010, 08:31  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Moin,

danke für die Antworten, aber das hilft mir wohl nicht weiter.

Gruß
Cy
cycap ist offline   Mit Zitat antworten
Alt 14.06.2010, 12:58  
erc
Erfahrener Benutzer
 
Registriert seit: 02.01.2009
Beiträge: 730
PHP-Kenntnisse:
Fortgeschritten
erc wird schon bald berühmt werden
Standard

Zitat:
Zitat von thomas_w Beitrag anzeigen
Eine zweite Idee mit einem Hint "/*TIMEOUT:30*/"
Das ist keine zweite Idee und auch keine Entwicklertrick. Das gehöhrt beides zusammen. Mit show processlist suchst du regelmässig nach Queries die /*TIMEOUT:n*/ enthalten und killst sie wenn sie länger laufen als TIMEOUT.
erc ist offline   Mit Zitat antworten
Alt 14.06.2010, 13:05  
thomas_w
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von erc Beitrag anzeigen
Das ist keine zweite Idee und auch keine Entwicklertrick. Das gehöhrt beides zusammen. Mit show processlist suchst du regelmässig nach Queries die /*TIMEOUT:n*/ enthalten und killst sie wenn sie länger laufen als TIMEOUT.
Ah ja, habe ich bisher nicht gewusst.
Danke, wieder was gelernt.

Grüße
Thomas
  Mit Zitat antworten
Alt 14.06.2010, 13:16  
¯\_(ツ)_/¯
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.814
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Er möchte aber aber die Queries nicht killen. Er möchte sie ja schließlich bis zu Ende ausführen. Das Problem ist nur dass eben alle anderen Queries dadurch verzögert werden, er möchte also den Query langsamer rechnen lassen so dass die anderen Queries nicht verzögert werden.

Ich hab keine wirkliche Idee, aber ich stell es mir problematisch vor wenn dein Query irgendwelche Locks schreibt, denn dann hast du eigentlich keine Chance dass die anderen Queries abgearbeitet werden können.
__________________
▇█▓▒░◕‿‿◕░▒▓█▇
Flor1an ist offline   Mit Zitat antworten
Alt 14.06.2010, 13:22  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Also mein Kollege der MSSQL benutzt sagt das er damit keine Probleme hat, also scheint es rein theoretisch ja machbar zu sein. Bleibt also nur die Frage ob MySQL es kann und wenn ja, wie...
cycap ist offline   Mit Zitat antworten
Alt 14.06.2010, 13:46  
thomas_w
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von cycap Beitrag anzeigen
Also mein Kollege der MSSQL benutzt sagt das er damit keine Probleme hat, also scheint es rein theoretisch ja machbar zu sein. Bleibt also nur die Frage ob MySQL es kann und wenn ja, wie...
MySQL bietet wohl noch keine so umfangreichen Verwaltungs-Tools wie MS-SQL, ORACLE, IBM DB2 etc. Mit diesen DB-Tools kann einer laufenden Abfrage eine bestimmte "Rechenzeit" bzw. Priorität zugewiesen werden.

Wie sieht es mit postgreSQL aus?

Wäre dass nicht auch eine Aufgabe für das "Load-Balancing?" (bin aber kein Admin)

Stellt sich letztlich auch die Frage, wie häufig "langlaufende" SQL entstehen. Wenn häufig, dann entweder die Programme optimieren (damit es nicht mehr so oft vorkommt) oder per EXPLAIN mal die Query/Datenbank optimieren.

Grüße
Thomas
  Mit Zitat antworten
Alt 14.06.2010, 14:05  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Zitat:
MySQL bietet wohl noch keine so umfangreichen Verwaltungs-Tools wie MS-SQL, ORACLE, IBM DB2 etc. Mit diesen DB-Tools kann einer laufenden Abfrage eine bestimmte "Rechenzeit" bzw. Priorität zugewiesen werden.
Mir geht es weniger darum einzelne laufende Querys zu steuern, sondern mehr um das automatische handling. Also wenn ich eine schlechte Abfrage über 5 Tabellen habe die 5 minuten läuft, dann möchte ich, dass die zweite Abfrage, die gleichzeitig ganz andere Tabellen abfragt, nicht darunter leidet.

Zitat:
Wäre dass nicht auch eine Aufgabe für das "Load-Balancing?" (bin aber kein Admin)
Ich baue parallel dazu auch gerade meine Replikationen weiter aus, aber eine wirkliche "Lösung" ist das ja nicht.

Zitat:
Stellt sich letztlich auch die Frage, wie häufig "langlaufende" SQL entstehen. Wenn häufig, dann entweder die Programme optimieren (damit es nicht mehr so oft vorkommt) oder per EXPLAIN mal die Query/Datenbank optimieren.
Siehe Eröffnungspost:
Zitat:
es soll mal ganz schnell (einmalig) nebenbei irgendwas per Hand aus der Datenbank abgefragt werden
Gruß
Cy
cycap ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] 2 MySQL Tabellen abfragen jordanoooo Datenbanken 7 16.02.2010 18:42
Mysql Klasse macht Probleme in verschachtelten / verzweigten SQL Abfragen litterauspirna PHP Tipps 2010 3 16.02.2010 12:54
Datensätze aus SQlite 3 abfragen und in Mysql Speichern. Raintrader Datenbanken 5 14.09.2009 13:04
mySQL - zwei Abfragen zusammenfügen? Tyrra PHP Tipps 2009 8 24.08.2009 14:09
24 MySql Abfragen optimieren steven001 PHP Tipps 2009 9 18.02.2009 00:00
Berechnung über mehrere Abfragen aus mysql Slappi PHP Tipps 2008 2 18.12.2007 14:22
info über mysql status abfragen nieselfriem Datenbanken 4 13.04.2005 09:42
Kann man Mysql Datenbanken abfragen ob Sie verfügbar sind ? Datenbanken 2 12.03.2005 16:39
between datum abfragen mysql hekto Datenbanken 2 12.01.2005 11:07
[Erledigt] MySQL Performance mit PHP5 miserabel Datenbanken 17 10.01.2005 17:24
MYSQL Config Table auslesen? Klappt nicht.. Datenbanken 4 06.01.2005 16:24
Password aus mySQL abfragen und vergleichen ob zu User passt PHP Tipps 2004 2 14.10.2004 10:15
Problem mit 2 gleichzeitigen MySQL abfragen PHP Tipps 2004 2 08.07.2004 13:57
mysql als config Ohrwurm83 PHP Tipps 2004 2 27.06.2004 20:51
[Erledigt] MySQL DB Tabellen Kommentar abfragen Datenbanken 3 13.06.2004 22:41

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql hint, timeout mysql abfrage, php mysql query timeout, performance mysql abfragen, mysql config timeout, mysql einzelne config, mysql schlechte abfrage optimierung, mysql schlechte abfrage, mysql schlechte performance bei laufendem slave, mysql performance bei * abfragen, mysql timeout abfrage, mysql langlaufende sql, mysql config auslesen, mysql wie viele anfragen sekunde, mysql abfragen timeout, mysql abfrage der config.php, mysql query parallele abfragen, mysql config für viele abfragen, config.php sql, php mysql config als tabelle

Alle Zeitangaben in WEZ +1. Es ist jetzt 18:12 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum