Seite 1 von 1

Geschwindigkeitsproblem [ERLEDIGT]

Verfasst: Mo, 04. Jun 2012 9:45
von Koverhage
Habe bei 2 Kunden folgendes Problem.

Bei Zugriffe auf einen bestimmten Nummernkreis in der Datenbank sinkt die Geschwindigkeit so drastisch und kein
sinnvolles Arbeiten mehr möglich ist (Dbf und NTX)

Beispiel:
Rechnungskopf (4 Memofelder)
Rechnungspositionen (1 Memofeld)

Der Kunde wird aufgerufen , dann die Rechnungen aus der Rechnungskopfdatei mittels Scope gewählt
und angezeigt.
Wenn ein Kunde aus dem Bereich 1000-1500 gewählt wird, ist es langsam, sonst normale Geschwindigkeit.
Prüfung der Festplatte / Process Monitor, etc. hat nichts ergeben.
Habe die DBF Dateien geprüft, neu erstellt, aus der alten importiert, etc.
hat alles nichts gebracht.

Was kann ich noch tun ?

Re: Geschwindigkeitsproblem

Verfasst: Mo, 04. Jun 2012 11:32
von Tom
1. Extended Locking aktivieren.
2. OpLocking einschalten.

Re: Geschwindigkeitsproblem

Verfasst: Mo, 04. Jun 2012 12:35
von Koverhage
Hallo Tom,,

das mache ich

DbeInfo(COMPONENT_ORDER,DBE_LOCKMODE,LOCKING_EXTENDED)
DbeInfo(COMPONENT_ORDER,NTXDBE_LOCKRETRY,200000)
DbeInfo(COMPONENT_ORDER,NTXDBE_LOCKDELAY,10)

bereits.

Was mir schleierhaft ist, das dies nur in einem bestimmten Nummernkreis passiert.

Re: Geschwindigkeitsproblem

Verfasst: Mo, 04. Jun 2012 12:40
von Tom
Sehr viele gelöschte Datensätze in diesem Bereich? Einfach mal ein Pack+Reindex?

Re: Geschwindigkeitsproblem

Verfasst: Mo, 04. Jun 2012 12:42
von Koverhage
Nein, das hatte ich zuerst vermutet und den Pack und Reindex durchgeführt.

Re: Geschwindigkeitsproblem

Verfasst: Mo, 04. Jun 2012 12:47
von Koverhage
Soviel mir bekannt ist, haben beide Kunden einen Server mit Windows 2008 System.
Kann das daran (SMB2) liegen ?

Re: Geschwindigkeitsproblem

Verfasst: Mo, 04. Jun 2012 13:32
von brandelh
Hi,

schon sehr seltsam das ganze, könnte es sein, dass dieser Nummernkreis deutlich häufiger vorkommt und somit viel mehr Daten zu lesen sind ?
SCOPE überspringt ja den Rest ...

Re: Geschwindigkeitsproblem

Verfasst: Mo, 04. Jun 2012 16:47
von Koverhage
nein, es sind sogar teilweise sehr wenig Datensätze

Re: Geschwindigkeitsproblem

Verfasst: Mo, 04. Jun 2012 16:56
von Herbert
Kann es sein, dass in diesem Bereich die Memofelder einen wesentlich grösseren Inhalt auweisen?
Würde heissen, dass nicht das Suchen langsamer wäre sondern das Weitere (Anzeigen, usw.)

Re: Geschwindigkeitsproblem

Verfasst: Mo, 04. Jun 2012 22:57
von AUGE_OHR
Koverhage hat geschrieben:DbeInfo(COMPONENT_ORDER,DBE_LOCKMODE,LOCKING_EXTENDED)
DbeInfo(COMPONENT_ORDER,NTXDBE_LOCKRETRY,200000)
DbeInfo(COMPONENT_ORDER,NTXDBE_LOCKDELAY,10)

Was mir schleierhaft ist, das dies nur in einem bestimmten Nummernkreis passiert.
"Optimierung" ?

bei "altem" Cl*pper Code hat man öfter Konstruktionen wo die Xbase++ "Optimierung" zuviel des guten tut ...
ich würde zum "testen" alles "abschalten"

