我需要提高桌面應用程序(.net)的性能,該應用程序旨在讀取數據庫並基於XBRL(可擴展商業報告語言)創建xml文件。它使用UBMatrix創建XBRL分類標準。.net 3.5桌面應用程序和SQL Server 2008性能優化
如果特定數據的大小很小,應用程序可以正常工作。但是,如果數據很大,應用程序將花費超過30分鐘來生成文件。客戶端數據總是很大/很大。所以應用程序需要更多時間來生成文件。
我的任務是優化應用程序以減少創建xml文件所花費的時間。當我檢查應用程序時,我發現應用程序正在以這種方式運行。
啓動
- 創建連接到數據庫
- 得到的第一組數據(此表(表1)過大)。並且查詢將圍繞15-30 K行返回的dataTable
- for循環0到datatable.Rows.count
- 檢查一些條件
- 從數據庫獲取數據。 (這個表(table2)也比(table1)太大
- 發送數據形成xbrl並寫入xml(這是由第三方應用程序UBMatrix完成的)不能編輯創建xbrl的代碼-xml文件。
同樣有3〜4組數據,將處理
在我的觀察,我們能夠避免DB for循環調用。循環之前獲取的所有數據。當我檢查了查詢,有子查詢,不存在(select * from table)等可以替換爲連接,不存在(從表中選擇1)
但是應用程序仍然需要循環處理。我也在考慮使用線程,以便我可以根據數據的大小創建線程並同時處理它。
如
- 如果有100 rows.there將100項,以XML文件(XBRL)
- 所以我會讓50,50和兩個線程,這將產生兩個xml文件運行。最後我會將兩個文件合併成一個xml文件。
因此,第0個問題和第50個問題的處理可以同時開始。目前在For循環中,第0個將處理,第99個將在最後處理。我不確定這個想法。任何可以提出/分享你的想法。任何幫助將不勝感激。在此先感謝