首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 連線架構深度解析(下):連線記憶體、事件類型與 RPC 優勢

     編輯:關於SqlServer

承接上篇,深入剖析連線記憶體配置、客戶端請求事件分類,以及為何 RPC 能提升計畫重用效率。

連線記憶體緩衝區

  • 每個連線保留 三個網路封包緩衝區。
  • 緩衝區大小取決於 sp_configure 的「預設網路封包大小」。
  • < 8 KB:從 緩衝集區 配置。
  • ≥ 8 KB:從 MemToLeave 區域 配置。

.NET Framework Data Provider for SQL Server 預設 8 KB → MemToLeave;傳統 ADO 預設 4 KB → 緩衝集區。

客戶端請求事件分類

  1. 語言事件:批次 T-SQL 陳述句(如 SELECT * FROM tbl)。ADO CommandType = adCmdText 時產生。
  2. 遠端程序呼叫 (RPC):呼叫預存程序(CommandType = adCmdStoredProc)。

為何 RPC 優於語言事件?

維度語言事件RPC
參數化依賴伺服器自動參數化(能力有限)顯式參數化,計畫穩定重用
計畫編譯成本相同邏輯不同參數可能產生多份計畫首次編譯後後續重用,節省 CPU/記憶體
執行效率需解析、編譯每批次直接呼叫已編譯程序

最佳實務:高頻、參數化查詢優先使用預存程序 + RPC 呼叫;臨時性、動態 SQL 才用語言事件。如此能大幅降低計畫快取壓力,提升併發效能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved