Limitierender Faktor bei SQL-Rechenoperationen

chris-182

Neuling
Thread Starter
Mitglied seit
04.10.2006
Beiträge
84
Hallo,

ich weiß nicht, ob ich hier ganz richtig bin, allerdings wußte ich nicht, in welchem Bereich ich sonst posten sollte.

Also folgendes: Sitze gerade an meiner Diplomarbeit und muss momentan sehr viel SQL und Datamining machen. Konket hab ich einige Tabellen (ca. 100 GB), die ich verknüpfen, auszählen, importieren, exportieren, etc. muss. Das Problem ist nur, dass die Tabellen teilweise aus über 50 Millionen Zeilen bestehen und somit diese relativ einfachen Rechenoperationen Ewigkeiten (teilweise mehrere Stunden) dauern.

Wollt deshalb fragen, ob bei dieser Art an Operationen eher der Arbeitsspeicher oder der Prozessor der limitierende Faktor ist und ob sich durch den Kauf bzw. Erweiterung eines der beiden die Rechengeschwindigkeit spürbar erhöhen lassen würde?

Meine derzeitige Konfig: Gigabyte GA-965P-DS4, C2D E6300, 2 GB RAM
 
Zuletzt bearbeitet:
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
die cpu ist ausreichend! notfalls kannst du die cpu ja noch übertakten. ;)
in deinem fall ist mehr ram und eine schnelle hdd ausschlaggebender.
 
ganz banaler tipp: benutz doch mal den performancemonitor deines betriebssystems während einer solchen operation. bei windows wird im taskmanager die prozessor- und speicherauslastung angezeigt. wenn beides nicht voll ausgelastet ist, könnte es an der festplatte liegen.
 
Dicke Server haben viel RAM, damit die *ganze* Datenbank ins RAM passt. Das verschnellert das ganze ungemein.

Ist bei Dir jetzt aber eher hoffnungslos .. 100 GB ... *uuurgs*
Hauptproblem wird da wohl die Platte sein. Aber selbst, wenn Du sagen wir mal ein Raid 0 machst, wird das nur ein Tropfen auf den heißen Stein sein.

Ob die CPU reicht, siehst Du im Taskmanager, aber das wurde ja bereits erwähnt.

ciao

Alex
 
Danke schonmal für die Hinweise. Hab grad ne Rechenoperation gestartet und die Verläufe im Taskmanager beobachtet:

1.) Der Verlauf der Auslagerungsdateiauslastung ist gerade wie ein Strich und die Auslagerungsdatei bleibt konstant bei 545 MB.

2.) Die CPU-Auslastung des ersten Kerns geht sofort hoch auf 100%. Die des zweiten bleibt eigentlich genau wie vorher. Komme deshalb während der Operation insgesamt auf eine CPU-Auslastung von 52 - 55%. Ist das eigentlich normal, dass nur ein Kern mit dem Rechnen beschäftigt ist?

Dicke Server haben viel RAM, damit die *ganze* Datenbank ins RAM passt. Das verschnellert das ganze ungemein.
Ist bei Dir jetzt aber eher hoffnungslos .. 100 GB ... *uuurgs*
Also die 100 GB sind alle Tabellen zusammen. Die größte ist knapp 4 GB. Die Tabellen, mit denen ich regelmäßig zu tun hab sind so im Schnitt 1 - 2 GB. Und auch eigentlich nicht mehrere auf einmal, sondern meistens nur 2 gleichzeitig. Sonst würde glaub ich mein Rechner zu brennen anfangen. :d

Ne neue Festplatte bringt denk ich nicht soviel, hab ne Samsung Spinpoint 250GB mit 7200 Rpm über SATA dran. Ist nur nicht das allerneuste Modell.


Also was meint ihr? Evtl. doch ne Ramerhöhung auf 4 GB sinnvoll? Oder noch andere Tipps?
 
