In mijn C# programma wordt bij een methode aanroep een aantal SQL queries achter elkaar uitgevoerd. Afhankelijk van de hoeveelheid data in de database kan het een aantal seconden duren voor alle queries zijn uitgevoerd. Ik ben bezig met het optimaliseren van de SQL queries, maar dat moet je los zien van deze vraag. Ik wil graag weten of naast het optimaliseren het nuttig is om de SQL queries bijvoorbeeld op te delen in twee groepen en die tegelijk in twee threads uit te voeren.
Bij het profilen zie ik vooral dat het lezen van de data (SqlCeReader.Read() & SqlCeCommand.ExecuteScaler()) de meeste tijd vergen. Ook bij het aanroepen van de methode met de taskmanager open zie ik dat de CPU wel piekt, maar niet echt lang hoog blijft steken (P4 2.8 ghz 2 gigabyte). Waarschijnlijk is het een andere factor dan CPU dat zorgt voor de tijdsduur (de harde schijf?). Is threading alleen nuttig bij CPU intensieve operaties of kan het voordeel bieden bij het uitvoeren van SQL queries? Bijvoorbeeld door de queries op te delen in twee groepen en deze tegelijk door middel van twee threads uit te voeren. Databases kunnen immers wel meerdere connecties aan (ook de Sql compact editie die ik gebruik). Maar ik weet niet of in dat geval de performance zou verbeteren als de harde schijf toch de beperkende factor is.
Is het nuttig om in mijn geval meerdere threads op te starten of moet ik dit enkel toepassen voor CPU intensieve operaties? Is het daarnaast nuttig om threading toe te passen voor operaties van een aantal seconden? Een thread kan natuurlijk altijd als het CPU gebruik een probleem wordt.
Bij het profilen zie ik vooral dat het lezen van de data (SqlCeReader.Read() & SqlCeCommand.ExecuteScaler()) de meeste tijd vergen. Ook bij het aanroepen van de methode met de taskmanager open zie ik dat de CPU wel piekt, maar niet echt lang hoog blijft steken (P4 2.8 ghz 2 gigabyte). Waarschijnlijk is het een andere factor dan CPU dat zorgt voor de tijdsduur (de harde schijf?). Is threading alleen nuttig bij CPU intensieve operaties of kan het voordeel bieden bij het uitvoeren van SQL queries? Bijvoorbeeld door de queries op te delen in twee groepen en deze tegelijk door middel van twee threads uit te voeren. Databases kunnen immers wel meerdere connecties aan (ook de Sql compact editie die ik gebruik). Maar ik weet niet of in dat geval de performance zou verbeteren als de harde schijf toch de beperkende factor is.
Is het nuttig om in mijn geval meerdere threads op te starten of moet ik dit enkel toepassen voor CPU intensieve operaties? Is het daarnaast nuttig om threading toe te passen voor operaties van een aantal seconden? Een thread kan natuurlijk altijd als het CPU gebruik een probleem wordt.
[ Voor 3% gewijzigd door Verwijderd op 25-12-2007 19:38 ]