Seite 1 von 1

Wer knechtet eine Tabelle?

Verfasst: Di, 21. Jun 2022 7:38
von Jan
Moin,

eine Frage, die ich mir immer mal wieder stelle: Wie bekomme ich heraus, wer gerade wie ein Wilder eine Tabelle knechtet?

Wir haben beim meinem Kunden einen ADS laufen, Tabellen darin als FOXCDX, propritärer Zugriff. Und manchmal legen Mitarbeiter den komplett lahm, weil die meinen mitten im allgemeinen Getümmel eines Arbeitstages eine Mega-Auswertung fahren zu müssen. Wenn ich jetzt wüsste wer das ist könnte ich dem mal einen netten Tipp geben (irgend was zwischen Blaues Auge beim ersten Mal und Hand ab im Wiederholungsfall). Nur - wie bekomme ich das raus?

- Der ARC sagt mir zwar, wer alles auf welcher Tabelle rumturnt. Aber nicht wie intensiv.
- Der Ressourcen-Monitor des Servers, auf dem der ADS läuft, sagt mir zwar die Höhe der Lese- und Schreibzugriffe auf einer Tabelle, aber nur gesamt, ohne den User zu unterscheiden.

Was für Möglichkeiten gäbe es sonst noch?

Jan

Re: Wer knechtet eine Tabelle?

Verfasst: Di, 21. Jun 2022 7:54
von Marcus Herz
Wenn die Abfragen als SQL laufen, gibt's ein Register im ARC, wo die einzelnen SQL Befehle mit % Laufzeit angezeigt werden. Schau dir das mal an.
Dazu reichts es ja schon, statt eine Tabele mit USE zu öffnen, diese mit select * from <table> anzuprechen.

PS: Ganz so einfach doch nicht, der SQL Monitor zeigt ja das an, solange das SQL ausgeführt wird. Ist dann die Tabelle mit select .. geöffnet, erscheint dort auch nichts mehr.

Re: Wer knechtet eine Tabelle?

Verfasst: Di, 21. Jun 2022 8:00
von Jan
Hallo Marcus,

leider nein. Alles per Db...()-Funktionen.

Jan

Re: Wer knechtet eine Tabelle?

Verfasst: Di, 21. Jun 2022 8:44
von brandelh
Schreib dir eine LOG File ... wenn das Programm von dir ist

Re: Wer knechtet eine Tabelle?

Verfasst: Di, 21. Jun 2022 9:04
von Jan
Moin Hubert,

was soll ich denn da loggen? Es gibt dutzende Programme mit hunderten von Funktionen, die auf mehr als 250 Tabellen zugreifen. Und ich brauch ja nicht DAS da einer drauf zugreift, sondern wie heftig. Würde ich jeden Zugriff loggen wäre die Festplatte sehr schnell sehr voll.

Jan

Re: Wer knechtet eine Tabelle?

Verfasst: Di, 21. Jun 2022 10:07
von Bertram Hansen
Hallo Jan,

ich habe mir eine kleine Anzeige über dieses Funktion gebaut. Damit sehe ich welcher User gerade welche Tabelle geöffnet hat. Und ich muss dafür nicht immer den Architekten starten.
EXECUTE PROCEDURE sp_mgGetConnectedUsers()
EXECUTE PROCEDURE sp_mgGetUserTables('AKTUELLER-USER')

Da gibt es noch weitere ADS Funktionen. Vielleicht ist da etwas für dich dabei.
EXECUTE PROCEDURE sp_mgGetConfigMemory()
EXECUTE PROCEDURE sp_mgGetAllTables()
EXECUTE PROCEDURE sp_mgGetActivityInfo()
EXECUTE PROCEDURE sp_mgGetWorkerThreadActivity()
EXECUTE procedure sp_mgGetInstallInfo()
EXECUTE PROCEDURE sp_mgGetTableUsers('AKTUELLER-USER')

Re: Wer knechtet eine Tabelle?

Verfasst: Di, 21. Jun 2022 10:17
von Jan
Hallo Bertram,

ja, sowas ähnliches habe ich auch gemacht. Allerdings mehr um zu schauen, wer gerade welchen Satz in welcher Tabelle gerade lockt.

Aber die Anzeige, wer auf welcher Tabelle ist, ich hier ja nicht. Ich brauche halt eher eine Mischung aus ARC (der nur liefert "wer ist da gerade drauf?") und Ressourcen-Monitor (der nur liefert "wie heftig wird da gerade von allen gemeinsam drauf rumgerödelt?"). Also ein "Wer rödelt gerade wie stark auf dem ADS allgemein rum"? Bis auf Tabellenebene müsste das (jedenfalls für diesen Zweck) vermutlich gar nicht sein.

Jan

Re: Wer knechtet eine Tabelle?

Verfasst: Di, 21. Jun 2022 11:28
von nightcrawler
Hallo Jan,
eingebaut gibt es da nichts. Ähnlich wie Bertram behelfe ich mir beim Suchen nach einem Performance-Leck der SP. Ich speichere dazu alle Ergebnisse bei guter Performance und dann bei schlechter und schaue, wo die Unterschiede im allgemeinen liegen.