Also was meint ihr? Evtl. doch ne Ramerhöhung auf 4 GB sinnvoll? Oder noch andere Tipps?
Nachdem ein Core auf 100% geht erstmal ne CPU, aber 4 GB RAM sind bei den aktuellen RAM Preisen auf alle Fälle auch nicht verkehrt.

Nimm am besten nen E8400 und takte den auf 4 GHz ... wird am Meisten bringen.

Wenn Dir das zu teuer ist, dann versuch einen gebraucht zu bekommen, ich nehme an, dass sich bei Deinem Einsatzgebiet die 6 MB Cache überproportional gut machen. Falls es einer besser weiß, bitte korrigieren.

Eventuell könnte ein 64bit OS und ne 64bit DB auch noch was bringen, aber das ist stark spekuliert, könnte schlimmstenfalls auch schlechter sein.

ciao

Alex
 
Zuletzt bearbeitet:
Der E8400 sieht gut aus. Und genauso teuer wie mein E6300 damals :d
Sind aber trotzdem 150 Euro, die eigentlich nicht eingeplant waren. Muss ich noch ne Nacht drüber schlafen, ob ich mir das leisten kann. Würde der denn ohne Probleme auf mein DS4 passen. Hab damals beim Kauf leider nur Revision 1 bekommen. BIOS ist F8.

Mal abgesehen davon: Gibt es eigentlich ne Möglichkeit, das so hinzukriegen, dass beide Kerne gleichzeitig dran arbeiten und nicht nur einer? Würd dann ja auch sonst nix mehr am Rechner machen, da ich eh noch nen Laptop daneben stehen hab.
 
afaik nicht, wenn die software nicht darauf ausgelegt ist. aber was anderes: hast du deinen prozessor übertaktet? wenn nicht, schlummern da mit sicherheit noch einige reserven :-)

die cpu ist auf jeden fall der flaschenhals, wenn sie 100% ausgelastet ist. beim RAM könntest du noch mal schauen wieviel physikalischer speicher verfügbar ist (bei windows xp steht das unten rechts im systemleistungsmonitor).
 
Zuletzt bearbeitet:
Würde nicht unbedingt sagen das mehr RAM direkt die Welt bringen wird. Beim 32Bit OS hast du immernoch das Problem das ein Task max 2 GB Ram "benutzen" kann. Ich geh mal davon aus das du nur einen SQL Instanz hast, also nur 1 SQL Task. Kuck mal ob du in deinen SQL Server noch eine 2te Instanz anlegen kannst. Hat bei einem Kunden von mir sehr viel gebracht, der hatte ca 80GB SQL Datenbanken. Wenn du eine 2te Instanz anlegen kannst dann wirst vom RAM auf jeden Fall was merken, und du könntest die 2te Instanz noch zusätzlich dem 2ten Kern zuordnen, damit währe die CPU dann zu 100% ausgelastet.
 
welche sql-server-software benutzt du? soweit ich weiss, kann beispielsweise der microsoft sql server 2005 mehrere kerne und auch mehrere cpus benutzen. ich bin da allerdings kein experte. vielleicht muss man das extra im server einstellen?
 
Ja der SQL 2005 kann mehrere Kerne auslasten, aber pro Instanz nur einen. Ist beim SQL 2000 aber auch schon so gewesen. Im Prinzip ist jede Instanz eine eigene Anwendung. Schau dir mal den MS SQL 2005 Express an. Der sollte 3 Instanzen können (bin mir nicht 100%tig sicher, kenn ihn nur von der Datev her) und ist wenn ichs richtig weis auch noch umsonst. Hier mal der Download Link:
http://www.microsoft.com/downloads/...b5-0b07-4448-8848-dcc397514b41&displaylang=de
 
Ich benutze den Advantage Database Server, weils den mit der Datenbank von der Uni dazu gab. Ist auch alles in diesem Format.

