Sybase-ASE - Tracing-Anfragen / Prozesse
Wenn es irgendwelche Sybase-ASE-Experten da draußen, ich Frage mich, ob es gibt einen Weg, um von Sybase zu verfolgen alle Anfragen, die es erhält.
Ich habe derzeit ein Programm laufen, dass die in der Regel beginnt die Anzeige ein seltsames Verhalten nach 7 Stunden aus der startup. Ich möchte herausfinden, was ist Sybase in dieser Zeit gemacht, so dass ich das problem zu beheben.
Ich bin mit Sybase ASE 15.5. Und meinem monitoring-server nicht startet, ist für einige seltsame Grund.
InformationsquelleAutor Jdcc | 2010-10-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, es gibt mehrere Möglichkeiten, um trace alle Abfragen, Sybase erhält.
Jedoch gegeben den zweiten Teil Ihrer Frage, wie ich es verstehe, müssen Sie (1) verstehen, was Ihre Abfrage tut (2) monitor Ihre aktiv spid im Zusammenhang mit anderen aktiven spids ... und wenn das nicht reicht, dann (3) überwachen Sie den server; nicht trace, und alle Abfragen. Daher werde ich das verschieben und reagiert wieder der Ablaufverfolgung Elemente zur Verfügung, die in Sybase.
Ihre Verbindung zu ASE ist ein Server-Prozess-Id, oder spid.
SET SHOWPLAN und NOEXEC AUF, und
führen Sie Ihre Abfrage. Dies wird geben
Sie einen sehr guten Einblick in das, was
dein SQL ist eigentlich zu tun, unter
die Abdeckungen. Dies ist eine wesentliche
Voraussetzung, etwas, was jeder
Entwickler sollten vertraut sein mit,
und verlangt vor der Prüfung. Wann immer es fühlt sich an wie Ihre Abfrage zu langsam ist, überprüfen Sie immer die I/O ausgeführt wird: SET STATISTICS IO ON.
sp_who; sp_lock; und sehen Sie Ihre spid
ticken, aufgehängt, warten
sperren blockiert, die andere spids, die Sie festhält, etc. Dies ist die
basic-set, das jeder Entwickler
verwendet werden sollte, die ganze Zeit.
sp_sysmon überwacht die (gesamte)
server. Es kann auf zwei Arten verwendet werden:
ein laufendes monitoring-tool, wie zB
schnappen Sie sich eine volle Stunde von Statistiken, die
die Grundlage für server-Konfiguration
änderungen; und als eine Momentaufnahme, wie zB. greifen
5 Minuten snapsot der server
wenn ein Prozess ausgeführt wird, und
wenn es nicht ist, und untersuchen Sie die
Unterschiede. In der Regel ist dies für
erfahrene Datenbankadministratoren, nicht Entwickler, und Sie müssen sa_role.
Es ist alles in den Handbüchern als online-und PDF-Datei.
Sieben
Stunden ist eine sehr lange Zeit, so dass Sie
werden, müssen über einen cursor oder ähnliches,
und Verarbeitung einzelner Zeilen eher
als sets. Überprüfen Sie für den regelmäßigen nächtlichen batch-jobs (Deponien, update stats, reorgs) wiegt an die 7 Stunden-Marke, einige von Ihnen halten Tabellensperren. Natürlich, wenn der server läuft auf windoof, alle Arten von seltsame Dinge, von Speicher-Lecks nach oben, ist standard-tarif; - bounce-das box jede Woche mindestens.
Mit, dass die Reihenfolge der Verarbeitung, Belastung, sollte man immer auf Auge auf Ihre Transaktion log-und tempdb-Nutzung.
Wenn Sie gekennzeichnete, Sie sind eine Ressource warten, die leicht identifiziert werden können; Sie wird nicht werden "recv sleep", was bedeutet, schlafen, warten, um zu erhalten ein Paket vom client. Überprüfen Sie die WARTEN auf BEFEHL Spalte & sp_lock die Zeit. Ribo ist eine Methode, die für die Verfolgung; hütet Euch vor den Bänden der Ausgabe. Die andere ist die Überwachung. Beide haben eine setup-Arbeit Kosten, aber die Überwachung ist konfigurierbar.
Yup, meine Prozesse sind auf jeden Fall in der "recv sleep" und "WARTEN auf BEFEHL" Staaten. sp_lock zeigt nichts an meiner Prozesse. Ich vermute, dass mein client und der server am Ende wartet auf jedes andere, sondern als eine blockiert, von einer tatsächlichen Sperre. Wenn es keine Verfolgung auf dem ASE-client, dann werde ich haben, um zu überwachen, was mein Programm sendet an den client und die SQL-mein client sendet an den server. Ich gebe Auditing versuchen, wie es klingt wie es keine man-in-the-middle-Ansatz. Ich wusste nicht, dass das konfigurierbar ist, also vielen Dank für die Infos 🙂
Ich habe dies geschrieben, als ein totaler Anfänger, und ich fühle mich jetzt viel besser zu manövrieren um Sybase. Vielen Dank für Ihre Hilfe PerformanceDBA!
Ribo einfacher für dich dann. Der server (Verbindung, spid) ist immer in einem Zustand "warten" für Befehle von dem client, außer wenn aktiv (dann werden Sie sehen, Zustände zu ändern, pio-und cpu-Steigerung; etc). So ist der job hing auf der client-Seite um 7 Uhr abends (mein 2. letzten Absatz oben). hängen Sie herum und tun Sie etwas wütend überprüfung von 6:45 ab. Das Ende ist einfacher zu überprüfen, ohne die Arbeit reqd für Fisch. Vergessen Sie nicht zu Stimmen.
InformationsquelleAutor PerformanceDBA