我寫的東西就像一個網絡爬蟲,它的引擎遵循下列步驟操作:技巧優化這個.NET履帶式算法
- 閱讀RSS鏈接(參數)
- 定義(中)RSS項目列表
- 由一個單獨的查詢
如果鏈接是新的話,會由一個單獨的查詢插入字段DB檢查數據庫(SQL Server)的各環節存在
Public Sub MyTickHandler() Dim NewItems As New List(Of Structures.RSSItem) Dim founded As Boolean = False NewItems = RssReader.ParseRssFile(RssURL) Dim connString = Configs.NewsDBConnection Dim myConnection As SqlConnection = New SqlConnection("Server=localhost;Database=db;Integrated Security=SSPI;;Connection Timeout=45;Max Pool Size= 300") myConnection.Open() For Each item In NewItems Dim cmdString As String = "SELECT id FROM posts with (nolock) WHERE link LIKE '" & item.link.Trim.ToLower & "'" Dim TheCommand As SqlCommand = New SqlCommand(cmdString, myConnection) Dim result = TheCommand.ExecuteScalar() If result Is Nothing Then TheCommand = New SqlCommand("INSERT INTO posts (link) VALUES ('" & item.link.ToLower.Trim & "')") TheCommand.Connection = myConnection TheCommand.ExecuteNonQuery() TheCommand = New SqlCommand("INSERT INTO queue (link,descrip,site,title,category) VALUES ('" & item.link.ToLower.Trim & "','" & StringToBase64(item.description) & "','" & RssSite & "','" & StringToBase64(item.title) & "','" & RssCategory & "')") TheCommand.Connection = myConnection TheCommand.ExecuteNonQuery() End If TheCommand.Dispose() Next myConnection.Close() myConnection.Dispose() SqlConnection.ClearPool(myConnection) End Sub
這適用於單一呼叫。
但我有一些關於150 Rss鏈接我應該通過線程每隔2分鐘檢查它們中的每一個,所以通過增加SQL查詢的裝載,這個過程以及sql server不會響應和應用程序崩潰! !
我嘗試了一些提示,如增加sql服務器響應超時,但它根本沒有幫助。
這個過程有什麼更好的方法或提示?
感謝
可能是您的'LIKE'查詢導致性能下降。運行SQL跟蹤找出。如果不是這樣,請在探查器下運行該應用程序以查找它花費的時間。 – 2015-02-07 17:33:55
@ 500-InternalServerError我在單個處理之前嘗試了分析,並且所有命令都正常,但實際上分析器不會讓進程以150個高處理線程以正常方式工作!謝謝 – ShayanKM 2015-02-07 17:53:57