I have a ASP.Net 3.5 web application. Both the website and SQL-Server are hosted on the same server
.
The whole system is based on Numbers/Data, users need to import
massive data to the system (e.g. using excel spreadsheet), the system needs to show the calculated figures on screen
as well as generate reports
for users.
Currently, there is an Import Server app running on this server, inserting/updating the data to raw data tables
, then calculated the data and insert/update it to an post-processed
table. All these processes are involved in one thread
(could be in one Stored Procedure).
The drawback of this design is: the import app costs
a lot of system resource and take a long time
to run. It locked
the table (e.g. TRANSACTION) and affected user's action on the website. Moreover, the calculated data are hard to be tracked and easy to be miscalculated.
I've tried to create a temp table (View
) in the system to process the data on demand instead of post-processing it into calculated table. But I found the process time (View and SQL Stored Procedure execution time
) is too long to be accepted (5 minutes or more, some query e.g. join...between
or apportion
annual data to daily takes the most processing time).
Hope some experienced guys could give me some advices (or general strategies) on how to improve the design/implementation for the system in all aspects, thanks.
All aspect includes: Multi-Servers, DBMS, Server Apps, Web Service, SQL Server Optimization, SQL Components, the whole system design and architecture etc.