Miljoenen database queries. Wat voor Hardware ?

Pagina: 1
Acties:

  • Surfer
  • Registratie: December 2001
  • Laatst online: 06-03 23:19
Ok, hier is de vraagstelling:

Ik heb een (nogal grote) M$ Visual Foxpro Database, en daar ben ik (onder andere) het volgende op aan het draaien:

Een tabel van 6 miljoen records wordt doorlopen en wordt vergeleken met een tabel van 30 miljoen records.

Op basis van elk record in de 6 miljoen tabel draait hij een query op de 30 miljoen tabel, en schrijft wat resultaten weg in een andere tabel.

Leuk werk, maar mijn PC is daar een heeeele tijd mee bezig... |:(

Aangezien ik niet zo van wachten houd, moet er dus een nieuwe PC komen die dit hele verhaal een stuk sneller kan draaien. De hamvraag is nu: Wat is het belangrijkste onderdeel in de schakel die zorgt voor een snelle afhandeling van dit verhaal. Bijvoorbeeld processor, geheugen, of juist supersnelle HDD's.

Is het daarnaast interessant om een Dual Processor systeempje aan te schaffen ? Scheelt dat heel veel, of zou je dat met dit soort berekeningen niet merken.

En mijn derde (en jaja, tevens laatste) vraag: ongeacht of ik een single- of een multiproc systeem aanschaf, wat moet er in, een Athlon XP of een Intel Xeon...

Enneh: Geld speelt geen hele grote rol in de keuze, als ie maar snel en betrouwbaar is :)

“I'd give an arm to be ambidextrous!"


Verwijderd

Xeon is voor echt zware taken de beste oplossing maar wil je echte rekenkracht uit je Xeon halen zul je er eentje met veel cache moeten nemen en deze zijn wel $$ maar als geld geen rol speelt (USD 15000,- per stuk ) dan eentj met 2mb cache

Verwijderd

tja als geld ECHT geen rol speelt dan ga je voor de dual xeon met 2 mb cache. Maar uh, dat is een klein beetje erg duur... In ieder geval is het wel de cpu die het rekenwerk doet, dus de zwakke schakel is hier de cpu (hoewel je ook wel aardig wat rammetjes wil hebben :) ).

Je kan natuurlijk ook voor een dual athlon gaan, die best te betalen zijn... Zijn ook snel (hoewel voor deze applicaties de xeon beter is), maar dan kan je van het geld dat je overhoudt nog een leuk autotje kopen ofzo...

Verwijderd

per row een query uitvoeren ?

hmmz, klinkt gewoon alsof je 't gewoon slecht aanpakt :)
kijk eerst eens naar je aanpak, in plaats van je systeem of het database pakket :) want als dat beter kan heeft dat meer effect dan een vette cpu :)

Verwijderd

Mijn eigen FoxPro ervaring leert me dat je meer geholpen bent met enorm veel geheugen dan met multi-proc systeempjes. Het verschil bij bvb een reindex van een dbf'je is enorm. Als je genoeg geheugen in je bak pleurt dan hoeft ie niet voor elke index op je tabel deze tabel opnieuw in te lezen. Hij leest 'em dan 1 keer en gooit dan index na index binnen een fractie van de normale tijd in je cdx'je. Dit gaf bij ons een tijdswinst van 450% na upgrade van 64MB->512MB op een database van 800.000 recs/87 fields/8 indeces. Je kan dit dus best proefondervindelijk vaststellen. Veel succ6

Verwijderd

Foxpro ?
6 miljoen entry's ?

Zou je niet eens gaan denken aan een ECHTE database ? Zoals Oracle ? (dan is een Pentium 1 of AMD K6 met 512MB ruim voldoende)
Die Microsoft rommel is te gaar voor worden.

Tip : (als je toch perse die Foxpro rommel (moet/wil) draaien)

512 tot 2 GB geheugen (meeste impact)
GEEN INTEL CPU (scheelt kilo's)
Volledig SCSI systeem (secundair)
Vergeet Dual CPU, onder alles << Windows 2000 wordt het L A N G Z A M E R) Multiple CPU's ondersteunen en er optimaal gebruik van kunnen maken zijn 2 verschillende dingen.

Verwijderd