Bzgl. der SQL Instanz bin ich momentan ehrlich gesagt überfragt. Bin erst am Anfang meiner DB-Arbeit und aktuell erst dabei die Grundlagen von SQL zu erlernen. Was genau hat es damit aufsich?
 
Ich weis nich wie deine DB Software arbeitet aber beim DatevSQL (MS SQL 2005 Express) ist der Server ansich nur eine Art Dienst. Die Datenbanken werden von den Instanzen verwaltet. Jede Instanz ist eine eigene Anwendung, kann also vom RAM her begrenzt werden und einen eigenen CPU Kern zugewiesen bekommen. Die Datenbaken werden fest den Instanzen zugeordnet, am besten so das jede Instanz ungefähr gleich viel zu tun hat.
kleines Rechenbeispiel:
1 SQL Instanz kann nur 1 CPU Kern auslasten und max 2 GB Ram haben (32 Bit OS9
2 SQL Instanzen können 2 Kerne und max 4 GB Ram auslasten
Noch mehr RAM gibts dann aber nur unter einem 64 Bit OS.
Aber wie gesagt ich weis nicht wie das der Advantage Database Server handhabt, aber kuck mal unter Windows bei den Diensten, normalerweis hat jede Instanz einen eigenen Dienst (MSSQL..1, MSSQL..2,....)

hoffe ich konnte dir damit etwas helfen, verabschiede mich jetzt aber ins Bett, muss morgen noch einen neuen W2k3 Server installieren und Domäne einrichten......
 
Zuletzt bearbeitet:
Vielen Dank. Hat mir schon geholfen, muss mich aber da aber wohl noch mehr ins Thema einlesen. Hab mir auch nen Buch zu SQL gekauft, da steht aber nix zu solch technischen Sachen, sondern nur zur Theorie und Sprache (also die Syntax) selbst.

Da die Frage vorhin kam: Übertakten tue ich nicht. Bin erstens nicht der große Computer-Spezi. Und zweitens ist mein Rechner absolut auf Silence ausgelegt, das verträgt sich mit dem Übertakten dann nicht so gut. :d
Aber der E8400 ist auf jeden Fall ne Option, zumal der auch nicht mehr Watt zieht und kaum heißer werden dürfte als mein E6300.
 
Guten morgen.

Bevor du die neue CPU kaufst schau dir mal das mit den Instanzen an. Was ich gestern noch vergessen hab: Beim SQL 2005 Express führt man einfach des Setup nochmal aus, wählt aber Benutzerdefiniert, und da kann man sagen wieviel Instanzen er installieren soll. Könnte bei deinem Programm ähnlih sein. Teste das erstmal, so könntest du die restlichen 50% CPU Power nutzen, die berechnungen sollten dann wesentlich schneller laufen (wenns der RAM und die HDD zulässt). Wenns das nicht bringt kannst immernoch ne neue CPU kaufen.
So ich geh jetzt mal a bissle arbeiten, schaue heut abend nochmal rein. Viel Spas beim testen :)
 
Hmm, leider find ich weder bei der Neuinstallation, noch bei der wiederholten Installation eine Option zur Angabe der Instanzen. Auch in der Dokumentation des Progs find ich nix dazu. Oder heißt das in Englisch jetzt ganz anders? Bzw. wonach sollte ich da (auf Englisch) suchen?

Naja, trotzdem danke für die Ratschläge. Den E8400 kann ich mir übrigens auch abschminken, wegen meines Mainboards (leider nur die erste Revision des DS4). Der schnellste C2D-Prozessor, der gehen würde, wäre der E6700. Weiß allerdings nicht, ob dieser so viel Performancegewinn bringen würde...
 
Zuletzt bearbeitet:
der e6700 hat zwar 2mb mehr cache und ~850mhz mehr takt, aber ob sich das rentiert? glaube weniger! :hmm:
durch das ocen deiner cpu kannst du ebenso mehr leistung aus deinem e6300 rausholen.
 
