Scheduler&Task&Worker&Thread&Request&Session&Connection OF MSSQL
MSSQL一直以來被人們認為簡單、好學,但等到大家掌握了入門操作,深入理解起來又覺得非常的“擰巴”,尤其是對用慣了Oracle的同學來說,究其根本原因,無非是MSSQL引入和暴露了太多的概念、細節和理論層,而Oracle恰恰遮蔽了這些,比如下面講到的這些概念,即使是使用很久MSSQL的同學來說,也未必就真理解的正確,下面這段文字,很好的解釋了MSSQL中的幾個基本概念:
Scheduler (SOS Scheduler)– the object that manages thread scheduling in SQL Server and allows threads to be exposed to the CPU (described in sys.dm_os_schedulers). This is the all-powerful but benign and graceful master whom everyone abides. He does not control things but lets the workers work with each other and relies on their cooperation (co-operative scheduling mode). Each scheduler /master (one per logical CPU) accepts new tasks and hands them off to workers. SOS Scheduler allows one worker at a time to be exposed to the CPU.
Task –a task represents the work that needs to be performed (sys.dm_os_tasks). A task contains one of the following requests: query request (RPC event or Language event), a prelogin request (prelogin event), a login request (connect event), a logout request (disconnect event), a query cancellation request (an Attention event), a bulk load request (bulk load event), a distributed transaction request (transaction manager event). A task is what the Master is about – it is what defines its existence. Note these are tracked at the SOS scheduler layer (thus dm_OS_tasks)
Worker (worker thread) – This is the logical SQL Server representation of a thread (think of it as a wrapper on top of the OS thread). It is a structure within the Scheduler which maintains SQL Server-specific information about what a worker thread does. sys.dm_os_workers. Workers are the humble servants who carry out the task assigned to them by the Master (scheduler).
Thread – this is the OS thread sys.dm_os_threads that is created via calls like CreateThread()/_beginthreadex(). A Worker is mapped 1-to-1 to a Thread.
Request is the logical representation of a query request made from the client application to SQL Server (sys.dm_exec_requests). This query request has been assigned to a task that the scheduler hands off to a worker to process. This represents query requests as well as system thread operations (like checkpoint, log writer, etc); you will not find login, logouts, attentions and the like here. Also, note that this is a representation at the SQL execution engine level (thus dm_EXEC_requests) not at the SOS Scheduler layer.
Sessions – when the client application connects to SQL Server the two sides establish a "session" on which to exchange information. Strictly speaking a session is not the same as the underlying physical connection, it is a SQL Server logical representation of a connection. But for practical purposes, you can think of this as being a connection (session =~ connection). See sys.dm_exec_sessions. This is the old SPID that existed in SQL Server 2000 and earlier. You may sometimes notice a single session repeating multiple times in a DMV output. This happens because of parallel queries. A parallel query uses the same session to communicate with the client, but on the SQL Server side multiple worker (threads) are assigned to service this request. So if you see multiple rows with the same session ID, know that the query request is being serviced by multiple threads.
Connections – this is the actual physical connection established at the lower protocol level with all of its characteristics sys.dm_exec_connections . There is a 1:1 mapping between a Session and a Connection.tr
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8484829/viewspace-2149975/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [MSSQL]mssql海量高效分頁儲存過程SQL儲存過程
- MSSQL---extentsSQL
- mssql程式塊SQL
- 【MSSQL】MSSQL 從Express版本升級到Enterprise版本SQLExpress
- 常用MSSQL語句SQL
- GoldenGate GETTRUNCATES MSSQLGoSQL
- MSSQL Rebuild(重建)索引SQLRebuild索引
- onethink如何支援MSSQL?SQL
- mssql sqlserver 索引專題SQLServer索引
- GoldenGate Oracle MSSQL DateGoOracleSQL
- GoldenGate Oralce到MSSQLGoSQL
- select the lock block in MSSQLBloCSQL
- mssql論壇集錦SQL
- MSSQL Server Login and DBUserSQLServer
- 清除MSSQL history 記錄SQL
- 在jboss下,有多個mssql資料庫,如何修改mssql-service.xmlSQL資料庫XML
- MSSQL資料匯出到MYSQLMySql
- What is the N prefix in MSSQL all about?SQL
- MSSQL-xp_cmdshell 的利用SQL
- MSSQL中文亂碼問題SQL
- BCP匯入匯出MsSqlSQL
- GoldenGate MSSQL Oracle基本流程GoSQLOracle
- 檢視所有VIEW/TABLE in MSSQLViewSQL
- mssql有趣的注入 - niexinmingSQL
- Start Study MSSQL 2005SQL
- MSSQL Server Rename Server_nameSQLServer
- SQLPro for MSSQL for Mac(MSSQL資料庫客戶端) v2020.68SQLMac資料庫客戶端
- mssql 手工注入流程小結SQL
- MSSQL注射知識庫 v 1.0SQL
- 【BASIS】SAP On Mssql恢復步驟SQL
- 使用別名訪問MSSQL ExpressSQLExpress
- mssql 獲取表空間大小SQL
- bulk insert 在mssql中使用SQL
- xp_cmdshell---MSSQL系統漏洞SQL
- ORACLE和MSSQL中行鎖比較OracleSQL
- MSSQL優化之索引優化SQL優化索引
- MSSQL中的日期減價法SQL
- php呼叫mssql儲存過程PHPSQL儲存過程