Code: Alles auswählen

   SET RUSHMORE OFF       
   SET SMARTFILTER OFF
   SET OPTIMIZE OFF
und auch

Code: Alles auswählen

   DbeInfo(COMPONENT_ORDER,DBE_LOCKMODE,LOCKING_EXTENDED)
mal raus nehmen und "testen" ob es sich "anders" verhält.

Re: Geschwindigkeitsproblem

Verfasst: Di, 05. Jun 2012 7:28
von Koverhage
Jimmy,

bei mir ist die Optimierung ausgeschaltet.

set rushmore off
set optimize off

set smartfilter habe ich nicht, also wohl auch auf aus.

Re: Geschwindigkeitsproblem

Verfasst: Di, 05. Jun 2012 7:30
von Koverhage
Herbert,

nein, habe das extra nochmal geprüft.

Re: Geschwindigkeitsproblem

Verfasst: Di, 05. Jun 2012 8:27
von Herbert
Du gibst uns Rätsel auf.
Hast du dir in einem Viewer die Daten dieses Bereichs mal selbst angesehen? Eventuell sind irgendwelche kryptischen Dinge drin, welche das Verhalten (auch der Indexe) stören könnte.

Re: Geschwindigkeitsproblem

Verfasst: Di, 05. Jun 2012 9:37
von Rolf Ramacher
Hallo Klaus,

gibt es in diesem Bereich, Schrottsätze ?

Re: Geschwindigkeitsproblem

Verfasst: Di, 05. Jun 2012 11:47
von UliTs
Hast Du mal die Indizes neu aufgebaut?
Sind in einem Bereich vielleicht die Indexwerte oft gleich?

Uli

Re: Geschwindigkeitsproblem [ERLEDIGT]

Verfasst: Mi, 06. Jun 2012 10:36
von Koverhage
Es lag an der Memodatei.
Habe (die Memofelder enthielten sehr viele Leerzeichen ohne wirklichen Text)
IF EMPTY(memofeld)
REPLACE memofeld with ""
ENDIF

Dann die Datei kopiert. Diese hatte dann 260.096 Bytes (vorher 10.174.464 Bytes).

Re: Geschwindigkeitsproblem

Verfasst: Mi, 06. Jun 2012 11:14
von Tom
Memodateien wachsen unaufhörlich, und sie werden bei einem DbPack() auch nicht bereinigt. In Xbase++ ist das Verhalten zwar - im Vergleich zu Clipper - etwas optimiert (Wiederverwendung der Speicherposition, wenn möglich), aber grundsätzlich gilt, dass ein veränderter Memo-Eintrag ans Ende der Datei wandert, wenn er mehr Fragmente beansprucht als sein eigenes Original. Dadurch kann man zu einem Datensatz im Prinzip beliebig viele Memo-Einträge haben, von denen nur einer - der letzte - aktuell ist. Um hierdurch möglicherweise entstehende Probleme, die ja auch die Dateigröße betreffen können, zu umgehen, muss man statt eines DbPack() die Datei umkopieren. Dadurch verkürzt sich in aller Regel auch die DBT dramatisch, da Einträge ohne Referenz verschwinden.

Re: Geschwindigkeitsproblem

Verfasst: Mi, 06. Jun 2012 12:21
von Koverhage
Das mit Kopieren oder Importieren war mir bekannt. Hatte die falsche DBT in Verdacht
und die von den Positionen nicht geprüft.
Werde die Datenbereinigung um das erweitern.

Danke.

Re: Geschwindigkeitsproblem [ERLEDIGT]

Verfasst: Do, 07. Jun 2012 12:46
von Koverhage
Zu früh gefreut.

Wenn nur einer im Programm ist funktioniert alles wunderbar.
Sobald sich ein weiterer Nutzer das Programm startet geht das Ding in die Knie,
allerdings wie gesagt nur in einem bestimmten Nummernkreis.

Server: Debian "Squeeze" 32bit
Clients: Alle Windows 7

95 % unserer Kunden haben Netzwerke mit bis 2-15 Clients. Es gibt (soweit mir bekannt) nur 2 Kunden
bei denen es so ein Problem gibt.
Bei dem anderen ist der Server ein Windows 2008 Server, Clients XP