共計(jì) 799 個(gè)字符,預(yù)計(jì)需要花費(fèi) 2 分鐘才能閱讀完成。
自動(dòng)寫代碼機(jī)器人,免費(fèi)開通
ASYNC_NETWORK_IO 或 NETWORK_IO
翻譯自:https://mssqlwiki.com/sqlwiki/sql-performance/async_network_io-or-network_io/
什么是 ASYNC_NETWORK_IO 或 NETWORK_IO?
當(dāng)查詢執(zhí)行時(shí),SQL Server 處理結(jié)果,并將它放到輸出緩存,發(fā)送給客戶端或應(yīng)用程序。
客戶端或應(yīng)用程序然后從輸出緩存獲取結(jié)果,處理數(shù)據(jù),并發(fā)送確認(rèn)信息給 SQL Server。如果客戶端或應(yīng)用程序花了很長(zhǎng)時(shí)間發(fā)送確認(rèn)信息,那么 SQL Server 在處理額外結(jié)果之前等待 ASYNC_NETWORK_IO(SQL Server 2005/2008) 或 NETWORK_IO(SQL Server 2000)。
這個(gè)等待類型的影響:
1.SQL Server 將不會(huì)釋放被查詢持有的鎖,除非客戶端收到確認(rèn)信息。這可能導(dǎo)致阻塞。
2. 查詢持續(xù)時(shí)間增加,因此查詢會(huì)很慢。
如何排除 ASYNC_NETWORK_IO 或 NETWORK_IO 等待類型故障?
限制結(jié)果集:限制從 SQL Server 獲取的行數(shù)。很多應(yīng)用程序設(shè)計(jì)者從整個(gè)表不使用 Where 從句過濾而獲取數(shù)據(jù),并在客戶端過濾。這是非常錯(cuò)誤的方式,應(yīng)該在服務(wù)端過濾。
如果需要從服務(wù)器獲取大量的行,并且如果其他會(huì)話由于 ASYNC_NETWORK_IO 或 NETWORK_IO 正在阻塞,那么插入所有行到臨時(shí)表,然后從臨時(shí)表查詢。
檢查客戶端應(yīng)用程序的性能:檢查是否客戶端或應(yīng)用程序系統(tǒng)正經(jīng)歷著系統(tǒng)資源瓶頸。如果有系統(tǒng)資源瓶頸,應(yīng)用程序?qū)⒉荒芨焯幚斫Y(jié)果集。
網(wǎng)絡(luò):檢查 SQL Server 和客戶端或應(yīng)用程序系統(tǒng)之間的網(wǎng)絡(luò)速度。如果網(wǎng)絡(luò)很慢,應(yīng)用程序不能更快獲取結(jié)果。
NOLOCK 提示或快照隔離級(jí)別:檢查是否你可以使用 NOLOCK 提示或快照隔離級(jí)別。
向 AI 問一下細(xì)節(jié)
丸趣 TV 網(wǎng) – 提供最優(yōu)質(zhì)的資源集合!