05-27-2009 11:07 PM
We have a client server application which deals with lot of data manipulation using stored procedures on the Server ( 8 GB RAM and 450 GB Hard Disk). Our client is developed in .Net 2003 (1 GB ram, 80 GB Harddisk)
I would like to know that in this scenario how can we implement Mutithreading? Will it be helpful in improvising the performance of the application with respect to processor utilisation, can we re-direct commands ( in our case Stored Procedures ) to different processors on servers.
05-27-2009 11:29 PM
What Database server are you working with on the server?
What is the client doing? It the network the bottleneck? You can use threading on the client (.Net 2.0). However, it depends on the work you're doing on the client.
You can offer a more responsive application or you can use asynchronous I/O. There are many ways using even .Net 2.0 to take advantage of multithreading.
06-02-2009 01:57 AM
Thaks for the Information.
Further to your post I would like to update you on following points
1. Database server which we are using - SQLSERVER2005 and is placed at a central location.
2. Client application is written in .NET1.1.
3. Its a windows based application.
4. Following activity is carried out at client:
a. Data retreival of data from sqldatabase.
b. Doing calculation on the data.
c. Updating data in the database.
d. Calculation logic is written at database level in stored procedures.
e. Since we are dealing with huge amount of data. Application takes long time populate data or any other
5. we have removed network bottleneck by imlpementing businesslogic in stored procedure at database level.
Based on the above points we need to reduce the time taken for carrying out various database transaction
We have discussed this and have asked to implement Multithreading in our client application.
Now my question is if we are implementing threading in our Application will it give some improvement by means of bringing down the time which is taking for completing the database level transaction/ Activity.
06-02-2009 04:10 PM
Database performance is a very complex topic. Can more data be provided to show if your bottlenecks are indeed in single threading? Have you worked through the Microsoft procedures for evaluating SQL Server 2005, such as this paper shows: http://download.microsoft.com/download/1/3/4/134644fd-05ad-4ee8-8b5a-0aed1c18a31e/TShootPerfProbs.do...
A threading bottleneck is probably indicated if one core is maximum busy, other cores are idle, and the disk I/O is not maxed out.
Hope this is helpful,
06-03-2009 11:03 AM
If calculation logic is written at database level in stored procedures and application takes long time pupulating data, it doesn't seem to make sense to use multithreading at the client.
This kinds of applications usually need a redesign in their algorithms in order to take advantage of multicore with multithreading. I would create a multithreading agent running the businesslogic instead of using stored procedures. Just a possibility.