Op woensdag 26 december 2001 11:28 schreef sictc het volgende:
GEEN INTEL CPU (scheelt kilo's)
Euh ja neem een Alpha met 8 mb cache. Stoer en geen eens zo duur. Geen AMD nemen want die is echt niet sneller dan een p3 met database records.
Volledig SCSI systeem (secundair)
Ga je zo een pak geheugen kopen en moet alles nog scsi ook. Waar heb je dan de scsi voor nodig?
Vergeet Dual CPU, onder alles << Windows 2000 wordt het L A N G Z A M E R) Multiple CPU's ondersteunen en er optimaal gebruik van kunnen maken zijn 2 verschillende dingen.
Je speelt te veel spelletjes ;) Op een database toepassing word het zeker wel sneller. Als het pakket ook maar multithreading van de CPU's ondersteund. Dus het word S N E L L E R onder een aantal voorwaarden. Anders merk je nauwelijks verschil. Ik werk zelf op een dual p3 866 met 2 gigabyte ECC 133 mhz geheugen en 2 schijven in raid mirror en 4 schijven in raid 5 met een raid controller erachter met 256 mb geheugen erop. Wedden dat die langzamer is als ik 1 cpu eruit trek.

Verwijderd

Sorry hoor, newageperformance, maar ik heb visual foxpro nog NOOIT weten multithreaden -EDIT- multiprocessen -EDIT- op m'n Dell Precision (Dual PIII 450) en SCSI kan idd een verschil maken als je je temp files van foxpro lokaal zet. Probeer het eens. SCSI ruled voor alles wat niet-sequentieel is, zoals bvb databases. En onder FoxPro is geheugen echt wat het verschil maakt. Met alle respect, maar eerst proberen en dan roepen a.u.b. Trouwens, als het over een bewerking gaat die erg moet gaan rekenen (floating point zel te verstaan) wil ik er donder op zeggen dat een AMD/Alpha of iets dergelijks een Intel idd met schaamrood op z'n wangetjes achterlaat. I Rest My Case ;)

Greetz

  • Femme
  • Registratie: Juni 1999
  • Laatst online: 07:13

Femme

Hardwareconnaisseur

Official Jony Ive fan

Met zo'n grote database is het veel RAM en snelle schijven veel belangrijker dan een snelle CPU. Het is zinloos om in een Xeon te gaan investeren als-ie niet genoeg geheugen krijgt.

(PIII) Xeons worden trouwens alleen interessant bij meer dan 2 processors en zulke systemen kosten al snel 25K aan CPU's en mobo. Gooi er gewoon een snelle processor in (Athlon XP 1700+ oid) en veel geheugen. Check of de tabellen goed geïndexeerd zijn, dat scheelt gigantisch in peformance.

Verwijderd

Op woensdag 26 december 2001 21:45 schreef NCP-Viper het volgende:
Sorry hoor, newageperformance, maar ik heb visual foxpro nog NOOIT weten multithreaden -EDIT- multiprocessen -EDIT- op m'n Dell Precision (Dual PIII 450) en SCSI kan idd een verschil maken als je je temp files van foxpro lokaal zet. Probeer het eens. SCSI ruled voor alles wat niet-sequentieel is, zoals bvb databases. En onder FoxPro is geheugen echt wat het verschil maakt. Met alle respect, maar eerst proberen en dan roepen a.u.b. Trouwens, als het over een bewerking gaat die erg moet gaan rekenen (floating point zel te verstaan) wil ik er donder op zeggen dat een AMD/Alpha of iets dergelijks een Intel idd met schaamrood op z'n wangetjes achterlaat. I Rest My Case ;)

Greetz
Als je goed leest weet ik niets over Foxpro, dus ik zeg dat de software het moet ondersteunen, pak ik SQL 2000 kan ik SCSI hebben of IDE voor het uitlezen en vergelijken van de datbase heeft dat 0 procent verschil, het ligt gewoon aan de hoeveelheid ram geheugen.

Mijn alpha proc is IDD sneller dan mijn intel, mijn intel daarintegen vlakt de vloer aan met mijn amd thunderbird op msSQL 2000 niveau.

Misschien is foxpro een heel ander pakket en gaf alleen aan dat het OS het moet ondersteunen. Ok moet wel zeggen dat mijn intel proc een p3 met 512 kb cache op 1,26 ghz en de athlon een thunderbird is 1,2 ghz met 133 mhz geheugen. Dus practisch dezelfde en mijn intel is toch wel een aantal milliseconden sneller. Zal wel aan het moederboard liggen dan he? BTW hij word ook niet zo warm >:)

Maar de alpha blijft idd sneller maar ik heb ook niet anders beweerd. Alleen dat mijn intel sneller is dan die athlon.

En ach mijn werkstation op me werk dat maffe apparaat met die twee processoren daar word toch langzamer met 1 proc. Sommige applicaties schijnen er juist sneller van te worden en sommige weer niet.

En idd heb je gelijk als je de database blijft aanroepen van de hd, dan is scsi sneller maar voor 6 miljoen records dan vermoed ik dat dat best in 1 gigabyte geheugen past. En daarbij je TEMP files niet hoeft te verplaatsen naar de HD :) toch?!

Maar toch ik vind het leuk om het een keer te testen met foxpro op 3 systemen, 1 op dual proc op me werk, 1 op rare supersnelle intel III 1,26 ghz 512 kb cache, 1 op normale amd athlon thunderbird 1,2 ghz 133 mhz geheugen. Vraag me af welke er sneller is. Allen wel gewoon scsi. En minimaal 512 mb ram.

