亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQL Server > 正文

SQL Server 2014如何提升非在線的在線操作

2024-08-31 00:54:17
字體:
來源:轉載
供稿:網友
SQL Server 2014如何提升非在線的在線操作

在今天的文章里,我想談下在線索引重建操作(Online Index Rebuild Operations),它們在SQL Server 2014里有怎樣的提升。我們都知道,自SQL Server 2005開始引入了在線索引重建操作。但這些在線操作并非真正的在線操作,因為在操作開始時,SQL Server需要獲得共享表鎖(Shared Table Lock (S)),在操作結束時需要在對應表上獲得架構修改鎖(Schema Modification Lock (Sch-M))。因此這些操作是真正的在線操作,只是營銷技巧(marketing trick)。但是,親,“在線”肯定比“部分在線”好聽多了。

盡管如此,SQL Server 2014還是在在線索引重建的開始和結束發生的阻塞做了一些改進。因此,在你執行在線索引重建時,你可以定義所謂的鎖優先級(Lock PRiority)。來看看下面的代碼,你會看到起作用的新語法:

 1 ALTER INDEX idx_Col1 ON Foo REBUILD 2 WITH 3 ( 4    ONLINE = ON 5    ( 6       WAIT_AT_LOW_PRIORITY  7       ( 8          MAX_DURATION = 1,  9          ABORT_AFTER_WAIT = SELF10       )11    )12 ) 13 GO

當阻塞情況發生時,你可以用WAIT_AT_LOW_PRIORITY關鍵字定義如何處理。使用第1個屬性MAX_DURATION指定你想要等待的時間——這里是分鐘,不是秒!用ABORT_AFTER_WAIT屬性你指定哪個會話需要被SQL Server回滾。SELF意味著那個ALTER INDEX REBUILD語句會回滾,當你指定BLOCKERS時,阻塞的會話會回滾。當然,當沒有阻塞發生時,在線索引重建操作會立即執行。因此這里你只能配置當阻塞情況發生時要怎么處理。

好了,我們來實操下。我們新建一個數據庫,一個簡單的表和一個聚集索引。

 1 -- Creates a new database 2 CREATE DATABASE Test 3 GO 4  5 -- Use the database 6 USE Test 7 GO 8  9 -- Create a simple table10 CREATE TABLE Foo11 (12     Col1 INT IDENTITY(1, 1) NOT NULL,13     Col2 INT NOT NULL,14     Col3 INT NOT NULL15 )16 GO17 18 -- Create a unique Clustered Index on the table19 CREATE UNIQUE CLUSTERED INDEX idx_Col1 ON Foo(Col1)20 GO21 22 -- Insert a few test records23 INSERT INTO Foo VALUES (1, 1), (2, 2), (3, 3)24 GO

為了觸發阻塞,我在不同的會話開始一個新的事務,但不提交:

1 BEGIN TRANSACTION2 3 UPDATE Foo SET Col2 = 24 WHERE Col1 = 1

這意味著我們在需要修改的記錄上獲得排它鎖(Exclusive Lock (X)),在對應的頁上獲得意向排它鎖(Intent-Exclusive Lock (IX)),在表本身獲得意向排它鎖(Intent-Exclusive Lock (IX))。我們剛剛在SQL Server里創建了典型的鎖定層次(locking hierarchy):表=>頁=>記錄。在表級別的意向排它鎖(IX Lock)和在線索引重建操作需要的共享鎖(Shared Lock)是不兼容的——典型的鎖/阻塞情形發生了。當你現在執行在線索引重建操作時,會發生阻塞:

1 ALTER INDEX idx_Col1 ON Foo REBUILD2 WITH3 (4    ONLINE = ON5 )6 GO

當你查看DMVsys.dm_tran_locks時,你會看到那個需要共享鎖(Shared Lock(S))的會話需要等待。這個會話會永遠等待。我剛才就說過:“部分在線”……

1 SELECT * FROM    sys.dm_tran_locks

當我們執行帶有鎖優先級(Lock Priority)的在線索引重建時,有趣的事情發生了:

 1 -- Perform an Online Index Rebuild 2 ALTER INDEX idx_Col1 ON Foo REBUILD 3 WITH 4 ( 5    ONLINE = ON 6    ( 7       WAIT_AT_LOW_PRIORITY  8       ( 9          MAX_DURATION = 1, 10          ABORT_AFTER_WAIT = SELF11       )12    )13 ) 14 GO

在這個情況下,我們的ALTER INDEX語句會等待1分鐘(MAX_DURATION),然后語句本身取消了(ABORT_AFTER_WAIT)。

如果你在這里指定了BLOCKERS選項,那么阻塞的會話就會回滾。當我們同時(在1分鐘期間)查看DMVsys.dm_tran_locks,我們看到了有趣的東西:

從圖中可以看到,SQL Server這里請求一個LOW_PRIORITY_WAIT的狀態。因此3個請求狀態(GRANT,WAIT,CONVERT)有了第4個選項:LOW_PRIORITY_WAIT。當我們查看DMVsys.dm_os_waiting_tasks時,事情變得有意思(59是執行語句的會話ID):

1 SELECT * FROM sys.dm_os_waiting_tasks WHERE session_id='59'

在線索引重建操作的等待會話報告了一個新的等待類型LCK_M_S_LOW_PRIORITY。這意味著當在線索引重建操作被阻塞時,我們可以從服務器級別(sys.dm_os_wait_stats)的等待統計信息里獲得——不錯!

但是LCK_M_S_LOW_PRIORITY并不是新的等待類型。在SQL Server 2014里,當你查看DMVsys.dm_os_wait_stats時,會看到21個新的等待類型:

1 SELECT * FROM sys.dm_os_wait_stats WHERE wait_type LIKE '%LOW_PRIORITY%'
  • LCK_M_SCH_S_LOW_PRIORITY
  • LCK_M_SCH_M_LOW_PRIORITY
  • LCK_M_S_LOW_PRIORITY
  • LCK_M_U_LOW_PRIORITY
  • LCK_M_X_LOW_PRIORITY
  • LCK_M_IS_LOW_PRIORITY
  • LCK_M_IU_LOW_PRIORITY
  • LCK_M_IX_LOW_PRIORITY
  • LCK_M_SIU_LOW_PRIORITY
  • LCK_M_SIX_LOW_PRIORITY
  • LCK_M_UIX_LOW_PRIORITY
  • LCK_M_BU_LOW_PRIORITY
  • LCK_M_RS_S_LOW_PRIORITY
  • LCK_M_RS_U_LOW_PRIORITY
  • LCK_M_RIn_NL_LOW_PRIORITY
  • LCK_M_RIn_S_LOW_PRIORITY
  • LCK_M_RIn_U_LOW_PRIORITY
  • LCK_M_RIn_X_LOW_PRIORITY
  • LCK_M_RX_S_LOW_PRIORITY
  • LCK_M_RX_U_LOW_PRIORITY
  • LCK_M_RX_X_LOW_PRIORITY

所有主要的等待類型(LCK_M_*)都有額外的鎖優先級等待類型。這個非常酷,也非常強大,因為你很容易從中可以跟蹤到為什么在線重建索引操作被阻塞。另外,對于分區切換(Partition Switching)也適用同樣的技術(鎖優先級(Lock Priorities)),因為在切換期間,操作也要在2個表(原表,目標表)上獲取架構修改鎖(Schema Modification Lock (Sch-M))。

我希望這篇文章可以讓你理解SQL Server 2014里的鎖優先級(Lock Priorities),還有為什么SQL Server里的“在線”操作實際上只是“部分在線”。

感謝關注!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕亚洲欧美| 亚洲电影第1页| 中文字幕精品网| 精品av在线播放| 日韩中文字幕视频在线观看| 欧洲成人午夜免费大片| 欧美在线一级视频| 国产性色av一区二区| 国产精品精品久久久久久| 狠狠爱在线视频一区| 国产美女主播一区| 久久久久久91香蕉国产| 久久福利视频导航| 国产成人综合久久| 国产精品自产拍在线观看中文| 日韩精品极品在线观看播放免费视频| 欧美区在线播放| 中文字幕久久久| 欧美日韩精品中文字幕| 国产精品午夜视频| 久久久女女女女999久久| 日韩高清电影免费观看完整版| 国产精品久久久久99| 国产精品男人的天堂| 欧洲精品在线视频| 久久久免费观看| 91精品国产91| 亚洲精品国产综合区久久久久久久| 国产精品久久9| 国产高清在线不卡| 中文精品99久久国产香蕉| 一区二区在线视频| 亚洲一区第一页| 国产精品高潮呻吟视频| 亚洲第一页中文字幕| 欧美精品xxx| 日韩电视剧免费观看网站| 国产精品入口免费视| 国产精品第一区| 91sao在线观看国产| 久久久久久午夜| 欧美另类老女人| 日韩成人在线播放| 粉嫩老牛aⅴ一区二区三区| 日韩欧美成人免费视频| 国产成人在线一区二区| 亚洲最大福利视频网站| 日韩av手机在线| 91在线视频成人| 一区二区三区视频免费| 日日摸夜夜添一区| 日韩一区二区在线视频| 性欧美视频videos6一9| 精品一区二区三区电影| 久久久久久久久久久免费精品| 九色精品免费永久在线| 亚洲美女性视频| 亚洲自拍偷拍一区| 91日本在线观看| www国产精品视频| 欧美精品videosex性欧美| 最新日韩中文字幕| 日韩精品极品视频免费观看| 国产亚洲成av人片在线观看桃| 日韩av色综合| 秋霞成人午夜鲁丝一区二区三区| 免费99精品国产自在在线| 日韩有码在线播放| 亚洲国产精品久久久久| 亚洲精品自拍偷拍| 96国产粉嫩美女| 国产精品6699| 欧美精品在线视频观看| 中文国产成人精品久久一| 日韩av一区二区在线| 欧美性猛交xxxx乱大交3| 亚洲国产美女精品久久久久∴| 在线观看日韩欧美| 亚洲第一天堂av| 国产精品成人va在线观看| 在线不卡国产精品| 国产精品99蜜臀久久不卡二区| 97热在线精品视频在线观看| 这里只有精品丝袜| 91免费欧美精品| 国产91九色视频| 国产精品久久久久久久久久小说| 综合国产在线观看| 欧美日韩一区二区免费在线观看| 日日摸夜夜添一区| 色综合久久久久久中文网| 成人在线中文字幕| 国产午夜精品理论片a级探花| 91精品在线观看视频| 亚洲国产精品人久久电影| 日韩中文字幕在线| 奇门遁甲1982国语版免费观看高清| 成人97在线观看视频| 成人欧美在线观看| 日韩一区二区av| 亚洲精品第一国产综合精品| 一区国产精品视频| 日韩在线观看网址| 日韩成人中文字幕在线观看| 国产成人精品一区二区| 欧美日韩免费观看中文| 亚洲激情在线观看视频免费| 欧美激情免费观看| 蜜月aⅴ免费一区二区三区| 久久在线免费视频| 成人信息集中地欧美| 欧美国产日韩一区| 国产精品一二三视频| 欧美激情一区二区久久久| 日韩在线免费高清视频| 国产日韩在线看片| 最近2019中文字幕一页二页| 2018日韩中文字幕| 亚洲爱爱爱爱爱| 国产精品久久久久免费a∨| 伊人久久综合97精品| 日韩欧美在线中文字幕| 欧洲亚洲女同hd| 最近中文字幕2019免费| 亚洲第一精品电影| 亚洲电影免费观看高清完整版在线观看| 欧美一级淫片aaaaaaa视频| 日本成人黄色片| 欧美午夜片欧美片在线观看| 日本高清+成人网在线观看| 97热在线精品视频在线观看| 日韩欧美中文字幕在线观看| 国产极品精品在线观看| 欧美一级大片在线免费观看| 国产精品老女人视频| 成人免费视频网| 日韩成人在线网站| 亚洲第一页中文字幕| 国产精品久久久亚洲| 91美女片黄在线观看游戏| 日韩av资源在线播放| 97av在线视频免费播放| 精品中文字幕乱| 国产精品第2页| 日韩av在线免费观看| 国产精品九九久久久久久久| 亚洲精品电影在线观看| 欧美激情在线有限公司| 久久精品国产综合| 欧美精品激情在线观看| 国产精品久久综合av爱欲tv| 欧美精品做受xxx性少妇| 一区二区三区无码高清视频| 国产精品偷伦一区二区| 最近2019中文字幕在线高清| 不卡伊人av在线播放| 国产精品私拍pans大尺度在线| 色黄久久久久久| 91久久夜色精品国产网站| 国产一区二区丝袜| 精品呦交小u女在线| 色噜噜狠狠色综合网图区| 亚洲国产精品一区二区三区| 久久久久久久影院|