Wer knechtet eine Tabelle?

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Wer knechtet eine Tabelle?

Beitrag 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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: Wer knechtet eine Tabelle?

Beitrag 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.
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Wer knechtet eine Tabelle?

Beitrag von Jan »

Hallo Marcus,

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

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Wer knechtet eine Tabelle?

Beitrag von brandelh »

Schreib dir eine LOG File ... wenn das Programm von dir ist
Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Wer knechtet eine Tabelle?

Beitrag 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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Bertram Hansen
Foren-Moderator
Foren-Moderator
Beiträge: 1015
Registriert: Di, 27. Sep 2005 8:55
Wohnort: 51379 Leverkusen
Hat sich bedankt: 28 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

Re: Wer knechtet eine Tabelle?

Beitrag 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')
:wave:
Gruß Bertram
http://www.tobax.de
Mitglied der XUG Cologne
Mitglied der XUG Osnabrück
Beisitzer des Deutschsprachige Xbase-Entwickler e.V.

Solange Kakaobohnen an Bäumen wachsen ist Schokolade Obst!
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Wer knechtet eine Tabelle?

Beitrag 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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: Wer knechtet eine Tabelle?

Beitrag 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.
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Antworten