![]() |
Datenbank: MSSQL • Version: 12 • Zugriff über: ADO
ADO/MSSQL mit Multi Prozessor Board
wir haben eine Clients Server Anwendung mit folgenden Merkmalen
a) ca. 1 Mio .... 50 Mio Datensätze b) komplexere Mathematische Operationen im Client pro Datensatz c) Zurückschreiben der geänderten Daten des Clients wir haben Multi-Threading ADO Zugriff auf die Datenbank und separate Rechnen-Threads im Client implementiert. Die Erhöhung des Thread Counts von 1 ...6 bringt einen deutlichen Performance-Gewinn, danach bleibt die Ausführungszeit konstant unabhängig von der Anzahl der Threads. Vermutlich liegt der Flaschenhals am Datendurchsatz der Festplatte. Lohnt sich hier der Aufbau eines RAID 0 Systems , anhand obiger Beschreibung ? |
AW: ADO/MSSQL mit Multi Prozessor Board
Zitat:
Vielleicht liegt der Flaschenhals auch am billigen Cat4 Kabel das der Admin in seiner verstaubten Kiste gefunden hat und das zufällig die richtige Länge hat ;-) Daher: stellt konkret fest WAS der Flaschenhals ist und behebt dann das Problem - sprich messt während eines Laufs die CPU, Ram, Netzwerk, HDD-Auslastung von Client und Server und fangt an zu analysieren. |
AW: ADO/MSSQL mit Multi Prozessor Board
CPU Nutzung < 10 %
RAM Nutzung < 10 % HDD ~ 40 % der Zeit mit 100 % lt. performance Analysis tool |
AW: ADO/MSSQL mit Multi Prozessor Board
Erst Zustimmung an Lemmy.
Bei den Angaben die Du insgesamt gemacht hast, finde ich nicht, wieviel Benutzer im Spiel sind. Ansonsten: Datenbanken warten (fast) immer auf die Festplatten. Deine Zahlen sind also nicht ungewöhnlich. Was mich irritiert, alles was Last machen könnte (Berechnung) findet auf dem Client statt. Was quält also die Festplatten so? 50 Mio ist nicht wenig, aber mit einem RAID 0 verdoppelst Du "nur" die Geschwindigkeit. Also IO wäre dann nur noch 20% der Zeit auf 100% Last, richtig? Nichts gegen RAID 0, man könnte das sicher noch mit SSD toppen. In der Optimierung der Zugriffe softwareseitig liegt meist aber der Schlüssel für eine viel größere Optimierung. Hier spräche man dann nicht von Verdoppelung, sondern von 2 oder 3 stelligen Faktoren. Diese Zahl ist konkret hier natürlich vollkommen aus der Luft gegriffen, eher ein Erfahrungswert. Manchmal reicht ein Index mehr, manchmal auch einer weniger,.., es ist jedesmal anders. |
AW: ADO/MSSQL mit Multi Prozessor Board
Eine Optimierung des Clients kann man mit einer Pipeline hinbekommen die grob wie folgt aussieht:
|
AW: ADO/MSSQL mit Multi Prozessor Board
Zitat:
Die Rechenthreads drehen Däumchen während sie auf die Daten warten. Zitat:
Bei der geringen Speicherauslastung (des Servers?) solltest Du unbedingt einmal die Konfiguration der DB prüfen. Ansonsten kann ich mich nur den Ausführungen meiner Vorschreiber anschließen. Ohne eine vollständige und detailierte Analyse ist das nur ein Stochern im Nebel. (eine WLAN-Connection mit 47k ist nicht eben eine Autobahn) Gruß K-H |
AW: ADO/MSSQL mit Multi Prozessor Board
Liste der Anhänge anzeigen (Anzahl: 1)
ich habe als Ergänzung den Algo - als PAP dargestellt, es macht hoffentlich unseren Ansatz klar.
Primar habe ich an Info's Tips zum Thema
die Option
bedeutet eine längere Entwicklungszeit ggf. ohne Nutzen wenn ich schon heute nicht den Flaschenhals verstanden habe. Hier ist die Frage nach einer effektiven Analysemethode. |
AW: ADO/MSSQL mit Multi Prozessor Board
Also sicherheitshalbe nochmal:
Unter idealen Bedingungen skaliert das System sauber bis 6 Threads. Der Client hat nichts anderes zu tun? Der Server hat nichts anderes zu tun? Die Sessions sind pro Client nicht limitiert? Das geschieht bei einem Client? Oder auch bei mehreren? Das ist unabhängig von der Leistungsfähigkeit des Clients? Es gibt keine "wahrnehmbaren" Störungen im Serverbetrieb (außer der IO Last selbst)? Gibt es anhaltende Locks auf dem Server? Wieviel Datensätze werden pro Thread bearbeitet? = 1 Verändert die Berechnung die Auswahlkriterien der Datensätze für den Client bzw. für weitere Threads? Gibt es administrationsseitig jemand, der Ausführungspläne der Lese und Schreib Anweisungen geprüft hat? Mich irritiert die Zahl 6, sofern sie immer konstant bleibt, wie hier dargestellt. Hat die Zahl 6 etwas mit den komplexen Berechnungen zu tun? |
AW: ADO/MSSQL mit Multi Prozessor Board
Zitat:
Wenn es wirklich an der HDD liegt (aber wer hat heutzutage noch io intensive Datenbanken auf magnetischen Speichermedien??) sollte das Problem mit einer Samsung 950 Pro für die Datenbank erledigt sein, um hier mal eine konkrete Empfehlung zu äußern. |
AW: ADO/MSSQL mit Multi Prozessor Board
Hallo,
wenn ich lese, dass laut PAP die Berechnung circa eine Sekunde dauert, würde ich vermuten, dass der Flaschenhals dort liegt und nicht im I/O Bereich. Mein erster Gedankengang war, zu empfehlen, die Berechnung direkt auf der Serverseite auszuführen (gespeicherte Prozedur) und somit zumindestens die Netzwerkkommunikation einzusparen, aber das würde die Berechnungszeit natürlich nicht grundsätzlich verändern. Wenn man den Berechnungsalgo nicht wirklich mehr optimieren kann, würde natürlich schnellere Hardware, ggf. mehrere Clients die parallel die Arbeit verrichten, helfen den Zeitaufwand zu minimieren. Bei einer Berechnungszeit von 1 Sekunde, würde ich mir den Berechnungsalgo allerdings auch noch einmal anschauen, ob da nicht doch ein wenig Optimierungspotenzial drinne steckt. mfg |
AW: ADO/MSSQL mit Multi Prozessor Board
Wenn bei der Berechnung jedes Datensatzes ca. 1 Sekunde benötigt wird, dann braucht man im Idealfall
Bei der Menge der Datensätze und dem Thread-Aufbau (Daten lesen, Berechnen, Daten schreiben) spielen die Zeiten für Lesen/Schreiben auch eine Rolle und addieren sich hinzu. Eine CriticalSection sorgt auch noch dafür, dass die Threads sich untereinander ausbremsen. Darum nimmt man dafür eine Pipeline.
|
AW: ADO/MSSQL mit Multi Prozessor Board
Zitat:
|
AW: ADO/MSSQL mit Multi Prozessor Board
Zitat:
Zitat:
|
AW: ADO/MSSQL mit Multi Prozessor Board
Oh, das habe ich übersehen. Danke!
|
AW: ADO/MSSQL mit Multi Prozessor Board
[OT]
Zitat:
Meine Lösungen waren bisher eher gefrickeltes "geht jetzt und hier". [/OT] Gruß K-H |
AW: ADO/MSSQL mit Multi Prozessor Board
bei so was lohnt eigentlich immer ein Blick auf die Omnithread lib
![]() |
AW: ADO/MSSQL mit Multi Prozessor Board
Zitat:
|
AW: ADO/MSSQL mit Multi Prozessor Board
Danke schon mal für die Beiträge, aktuell laufen div. Profiler Messungen
ich melde mich dann wieder |
AW: ADO/MSSQL mit Multi Prozessor Board
@Lemmy
Vielen dank, da schau ich mal rein. Gruß k-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz