亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來(lái)到思海網(wǎng)絡(luò),我們將竭誠(chéng)為您提供優(yōu)質(zhì)的服務(wù)! 誠(chéng)征網(wǎng)絡(luò)推廣 | 網(wǎng)站備案 | 幫助中心 | 軟件下載 | 購(gòu)買流程 | 付款方式 | 聯(lián)系我們 [ 會(huì)員登錄/注冊(cè) ]
促銷推廣
客服中心
業(yè)務(wù)咨詢
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352289
點(diǎn)擊這里給我發(fā)消息  81721488
有事點(diǎn)擊這里…  376585780
有事點(diǎn)擊這里…  872642803
有事點(diǎn)擊這里…  459248018
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  380791050
技術(shù)支持
有事點(diǎn)擊這里…  714236853
有事點(diǎn)擊這里…  719304487
有事點(diǎn)擊這里…  1208894568
有事點(diǎn)擊這里…  61352289
在線客服
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  983054746
有事點(diǎn)擊這里…  893984210
當(dāng)前位置:首頁(yè) >> 技術(shù)文章 >> 文章瀏覽
技術(shù)文章

SQL Server 死鎖處理和優(yōu)化

添加時(shí)間:2014-5-6 16:57:34  添加: 思海網(wǎng)絡(luò) 
  sql server 鎖類型 
   在數(shù)據(jù)庫(kù)中主要存在兩種鎖: S(共享鎖)和X(排他鎖) 
   
   S(共享鎖):在執(zhí)行查詢數(shù)據(jù)時(shí),sql server會(huì)將行鎖定,這時(shí)只能查詢數(shù)據(jù),刪,改被阻塞, 
   
   X(排他鎖):在插入和刪除數(shù)據(jù)時(shí),將行鎖定,這時(shí)增,刪,改都被阻塞 
   
   以上兩種鎖都會(huì)引起死鎖: 
   
   死鎖定義:在兩個(gè)或多個(gè)任務(wù)中,如果每個(gè)任務(wù)鎖定了其他任務(wù)試圖鎖定的資源,此時(shí)會(huì)造成這些任務(wù)永久阻塞,從而出現(xiàn)死鎖 
   
   這里模擬一下死鎖環(huán)境: 
   
   建立環(huán)境: 
  ----死鎖例子,建立表數(shù)據(jù) 
  create table [dbo].[[zping.com1]]]( 
  A varchar(2) 
  ,B varchar(2) 
  ,C varchar(2)) 
   
  --插入數(shù)據(jù) 
  insert into [dbo].[[zping.com1]]] 
  select 'a1','b1','c1' 
  union all select 'a2','b2','c2' 
  union all select 'a3','b3','c3' 
   
  --建立表數(shù)據(jù) 
  create table [dbo].[[zping.com2]]] 
  (D varchar(2) 
  ,E varchar(2)) 
   
   --插入數(shù)據(jù) 
  insert into [dbo].[[zping.com2]]] 
  select 'd1','e1' 
  union all select 'd2','e2' 
   
   1. 1 排他鎖引起的死鎖 
   執(zhí)行語(yǔ)句: 
   
  begin tran 
  update [dbo].[[zping.com2]]] 
  set D='d5' 
  where E='e1' 
  waitfor delay '00:00:05' 
   
  update [dbo].[[zping.com1]]] 
  set A='aa' 
  where B='b2' 
   
  begin tran 
  update [dbo].[[zping.com1]]] 
  set A='aa' 
  where B='b2' 
  waitfor delay '00:00:05' 
   
  update [dbo].[[zping.com2]]] 
  set D='d5' 
  where E='e1' 
   
   新建兩個(gè)窗口,在5秒鐘內(nèi)執(zhí)行上面語(yǔ)句,不久就會(huì)出現(xiàn)死鎖提示。(結(jié)束后記住要把事務(wù)回滾。
   
   1.2 共享鎖引起的死鎖 
  begin tran 
  update [dbo].[[zping.com2]]] 
  set D='d5' 
  where E='e1' 
  waitfor delay '00:00:05' 
   
  select * from [dbo].[[zping.com1]]] 
  where B='b2' 
   
   
  begin tran 
  update [dbo].[[zping.com1]]] 
  set A='aa' 
  where B='b2' 
  waitfor delay '00:00:05' 
   
  select * from [dbo].[[zping.com2]]] 
  where E='e1' 
   
   新建兩個(gè)窗口,在5秒鐘內(nèi)執(zhí)行上面語(yǔ)句。不久就會(huì)出現(xiàn)死鎖提示。(結(jié)束后記住要把事務(wù)回滾。
       知道死鎖產(chǎn)生的原因,在生產(chǎn)環(huán)境產(chǎn)生的死鎖就類似這兩種情況。 
  
   后來(lái)在網(wǎng)上查閱了很多資料,包括sql server 2005的幫助文檔?偨Y(jié)有以下有主要幾點(diǎn): 
   
   1,降低隔離級(jí)別或者使用行版本控制隔離級(jí)別 
   
   2,提高數(shù)據(jù)的訪問(wèn)速度 
   
   3,減少事務(wù)長(zhǎng)度 
   
   4,將按順序訪問(wèn)熱點(diǎn)表(如將訪問(wèn)頻繁的表放在最后訪問(wèn)) 
   遇到的困難 
   但在我們這次優(yōu)化中,有些是不太好處理的 如: 
   
   1,減少事務(wù)長(zhǎng)度,事務(wù)的大小不是我們來(lái)決定的,是由業(yè)務(wù)邏輯來(lái)決定的(來(lái)自tom的《Oracle 9i/10g深入內(nèi)部體系機(jī)構(gòu)》中) 
   
   2,按順序訪問(wèn)熱點(diǎn)表,我們發(fā)現(xiàn)代碼中方法間互相調(diào)用很頻繁,經(jīng)常一個(gè)表調(diào)用多次,要修改表的訪問(wèn)順序是比較困難的。 
   
   采用的方法 
   后來(lái)我們就使用了以下方法: 
   
   1,將數(shù)據(jù)庫(kù)隔離級(jí)別改成行版本控制隔離級(jí)別。(沒(méi)有了共享鎖死鎖) 
   
   2,重建和優(yōu)化索引,優(yōu)化SQL語(yǔ)句和采用分區(qū)視圖等方法。提高訪問(wèn)速度。(減少了鎖定時(shí)間) 
   
   3,水平拆分表(分區(qū))并在程序讀寫時(shí)盡量做到分區(qū)消除,減少讀寫的行數(shù),降低鎖定升級(jí)的頻率和時(shí)間。 (減少鎖的升級(jí)) 
      通過(guò)4個(gè)月左右的運(yùn)行,系統(tǒng)就發(fā)生過(guò)一次死鎖,比以前大大降低。 
 關(guān)鍵字:數(shù)據(jù)庫(kù)、SQL Server、死鎖
分享到:

頂部 】 【 關(guān)閉
版權(quán)所有:佛山思海電腦網(wǎng)絡(luò)有限公司 ©1998-2024 All Rights Reserved.
聯(lián)系電話:(0757)22630313、22633833
中華人民共和國(guó)增值電信業(yè)務(wù)經(jīng)營(yíng)許可證: 粵B1.B2-20030321 備案號(hào):粵B2-20030321-1
網(wǎng)站公安備案編號(hào):44060602000007 交互式欄目專項(xiàng)備案編號(hào):200303DD003  
察察 工商 網(wǎng)安 舉報(bào)有獎(jiǎng)  警警  手機(jī)打開(kāi)網(wǎng)站