日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《SqlServer性能分析一》

發(fā)布時間:2025/7/25 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《SqlServer性能分析一》 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

最近,碰到Ado.net連接Sql Server2005數(shù)據(jù)庫,報超出連接池最大容量的錯誤。
這個問題確實碰到不多,也沒想過。
對這個概念,以前總是模模糊糊,知道Sql Server2005數(shù)據(jù)庫有連接池這么個概念。
就這個問題,在網(wǎng)上也看了很多相關(guān)的網(wǎng)頁,有來自www.cnblogs.com,有來自www.msdn.net和www.csdn.net。
總結(jié)了一下這些地方提供的經(jīng)驗,包括以下幾點解決辦法。
1,查看代碼中是否有未close的connection。
2,擴(kuò)大連接池的Min Pool Size 和Max Pool Size。
3,關(guān)閉連接池這個功能,即Pooling = false。

雖然有這么些建議,還是自己來測試一下最踏實。
首先連接池這個功能還是不錯的,雖然會有一些系統(tǒng)開銷,
但對于大訪問量來說,提供連接池的功能可以大大減少connection的創(chuàng)建次數(shù),
這樣最后還是降低了系統(tǒng)的開銷,這樣先排除解決辦法3。
經(jīng)過幾個分別為1萬次循環(huán)的連接測試,
分別是:
t1,Min Pool Siz和Max Pool Size默認(rèn)。 每次open connection ,然后不close()
t2,Min Pool Siz和Max Pool Size默認(rèn)。 每次open connection ,然后close()
t3,Min Pool Siz =1000,Max Pool Size =2000 ,每次open connection ,然后不close()
t4,Min Pool Siz =1000,Max Pool Size =2000 ,每次open connection ,然后close()

t1,很快報錯“超出連接池最大容量”
t2,正常運(yùn)行
t3,報錯“超出連接池最大容量”,比t1報錯時間晚
t4,正常運(yùn)行

這里t2和t4能正常運(yùn)行,當(dāng)然這兩個測試結(jié)果也會有略微不同,
這里先不討論哪個更好的話題,暫且討論哪個好與哪個不好。
t1和t3沒有正常運(yùn)行完。

這里可以說明connection 沒有close造成了運(yùn)行失敗的。
連接池的數(shù)量從哪看?這個我們可以使用SqlServer2005系統(tǒng)表sysprocesses 。
用select * from sysprocesses where dbid= db_id('數(shù)據(jù)庫名') 來查看連接的進(jìn)程數(shù)量,也就是連接池數(shù)。
有些可以手動kill一些連接。

下面系統(tǒng)介紹一下 《SQL Server 連接池 (ADO.NET)》
引用[
.NET Framework 開發(fā)人員指南
SQL Server 連接池 (ADO.NET)
更新:November 2007

連接到數(shù)據(jù)庫服務(wù)器通常由幾個需要很長時間的步驟組成。
必須建立物理通道(例如套接字或命名管道),必須與服務(wù)器進(jìn)行初次握手,必須分析連接字符串信息,
必須由服務(wù)器對連接進(jìn)行身份驗證,必須運(yùn)行檢查以便在當(dāng)前事務(wù)中登記,等等。

實際上,大多數(shù)應(yīng)用程序僅使用一個或幾個不同的連接配置。
這意味著在執(zhí)行應(yīng)用程序期間,許多相同的連接將反復(fù)地打開和關(guān)閉。
為了使打開連接花費(fèi)的系統(tǒng)開銷最小,ADO.NET 使用稱為連接池的優(yōu)化方法。

連接池使新連接必須打開的次數(shù)得以減少。池進(jìn)程保持物理連接的所有權(quán)。
通過為每個給定的連接配置保留一組活動連接來管理連接。每當(dāng)用戶在連接上調(diào)用 Open 時,池進(jìn)程就會查找池中可用的連接。
如果某個池連接可用,會將該連接返回給調(diào)用者,而不是打開新連接。
應(yīng)用程序在該連接上調(diào)用 Close 時,池進(jìn)程會將連接返回到活動連接池集中,而不是關(guān)閉連接。
連接返回到池中之后,即可在下一個 Open 調(diào)用中重復(fù)使用。

只有配置相同的連接可以建立池連接。ADO.NET 同時保留多個池,每種配置各一個。
在使用集成的安全性時,連接按照連接字符串以及 Windows 標(biāo)識分到多個池中。
還根據(jù)連接是否已在事務(wù)中登記來建立池連接。

池連接可以顯著提高應(yīng)用程序的性能和可縮放性。
默認(rèn)情況下,在 ADO.NET 中啟用連接池。除非顯式禁用,否則,在應(yīng)用程序中打開和關(guān)閉連接時,池進(jìn)程會對連接進(jìn)行優(yōu)化。
還可以提供幾個連接字符串修飾符來控制連接池的行為。有關(guān)更多信息,請參見本主題后面的“使用連接字符串關(guān)鍵字控制連接池”。]

我這里簡單的描述了一下這個論題,
詳細(xì)內(nèi)容,參考:
http://msdn.microsoft.com/zh-cn/library/8xx3tyca.aspx
http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlconnection.connectionstring.aspx

?首次放首頁,質(zhì)量欠佳,請海涵。

?

轉(zhuǎn)載于:https://www.cnblogs.com/laiwei85/archive/2009/02/16/1392086.html

總結(jié)

以上是生活随笔為你收集整理的《SqlServer性能分析一》的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。