PDA

Bekijk Volledige Versie : Wegschrijven in database....



ufeg02
13/11/07, 15:42
Hoeveel data kan een server wegschrijven van en naar een database in 1 seconde? Ik ben bezig met een asp-net programma te schrijven dat zeer veel bewerkingen per seconde moet uitvoeren.

Het programma moet elke vijf minuten duizenden records uit een database halen en terug updaten. Is dit met elk systeem mogelijk?

pierce
13/11/07, 15:49
Dat hangt natuurlijk helemaal van het gebruikte systeem af...
Een Quadcore xeon met 15k disken in raid 50 oid zal natuurlijk beter presteren dan een P4 met wat sata disken in raid 1

Dus nee, niet met elk systeem mogelijk.

ufeg02
13/11/07, 15:57
En werk ik best met een sql database of met een acces

sdetroch
13/11/07, 16:06
Zeker niet met MSAcces, deze is hiervoor absoluut niet geschikt.

Als Windows je voorkeur wegdraagt, dan best voor MSSQL 2005 of voor MSQL Express (gratis versie). Met het "nieuwe" SQLExpress zie ik niet veel redenen meer om sowieso nog voor een MDB database te kiezen.

bvankuik
13/11/07, 16:08
Ik ga mee met sdetroch, gewoon een goeie DB pakken als die voorhanden is. Denk ook eens na of je wellicht met een stored procedure de bewerking kan uitvoeren i.p.v. een ASP script.

Ook zal MSSQL zeker de beschikking hebben over een interface die bulk inserts en updates kan doen (Oracle kan dit in ieder geval).

popking
13/11/07, 23:23
Recent ben ik bezig geweest met het opzetten van een EPD systeem. Om te testen hoe snel het werkte vulde ik een flinke database met dummy gegevens.

Op een celeron 2.1 computer met 1 gig werkgeheugen haalde ik met MySQL zo'n 1000 inserts per seconde.

Op een dubbele XEON 2.4 met 2 gig geheugen haalde ik zo'n 5000 inserts per seconde.

Bovenstaande is even 'uit mijn hoofd', ik heb de exacte gegevens niet voorhanden. De servers hadden overigens geen andere taken....

Ik neem aan de SQL Server vergelijkbare resultaten zal hebben, alhoewel MySQL bekend staat om z'n snelheid. Access lijkt me geen handige keuze....

Maar dit alles is natuurlijk eenvoudig te testen!
Maak een script die 10.000 inserts doet en test hoe lang dit duurt.


Toevoeging:
Heb net even een scriptje geschreven...

Op een Intel Core 2 Duo E6320 1,86Ghz 4MB Cache processor / 2 gig intern geheugen
maakt hij ongeveer 10.000 inserts per seconde.

Deze test is overigens zonder indexen op velden. Eerstgenoemde getallen was wel in een table met indexen.

Conclusie... database systemen kunnen best wel wat hebben!

Extra toevoeging...
Verder maak ik gebruik van IDE flutschijven en geen 15K raid 10 of wat dan ook.

In hoeverre de schijven van belang zijn voor de snelheid weet ik niet. Volgens mij kun je de Dbase dusdanig configureren dat veel via een cache wordt gewerkt.
Dat hangt dan wel weer af van de hoeveelheid geheugen die je tot je beschikking hebt en hoeveel andere taken op de server uitgevoerd moeten worden....

Xolphin
14/11/07, 00:05
Wat natuurlijk wel heel veel uitmaakt is wat je invoert. Een enkel integer veld inserten is een stuk makkelijker dan lappen tekst.

Als het elke vijf minuten veel data is, is de interval misschien wel wat te lang :).

wonko
14/11/07, 08:27
- als je veel updates gaat doen, zorg dat je een db engine neemt met row-level-locks (innodb bvb in mysql, dunno hoe mssql hiermee omgaat)
- snelheid is afhankelijk van hoe snel de database de data kan verwerken, ...
- EN hoe snel de database de data naar de disks kan wegschrijven
- Zorg ervoor dat je updates desnoods in bulk gebeuren, elke db heeft hier wel tools voor, zodat de db deze sneller en eenvoudiger kan afwerken.
- laat je db zoveel mogelijk van het werk afhandelen, via stored procedures en triggers waar mogelijk. Je script gaat hoe dan ook trager zijn
- indexen kunnen performance-killers zijn als je de velden veel update.
- meten is weten. Test je script met reƫele (!!!!) testdata, dan weet je wat je kan verwachten.