C#百萬數(shù)據(jù)查詢出現(xiàn)超時問題的解決方法
本文較為詳細(xì)的講解了C#百萬數(shù)據(jù)查詢出現(xiàn)超時問題的解決方法,分享給大家供大家參考之用。具體方法如下:
很多時候我們用C#從百萬數(shù)據(jù)中篩選一些信息時,經(jīng)常會出現(xiàn)程序連接超時的錯誤,常見的錯誤有很多,例如:
Timeout expired. The timeout period elapsed prior to completion of the operation or the server等等
本文就常見的幾種解決方案進(jìn)行說明,感興趣的可以對此加以改進(jìn)與完善。
①.當(dāng)然第一步要查看是否Connection沒關(guān)閉問題,一般新手都會犯這個錯誤,需要認(rèn)真查看一下哦,這個就不詳細(xì)說了。
②.如果將sql語句復(fù)制到查詢分析器中執(zhí)行,如果執(zhí)行時間本來就超過30秒,那么一般采用如下的解決方案:
首先分析引起Timeout的原因,一般是Connection沒關(guān)閉或者SqlConnection.ConnectionTimeout超時,另外一種就是SqlCommand.CommandTimeout引起的, SqlCommand的此方法為獲取或設(shè)置在終止執(zhí)行命令的嘗試并生成錯誤之前的等待時間,
他的默認(rèn)為 30 秒,你可以設(shè)置為0 ,它表示無限制,但是最好不要去設(shè)置0 ,否則會無限的等待下去的,只需要針對查詢分析器的時間,去設(shè)置這個時間就可以了
③.執(zhí)行時間不是很長,但是還是操作超時,那么 也有很多原因,一般經(jīng)常出現(xiàn)的有兩種,asp.Net應(yīng)用程序的請求超時,或者是連接池的連接生存期過去,,因為連接池默認(rèn)值是60秒,那么針對這兩種解決方案為:
解決應(yīng)用程序請求超時:
在web.config中加上以下語句:
<system.web> <httpRuntime maxRequestLength="102400" executionTimeout="720" /> </system.web>
executionTimeout:是允許執(zhí)行請求的最大時間限制,單位為秒
maxRequestLength:指示 ASP.Net 支持的最大文件上載大小。該限制可以防止。大家都懂的。
解決程序池生存周期問題:
在數(shù)據(jù)庫連接字符串中修改:
database=AA; uid=sa; pwd=sa; Pooling=true; MAX Pool Size=1024; Min Pool Size=1; Connection Lifetime=60
至于含義基本上從英文的意思上大家就明白了,呵呵。當(dāng)然Min Pool Size=1這個設(shè)置還有很多講究。
希望本文所述對大家的C#程序設(shè)計有所幫助。
相關(guān)文章
C#基于HttpWebRequest實現(xiàn)發(fā)送HTTP請求的方法分析
這篇文章主要介紹了C#基于HttpWebRequest實現(xiàn)發(fā)送HTTP請求的方法,結(jié)合實例形式分析了C#使用HttpWebRequest類與System.IO類實現(xiàn)發(fā)送HTTP請求相關(guān)操作技巧與注意事項,需要的朋友可以參考下2019-02-02