Denke das es im englischen den gleichen Namen hat. Kanns dir aber leider nicht genau sagen da ich nur mit dem MS SQL arbeite. Musst du denn den SQL aus der UNI nehmen oder ist es dir auch erlaubt eine Andere Software zu verwenden? Denke mal das die Funktionen die gleichen sein werden. Ansonsten kannst noch veruschen den SQL den du hast ein 2tes mal zu installieren, vielleicht legt er dann die zweite Instanz an.?
 
Also auch beim zweiten Installieren tut sich da nix. :confused:

An Software kann ich natürlich benutzen was ich möchte, nur war halt der Advantage Database Server mit der Datenbank dabei und entsprechend war die Datenbank auch in dem passenden Format. Wenn ich jetzt eine andere Software installieren würde, müsst ich ja alles ins andere Format exportieren, oder? Könnte das ja aber über die Nacht machen. Hatte ich aber evtl. sowieso vor, da mein Prof meinte, wenns in MySQL ist, kann ich die Daten direkt in SAS (nen Statistikprogramm, dass ich zur Auswertung nutze) ansprechen. Weiß jetzt natürlich nicht, wie es mit dem MS SQL aussehen würde.

Noch ne andere Frage: Gibt es denn beim MS SQL 2005 eine ordentliche Benutzeroberfläche? Und weißte, wie das bei MySQL mit Benutzeroberfläche und Instanzen ausschaut?
 
Bei mySQL kann ich dir leider nicht weiterhelfen. Aber wie mein vorredner schon gezeigt hat hat der MSSQL eine sehr gut gelunde oberfläche.
Würde dir empfehlen den einfach mal runterzuladen und zu testen. Wenn er dir nicht gefällt / du damit nicht klarkommst kannst ja wider zurück zu deinem alten
 
Bei mySQL kann ich dir leider nicht weiterhelfen. Aber wie mein vorredner schon gezeigt hat hat der MSSQL eine sehr gut gelunde oberfläche.
Würde dir empfehlen den einfach mal runterzuladen und zu testen. Wenn er dir nicht gefällt / du damit nicht klarkommst kannst ja wider zurück zu deinem alten
Alles klar, probiere den mal aus. Sieht ja auf den Bildern ganz bedienerfreundlich aus.

Muss ich bei der Installation bzgl. der Instanzen was bestimmtes beachten? Also einfach das Setup zweimal ausführen und beim zweiten mal auf benutzerdefiniert?
Auf der Seite von MS gibts noch andere Versionen, z.B. SP1, SP2, Advanced Services. Könnte ja evtl. interessant für mich sein. Oder sollte es die von dir verlinkte Version sein?


Edit: Habe grad noch folgendes gelesen:
Die Express Edition des SQL Servers 2005 unterliegt einigen Einschränkungen gegenüber den High-End Versionen. So ist die Größe von Datenbanken auf max. 4GB beschränkt, es wird nur 1 Prozessor und max. 1GB Arbeitsspeicher unterstützt, ein Clustern ist nicht möglich und die Replikation ist eingeschränkt.
Also doch nicht so gut die kostenlose Variante?
 
Zuletzt bearbeitet:
Sorry hatte auf die schnelle die falsche Version rausgesucht. Der Microsoft SQL Server 2005 Express Edition with Advanced Services sollte diese beschränkungen nicht haben. Hier der Link: http://www.microsoft.com/downloads/...b9-13e1-4db9-a3fc-82116d598c3d&DisplayLang=de
Es reicht wenn du ihn einmal installierst, beim benutzerdefienierten Setup sollte man auswählen können wieviele Instanzen er anlegen soll

Es gibt auch noch einige Versionen vom SQL 2008 bei MS, evtl ist da auch noch was dabei. Aber bis jetzt habe ich noch keine Erfahrung mit MSSQL2008
 
Zuletzt bearbeitet:
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh