SQL Server綁定連接的類型
SQL Server綁定連接是為了降低SQL Server鎖沖突,下面就為您詳細(xì)介紹SQL Server綁定連接的類型,如果您感興趣的話,不妨一看。
SQL Server綁定連接的類型:
在SQL Server數(shù)據(jù)庫中,提供了兩種SQL Server綁定連接的類型,分別為本地綁定連接和分布式綁定連接。本地綁定連接允許綁定連接共享單個(gè)服務(wù)器上的單個(gè)事務(wù)的事務(wù)空 間。而分布式綁定連接則允許綁定連接共享分布式事務(wù)處理協(xié)調(diào)器提交或者回滾整個(gè)事務(wù)之前,共享跨越兩個(gè)或者多個(gè)服務(wù)器的同一事務(wù)。在一些大型的數(shù)據(jù)庫應(yīng)用 中,往往會(huì)部署多個(gè)SQL Server服務(wù)器,搭建一個(gè)分布式事務(wù)處理環(huán)境,來提高數(shù)據(jù)庫的訪問性能。此時(shí),就需要用到分布式綁定連接才可以起到應(yīng)有的效果。
不過分布式綁定連接的實(shí)現(xiàn)原理跟本地綁定連接的實(shí)現(xiàn)原理還是有點(diǎn)區(qū)別。本地綁定連接中,其采用的是字符串綁定令牌的方式;而在分布式綁定連接 中,不是用字符串綁定令牌,而是用分布式事務(wù)標(biāo)識(shí)符。其他技術(shù),如令牌的傳遞技術(shù)等等,兩者沒有本質(zhì)的區(qū)別。
不過索性的是,作為數(shù)據(jù)庫管理員,往往不需要了解其后面的實(shí)現(xiàn)原理,而只要懂得應(yīng)用即可。所以,在綁定連接的應(yīng)用中,筆者有一個(gè)建議。這個(gè)建議 是筆者在日常工作中總結(jié)出來的,并不代表微軟SQLServer數(shù)據(jù)庫的官方意見。大家若對(duì)這個(gè)建議有什么意見的話,可以說出來供大家討論。
這個(gè)建議就是不要把綁定連接搞的太過于復(fù)雜。如不要在同一個(gè)綁定連接中加入太多的連接;或者在同一個(gè)綁定連接中所涉及的連接,***都來自同一個(gè) 應(yīng)用程序進(jìn)程等等。通過這些方法可以有效的降低綁定連接的復(fù)雜性。從而在提高并發(fā)性處理數(shù)據(jù)的同時(shí),也不會(huì)對(duì)數(shù)據(jù)的一致性帶來很大的不利影響。
另外一點(diǎn),就是數(shù)據(jù)庫管理員可以放心的是,綁定連接技術(shù)基本上不會(huì)對(duì)數(shù)據(jù)庫原有的性能產(chǎn)生負(fù)面的影響。由于其只是對(duì)數(shù)據(jù)庫連接進(jìn)行捆綁,所以即 使是采用了捆綁連接,也不會(huì)給數(shù)據(jù)庫帶來額外的開銷。
--綁定連接的使用示例(在查詢分析器中進(jìn)行)
--首先創(chuàng)建一個(gè)測(cè)試表
create table tb(a int)
go
--不使用綁定連接的測(cè)試(a窗口)
begin tran
insert tb values(100)
--開始一個(gè)新窗口(b窗口),寫上如下代碼并執(zhí)行
begin tran
update tb set a=50
--此時(shí)的執(zhí)行結(jié)果是產(chǎn)生的阻塞,b窗口的處理要等a窗口的處理完成后才能進(jìn)行下一步
--------------------------------------------------------------------------
--使用綁定連接的測(cè)試(a窗口)
declare @bind_token varchar(255)
begin tran
execute sp_getbindtoken @bind_token output
print @bind_token --記下這個(gè)結(jié)果,后面要用到
insert tb values(100)
--開始一個(gè)新窗口(b窗口),寫上如下代碼并執(zhí)行(不會(huì)產(chǎn)生阻塞)
EXEC sp_bindsession 'Q[Bi.QbB\AC8\:d9kdY\UM5----;G]-- ' --這個(gè)是值是上面要求記下的結(jié)果
begin tran
update tb set a=50
rollback tran
--回a窗口執(zhí)行
select * from tb
/*--結(jié)果:
此會(huì)話中的活動(dòng)事務(wù)已由另外一個(gè)會(huì)話提交或終止。
(所影響的行數(shù)為 0 行)
--*/
go
--***刪除測(cè)試環(huán)境
drop table tb
【編輯推薦】