【发布时间】:2012-07-03 18:45:19
【问题描述】:
我有一个 ASP.Net 3.5 Web 应用程序。网站和 SQL-Server 都托管在 same server。
整个系统是基于Numbers/Data的,用户需要import海量数据到系统(例如使用excel电子表格),系统需要显示on screen的计算数字以及生成reports用户。
目前,此服务器上运行着一个导入服务器应用程序,将数据插入/更新到raw data tables,然后计算数据并将其插入/更新到post-processed 表中。所有这些过程都在one thread 中涉及(可以在一个存储过程中)。
这种设计的缺点是:导入appcosts会占用大量系统资源并占用long time运行。它locked 表(例如 TRANSACTION)并影响了用户在网站上的操作。而且计算出来的数据难以追踪,容易计算错误。
我尝试在系统中创建一个临时表 (View) 来按需处理数据,而不是将其后处理到计算表中。但是我发现处理时间(查看和 SQL 存储过程execution time)太长而无法被接受(5 分钟或更长时间,一些查询例如join...between 或apportion 每年的数据到每天需要最多的处理时间)。
希望有经验的人能给我一些建议(或一般策略),如何从各个方面改进系统的设计/实现,谢谢。
所有方面包括:多服务器、DBMS、服务器应用程序、Web Service、SQL Server 优化、SQL 组件、整个系统设计和架构等。
【问题讨论】:
-
你的架构和使用的逻辑是什么?西斯?或其他或特定程序
-
@Aghilas Yakoub 这是一个 n 层应用程序,在 Data-Access-Layer 中使用 ADO.net。所有数据读/写都依赖于 StoredProcedures。它使用的是 SQL Server 2008。我们不擅长数据库优化。
-
尝试使用 SSIS。速度快,适合数据导入
标签: asp.net .net sql-server performance import