偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

SQL體系結(jié)構(gòu)之SQLServer線程管理

數(shù)據(jù)庫(kù) SQL Server
SQLServer線程由WindowsNT平均地分配線程,下文對(duì)SQLServer線程管理作了詳盡的闡述,如果您對(duì)這方面感興趣的話,不妨一看。

對(duì)于SQLServer線程管理,可能很多剛剛接觸SQL數(shù)據(jù)庫(kù)的新人都比較陌生,下面就為您詳細(xì)介紹SQLServer線程管理,希望對(duì)您學(xué)習(xí)SQLServer線程管理方面能有所幫助。

復(fù)雜的應(yīng)用具有多個(gè)需要同步完成的任務(wù)或處理過程。一個(gè)進(jìn)程具有一個(gè)執(zhí)行線程,執(zhí)行應(yīng)用的程序指令。我們將這個(gè)執(zhí)行線程簡(jiǎn)稱為線程(thread)。SQLServer使用WindowsNT操作系統(tǒng)的線程,有時(shí)是SQLServer的纖維(見下面的討論),執(zhí)行并發(fā)任務(wù)(微軟的SQLServer桌面版不支持纖維)。線程由SQLServer啟動(dòng),然后WindowsNT在SQLServer可用的多個(gè)處理器(CPU)之間平均地分配線程??梢酝ㄟ^企業(yè)管理器,或通過設(shè)置SQLServer的配置參數(shù)affinitymask來配置SQLServer可以使用的處理器的數(shù)量。

大多數(shù)系統(tǒng)通過允許SQLServer使用系統(tǒng)中的所有CPU,工作得***。一個(gè)線程一個(gè)時(shí)間可以在系統(tǒng)的一個(gè)CPU上執(zhí)行。例如,具有四個(gè)CPU的系統(tǒng)可以并發(fā)執(zhí)行四個(gè)線程。當(dāng)一個(gè)線程可能處于等待I/O操作完成的狀態(tài)時(shí),另一個(gè)線程可以運(yùn)行在相同的CPU上,即使在一個(gè)單CPU的系統(tǒng)中,也是如此。這樣一來增加了可以執(zhí)行的工作量。線程的管理是由WindowsNT核心代碼維護(hù)的。當(dāng)一個(gè)線程移出一個(gè)CPU,另一個(gè)線程移入CPU時(shí),發(fā)生一次環(huán)境切換(contextswitch)。環(huán)境切換是一個(gè)相當(dāng)耗時(shí)的操作,因?yàn)樗枰趹?yīng)用代碼的用戶模式與SQLServer線程管理代碼的核心模式之間進(jìn)行切換,因此,設(shè)備環(huán)境切換越少越好。為減少環(huán)境切換,SQLServer具有一個(gè)稱為纖維(fibers)的新特性。

纖維是線程的子部件,缺省情況下,SQLServer并不使用纖維,但可以通過配置讓SQLServer使用纖維。纖維由運(yùn)行在用戶模式的代碼來維護(hù),因此,切換纖維比起切換線程的操作來,并不耗時(shí),因?yàn)椴恍枰诤诵哪J脚c用戶模式之間改變模式。纖維的調(diào)度表由SQLServer維護(hù),而線程的調(diào)度表由WindowsNT維護(hù);多個(gè)纖維可以運(yùn)行在同一個(gè)線程上,并且纖維可以在線程中進(jìn)行切換,而此時(shí)在CPU上執(zhí)行的線程不用切換環(huán)境。這樣大大降低了系統(tǒng)上的環(huán)境切換次數(shù)。如果你的系統(tǒng)執(zhí)行了許多環(huán)境切換,試試以纖維模式運(yùn)行SQLServer。要這樣做,必須通過企業(yè)管理器選擇該選項(xiàng),或者運(yùn)行sp_configure并設(shè)置lightweightpooling(輕型池)參數(shù),它也是一個(gè)高級(jí)選項(xiàng)。

SQLServer維護(hù)線程池以執(zhí)行SQL語句。如果設(shè)置了纖維模式,將維護(hù)纖維池而不是線程池。池中的線程或纖維,稱為工作者線程(workerthread)。當(dāng)在同一時(shí)間執(zhí)行多條SQL語句時(shí),工作者線程池允許SQLServer更好地分配CPU的處理時(shí)間。也可以使用配置參數(shù)maxworkerthreads(***工作者線程)配置SQLServer可用的工作者線程的數(shù)量,***值為255(可以通過企業(yè)管理器配置,或使用sp_configure存儲(chǔ)過程配置)。

當(dāng)發(fā)送一條SQL語句或一批語句給SQLServer執(zhí)行時(shí),如果池中存在空閑線程,SQLServer為該語句或批語句分配一個(gè)工作者線程;如果沒有現(xiàn)存的空閑線程,并且尚未達(dá)到***工作者線程數(shù),SQLServer將為這個(gè)處理啟動(dòng)一個(gè)新的線程;如果達(dá)到了***線程數(shù),并且沒有空閑線程,處理必須等待另一個(gè)批處理完成它的任務(wù)并釋放一個(gè)線程,這種等待通常時(shí)間不會(huì)太長(zhǎng)。如果發(fā)現(xiàn)一個(gè)已達(dá)到***工作者線程限制的SQLServer錯(cuò)誤,可以嘗試一下增大該參數(shù)值。然而,千萬記住,允許創(chuàng)建過多的線程會(huì)導(dǎo)致更多的開銷,最終會(huì)降低性能。
 

 

 

 

【編輯推薦】

帶您了解SQL Server權(quán)限管理策略

SQL Server服務(wù)器角色簡(jiǎn)介

SQL Server用戶帳號(hào)管理

帶您了解SQL Server 2008優(yōu)點(diǎn)

SQL Server同步復(fù)制的實(shí)現(xiàn)

責(zé)任編輯:段燃 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2009-09-08 14:34:42

Linq to SQL

2009-02-05 11:07:27

Sybase SQL SybaseSQL Server

2009-08-04 15:44:01

WLAN無線通信網(wǎng)網(wǎng)絡(luò)管理體系網(wǎng)絡(luò)管理結(jié)構(gòu)

2009-09-11 10:38:03

LINQ體系結(jié)構(gòu)

2009-06-26 15:58:28

EJB

2012-02-06 17:22:44

MySQL

2009-07-15 13:46:26

Swing體系結(jié)構(gòu)

2014-07-23 09:33:52

2020-04-15 21:43:22

JVMJavaVMware

2010-09-25 13:38:23

Inside JVM

2016-12-26 10:29:01

Spring框架結(jié)構(gòu)

2010-06-21 14:51:14

ASON路由

2010-08-16 12:54:21

ASON路由技術(shù)

2009-07-10 16:07:10

TikeSwing創(chuàng)建MVC體系結(jié)構(gòu)

2010-04-23 09:13:05

Oracle體系結(jié)構(gòu)

2010-01-22 17:57:40

2010-09-16 15:22:30

JVM體系結(jié)構(gòu)

2013-08-01 11:17:20

SAP

2013-09-02 15:53:16

Windows

2009-07-09 13:52:41

Inside JVM
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)