任何人都可以提供一個球場時間(以毫秒爲單位),從C#建立到SQL的新數據庫連接需要多長時間。即連接池必須創建新連接時的開銷是多少?需要多長時間才能創建到SQL的新數據庫連接
回答
這取決於:
- 時間解析DNS名稱IP
- 時候打開TCP套接字或網絡管(其他TCP SOKET的頂部):一般爲3個的IP數據包
- 如果需要加密,則需要使用SSL/TLS進行hanshake:如果SSL/TLS密鑰信息未被重用(即,一次RSA私鑰訪問非常昂貴,則需要5次往返時間加上主密鑰交換)
- 時間爲SQL身份驗證驗證SQL密碼(我相信2往返)
- 時間驗證NTLM/Kerberos進行集成AUTH(1個roundrip協商SPNEGO,5-6往返如果路沿石車票丟失,1個roundtip如果票證是本,如果NTLM選擇4-5往返)
- 時間授權登錄(查找metdata,評估對登錄令牌權限)
- 的時間內運行的任何登錄觸發器
- 時間啓動連接(1個往返與inital SET會話東西批次)
一些更深奧的時代:
- 時間來打開自動關閉數據庫如果在請求(可以包括恢復,usualy沒有)指定
- 時間附着數據庫如果使用AtachDBFile和db尚未連接
- 時間爲SQL 2005 RANU啓動一個「用戶」實例。大約40-60秒。
通常你可以每秒做10-15個新的連接。如果存在問題(例如DNS查找問題,IPsec發佈,SSL問題,Kerberos問題),則每個連接可以輕鬆升級10-15秒。
相比之下,現有的池式連接只需執行sp_resetconnection(即現有通道上的一次往返),甚至可以根據需要避免這種情況。
順便提一下,SQL Server的時間是特定於SQL Server的,我認爲OP的意思是'連接到SQL' – 2010-02-03 00:24:31
感謝您的詳細解答 – Pawel 2010-02-04 18:47:46
這取決於您要連接的數據庫以及它是本地還是跨網絡以及網絡速度。如果一切都是本地的,那麼可能是1或2毫秒(同樣取決於DBMS)。如果更現實的說,它是通過局域網,它仍然可以非常快。下面是一個簡單的例子連接到服務器上的不同的子網(一跳我認爲):
for (int i = 0; i < 5; i++)
{
Stopwatch timeit = new Stopwatch();
timeit.Start();
AdsConnection conn = new AdsConnection(@"Data Source = \\10.24.36.47:6262\testsys\;");
conn.Open();
timeit.Stop();
Console.WriteLine("Milliseconds: " + timeit.ElapsedMilliseconds.ToString());
//conn.Close();
}
以下是它打印的時間。第一個是加載程序集和各種DLL的代價。隨後的有隻有新連接的初始化進行的測量:
Milliseconds: 99
Milliseconds: 5
Milliseconds: 4
Milliseconds: 4
Milliseconds: 4
你總是可以寫上去,打開你的服務器和時間,連接一些代碼。
喜歡的東西:
StopWatch timer = new StopWatch();
timer.Start();
for(int i=0;i<100;++i)
{
using(SqlConnection conn = new SqlConnection("SomeConnectionString;Pooling=False;"))
{
test.Open();
}
}
timer.Stop();
Console.WriteLine(test.Elapsed.Milliseconds/100);
這會得到的平均時間打開和關閉100個連接。請注意,我沒有運行上面的代碼
編輯:根據理查德Szalay的評論禁用連接池。否則,結果將是歪曲
您需要禁用此測試的連接池以產生結果。 – 2010-02-03 15:38:36
- 1. sql連接需要很長時間才能加載
- 2. 連接到的Heroku Postgres數據庫需要很長的時間
- 3. SHA-1需要多長時間才能創建散列?
- 4. 需要多長時間才能在mysql中創建索引?
- 5. 的Adobe AMF有時需要很長時間才能連接
- 6. 從Servlet連接到Oracle數據庫需要很長時間
- 7. ConnectionPool需要很長時間才能在Oracle上使用OCCI創建連接
- 8. SQL查詢需要很長時間才能返回數據
- 9. MYSQL需要很長時間才能讀取數據庫?
- 10. 數據庫項目需要很長時間才能打開
- 11. MySQL左連接需要太長的時間才能返回
- 12. Garmin HRM需要很長時間才能連接
- 13. ESP8266需要很長時間才能連接
- 14. 查詢連接表需要很長時間才能執行
- 15. mysqlnd mysql_connect需要很長時間才能連接
- 16. SQL Server 2008 SP1需要很長時間才能恢復數據庫
- 17. 用ruby創建sqlite數據庫需要很長的時間
- 18. 爲什麼ITextSharp需要很長時間才能創建pdf?
- 19. SecureRandom實例創建需要很長時間才能完成
- 20. 新日誌源需要多長時間才能生效?
- 21. 需要多長時間才能完成Android安裝更新?
- 22. jquery綁定需要多長時間才能建立?
- 23. 需要很長時間才能執行SQL Server的SQL查詢
- 24. WebJob花費太長的時間才能連接到數據庫中
- 25. Flex:時間HTTPService需要多長時間才能加載?
- 26. 通過ODBC創建數據庫需要很長的時間在sql服務器
- 27. 在app_offline.htm到位後,IIS需要多長時間才能關閉?
- 28. 什麼是HikariCP這麼長時間才能創建新的連接?
- 29. 需要多長時間才能破解HMAC sha256摘要私鑰給定數據
- 30. 從Java創建新的AWS策略需要多長時間?
http://wiki.answers.com/Q/How_long_is_a_piece_of_string – Ian 2010-02-04 16:33:48
謝謝 - 我意識到我的問題是相當開放式的,但答案是優秀的,詳細的。謝謝。伊恩的答案是最有趣的! – Pawel 2010-02-04 18:47:28