| 

.NET C# Java Javascript Exception

0
Gibts ne Möglichkeit bei Oracle, MySQL oder MSSQL einen Query zu pausieren?
Ich meine, so dass ich einen anderen Query dem laufenden vorziehen kann...?

Das Problem ist eigendlich, dass ich nicht genügend leistung aufbringe um 2 fette Querys gleichzeitig flüssig auszuwerten...

Was kann ich da machen...? (!Außer neue Hardware kaufen!)
News:
15.03.2011
DerPunk 1,2k 1 7
2 Antworten
1
Bezugnehmend auf Khalid's Antwort muss ich leider widersprechen.

Es gibt unter MSSQL die Möglichkeit CLR-Procedures zu schreiben welche mit jeder beliebigen .Net-Sprache geschrieben werden könnne. Du könntest dir also eine "spPause" als CLR-Procedure bauen und an jeder stelle die du möchtest verwenden.

Sinnvoll ist es sicherlich aber nicht.

Besser wäre es den Ausführungsplan sich anzuschauen und dich geschickte Optimierungen die Engpässe zu entfernen.

Folgende Optimierungsmöglichkeiten würde ich als erstes probieren:
- Index-Optimierung
- mit dem Tool Contig von Sysinternals (Microsoft) das Datenbank-File zu defragmentieren
- mit der Procedure "sp_updatestats" die Index-Statistiken neu berechnen
15.03.2011
Floyd 14,6k 3 9
Floyd 14,6k 3 9
Und was soll die Prozedur "spPause" dann bringen? Eine laufende Query nach dem Motto "SELECT..." kann man nicht pausieren. Da hilft auch eine SP nicht weiter.

Von externen Tools zum Defragmentieren rate ich ab. Damit bringt man sämtliche Statistiken und Indizes durcheinander, da sich die Pages ändern und der SQL Server davon nichts mitbekommt.

Dafür gibt es Wartungspläne mit Index Defragmentierung und ähnliches.
Khalid 15.03.2011
Ups! Den mit dem Defrag hab ich missverstanden. Das kann unter umständen doch was bringen.
Khalid 15.03.2011
Mir war nicht bewusst das es um - ein - select geht. Ich nahm an du hast mehrere Anweisungen mit z.B. Temptabellen und ähnlichem.
Floyd 15.03.2011
2
Das folgende bezieht sich alles auf MSSQL:

Ein Query, welches zum Server gesendet wurde, kann nur komplett abgebrochen werden. Pausieren ist nicht möglich. Als erstes würde ich dir empfehlen die Ausführungspläne der Abfragen anzuschauen und zu überprüfen wo engpässe bestehen. Meist lassen sich längere Abfragen durch geschicktes setzen von Indizes um ein vielfaches beschleunigen.

Wenn du z.B. im Ausführungsplan Index Scans, oder gar Table Scans hast, würde ich dir raten die Abfragen zu überarbeiten oder halt - wie gesagt - bessere Indizes zu platzieren.
15.03.2011
Khalid 490 2
ich hab die Indizes denk ich schonmal ganz gut platziert...
eine normale abfrage dauert nurnoch 10-30min unstadt 4-5h...
ich sollte wohl dazu sagen, dass in meiner db mehr als 4mio Datensätze sind...
DerPunk 15.03.2011
1
4mio Datensätze sind ja nicht viel. Hinzu kommen noch Dinge wie Normalisierung usw. Ganz wichtig bei komplexen Queries ist es, die Ausführungspläne zu verstehen.
Khalid 15.03.2011
1
4 mio datensätze sind eigentlich nicht allzuviel. wieviele davon entsprechen den in der where klausel angegebenen werten? ich kann mich erinnern, aus 300 millionen datensätzen mit einer vernünftigen where klausel innerhalb von sekunden daten bekommen zu haben. daher denke ich, dass 10 bis 30 minuten eher schwach sind.
nabuchodonossor 15.03.2011
Ich versuchs mal ordendlich dazustellen:
SP1 | SP2 | SP3 | SP4
1 | la | la8 | dat
2 | lo | put | dat
3 | lu | 89e | dat
Das iss so mein system...
das problem ist, das ich bei normalen abfragen SP2 abfrage, bei anderen SP2 und SP3 und bei wieder anderen sogar SP2, SP3 und SP4...
ich hab da schon viel mit den indexen rumgespielt, und hab jetz ein wie folgt (glauch is doof):
Index:(SP2; SP3; SP4)
DerPunk 15.03.2011
1
Der Index über 3 Spalten ist garnicht mal so schlecht. Wichtig ist das du in der Where-Klausel auch die richtige reihenfolge einhällst, also nicht "where sp4=1 and sp2=2 and sp3=0" sondern "where sp2=2 and sp3=0 and sp4=1" sonst kommt der Optimizer durcheinander.
Floyd 15.03.2011
ah ^^ ok
hab grad gesehn, dass das bei mir nich inna richtigen reihenfolge iss... ich werds gleich ma probieren...
thx schonmal
DerPunk 15.03.2011

Stelle deine Mysql-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH