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