Verwijderd

Je Intel zal het in dit geval idd wel redden van die AMD, maar dan enkel en alleen omdat je AMD versus je Intel PIII flink wat geheugenperformance tekort komt. Om dus Ontopic te blijven, GEHEUGEN, GEHEUGEN, GEHEUGEN ! Veel ervan en zo snel als je het kan vinden.

  • Axel666
  • Registratie: December 2001
  • Laatst online: 13-10-2022
Denk dat je ff op je eigen systeem een performance monitortje moet draaien en kijken wat het meeste belast word en hoeveel geheugen het in beslag neemt. Voor de hoeveelheid geheugen moet je ff aan de grote van de DB denken. Zou mooi zijn als deze makkelijk in je geheugen past, maar hij klinkt wel erg groot. Mocht dat dus niet gaan dan moet je ook zorgen dat er snelle hdtjes in zitten scsi, misschien een raid5 kastje? Meerdere processors is zoals al gezegt alleen nuttig als je app het ondersteunt. Ik heb geen ervaring msfoxpro, maar als je je database in een database server zoals MS SQL kan krijgen zou dit echt heeeel veel schelen.

just my 2 cents

9worlds.net @ hattrick.org


Verwijderd

Ja, ik denk dat een dual athlon toch wel goed genoeg is.

Mijn idee:

- 2x Athlon MP PR1800+ (1533 mhz)
- Tyan Thunder K7 S2462 (dual,VGA,2x LAN, SCSI u-160)
- 4x 512MB ECC Registerd geheugen
- 2x Quantum Atlas II (10.000 rpm, 9,2GB, 8MB cache)

Ik denk dat deze hardware wel voldoet.
Als je het toch iets goedkoper wil hebben kan je de harde schijven altijd nog vervangen door IDE schijfjes en dan ook het moederbord veranderen (vanwege U-160 scsi onboard!)

Verwijderd

wellicht Solid State Disk(s)

bv www.cenatek.com [RocketDrive]

kost een paar centen, maar als je toch al nieuwe hardware wilt...

bovendien zal de harddisk tezamen met de hoeveelheid werkgeheugen wel de beperkende factor zijn.

Verwijderd

Kijk het ligt er aan wat je doet, maar voor een professionele omgeving zijn performance en betrouwbaarheid het meest gediend met een goede schaalbaarheid. Performance onder de maat -> machine erbij. In zo'n optiek ontkom je niet aan een goede database server (DB2, Oracle of SQL server) en een applicatieserver (WebSphere, BEA). Bij een database server ligt de nadruk op geheugen en schijfruimte, bij een applicatie server op de processor en geheugen. Kortom, maar weer eens ff nadenken over datgene wat je aan het doen bent. Is MS Fox Pro wel de juiste oplossing? Gaat de data nog groeien? Gaat het aantal queries nog groeien? Gebruiken meerdere systemen de data? Gebruiken meerdere systemen de betrokken logica? Kunnen ze dat in de toekomst gaan doen? Hoe zit het licensies (Je kunt duizenden guldens besparen met een strategische implementatie)? Hoe zit het beveiligingstechnisch? Hoe zit het met autorisaties (hoe maak je gebruikers aan, waar, wijzigen)?

Verwijderd

Check of de tabellen goed geïndexeerd zijn, dat scheelt gigantisch in peformance.
Nog even een keer gequoot, dit is nl. vaak de grootste bron van winst voor wat betreft snelheid.

Hoe mensen er toch bijkomen dat de CPU de bottleneck is in dit soort gevallen blijft me verbazen. Je HD's en je geheugen zijn de bottleneck imo.

Dus een leuke SCSI raid-array en flink veel geheugen + de juiste indices.

Verwijderd

Dat adviseerde ik ook al:

- 4x 512MB ECC Registerd geheugen
- 2x Quantum Atlas II (10.000 rpm, 9,2GB, 8MB cache)

  • Femme
  • Registratie: Juni 1999
  • Laatst online: 07:13

Femme

Hardwareconnaisseur

Official Jony Ive fan

Het lijkt me wat overdreven om meteen hele dure hardware zoals solid state disks in te gaan zetten. SrFr heeft niet duidelijk aangegeven wat hij allemaal met z'n database doet. Draaien er continue zware queries op dat ding of gebeurt dat maar af en toe? Wat is de omvang van de database? Als je dat weet kun je ook makkelijker bepalen hoeveel RAM je wilt hebben. Is FoxPro geschikt voor zulke grote databases, of kan een goedkoop en misschien wel sneller open source alternatief zoals MySQL-InnoDB en PostgreSQL ook met jouw applicatie werken?
Pagina: 1