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

SQL Server 連線架構深度解析(上):客戶端 API、Net-Library 與連線排程

     編輯:關於SqlServer

理解 SQL Server 連線架構對效能調校、疑難排解至關重要。本文從 ADO/OLE DB、ADO.NET 視角剖析客戶端堆疊層次。

1. API 與物件庫層

應用程式透過此層與 SQL Server 通訊:

  • API:ODBC、DB-Library
  • 物件庫:OLE DB、ADO、ADO.NET(ADO 底層呼叫 OLE DB)

現代應用多使用物件庫。ADO.NET 原生提供 SqlConnection、SqlCommand 等類別,直接與 SQL Server 通訊;亦可透過 OleDbConnection 使用 SQLOLEDB,或 OdbcConnection 使用 ODBC。

2. OLE DB 提供者:SQLOLEDB

SQLOLEDB 是微軟為 SQL Server 提供的原生 OLE DB 提供者,隨 SQL Server 安裝,屬 MDAC 元件一部分。ADO 連線字串中出現 SQLOLEDB 即表示使用此提供者。

3. Net-Library:協議轉換層

位於物件庫與網路協議之間,透明轉發請求/回應。支援協議:

  • TCP/IP(最常用)
  • Named Pipes(命名管道)
  • Shared Memory(共享記憶體)── 同機連線最快,繞過實體網路堆疊
  • NWLink、Multiprotocol (RPC) 等

共享記憶體 Net-Library 細節

  • 連線字串指定 (local) 或機器名,或加前綴 lpc: 強制使用。
  • 受同步物件保護,速度受限於核心物件排程與記憶體複製效率。
  • 雖快,但可能限制擴展性,實測後再決定是否採用。

4. 連線與 UMS 排程器

  • SQL Server 啟動時為每個 CPU 建立一個 UMS 排程器。
  • 新連線指派給連線數最少的排程器,連線期間不更換。
  • 多連線應用注意:若工作負載集中在同一排程器的連線上,會造成 CPU 爭用。建議平衡工作負載或重新連線分散至不同 CPU。

下篇將探討連線記憶體緩衝區、語言事件與 RPC 差異、參數化對計畫重用的影響。

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