日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

SQL Server中DML語句要申請(qǐng)的鎖

系統(tǒng) 2005 0


對(duì)于select語句:

1、當(dāng)採用表掃描時(shí),會(huì)直接鎖定page,而不是鎖定詳細(xì)的某條記錄,所以會(huì)有這些鎖:

A、數(shù)據(jù)庫S鎖

B、表的IS鎖

C、頁的S鎖


2、當(dāng)採用索引來查找數(shù)據(jù)時(shí),會(huì)鎖定詳細(xì)的記錄,所以會(huì)有這些鎖:

A、數(shù)據(jù)庫S鎖

B、索引中page的 IS鎖

C、索引中page中的key的S鎖

D、表的IS鎖

E、頁的IS鎖

F、RID的S鎖


3、對(duì)于讀過的頁面,會(huì)加一個(gè)IS鎖。

對(duì)于使用的索引,會(huì)對(duì)key加上S鎖,對(duì)索引key所在的頁面會(huì)加上IS鎖。

在查詢過程中,會(huì)對(duì)每一條讀到的記錄或key加上S鎖。

假設(shè)記錄不是我們要查找的,那么就會(huì)釋放S鎖,假設(shè)記錄要返回,依據(jù)隔離級(jí)別,假設(shè)是read committed,那么會(huì)釋放,否則就不會(huì)釋放。



對(duì)于update語句:

1、當(dāng)採用表掃描時(shí),會(huì)直接鎖定page,而不是鎖定詳細(xì)的某條記錄,所以會(huì)有這些鎖:

A、數(shù)據(jù)庫S鎖

B、表的IX鎖

C、頁的U鎖 或者是X鎖,兩者的差別在于,因?yàn)閡pdate語句也是要先找到數(shù)據(jù),才干進(jìn)行改動(dòng),所以在查數(shù)據(jù)時(shí),會(huì)對(duì)頁加上IU鎖,然后在繼續(xù)查看頁中的記錄時(shí),會(huì)先對(duì)記錄加上U鎖,假設(shè)發(fā)現(xiàn)這條記錄,不是須要更新的,那么會(huì)馬上釋放U鎖,假設(shè)發(fā)現(xiàn)這條記錄就是要更新的,那么就會(huì)加上X鎖,然后update這條記錄,然后查看下一條記錄。


2、當(dāng)採用索引來查找數(shù)據(jù)時(shí),會(huì)索引詳細(xì)的記錄,所以會(huì)有這些鎖:

A、數(shù)據(jù)庫S鎖

B、索引中page的 IU鎖

C、索引中page中的key的U鎖,也就是不希望別的會(huì)話來改動(dòng)這條記錄的key字段,比方如今有2個(gè)會(huì)話,1個(gè)要改動(dòng)第10條記錄的name字段,還有一個(gè)是要改動(dòng)第10條記錄的key字段,顯然,在一個(gè)會(huì)話改動(dòng)同一條記錄的name字段時(shí),肯定會(huì)堵塞住還有一個(gè)會(huì)話改動(dòng)key字段。也就是說,對(duì)同一條記錄的不同字段,肯定是不能同一時(shí)候改動(dòng)的,總是有個(gè)先后,否則數(shù)據(jù)就不一致了。

D、表的IX鎖

E、頁的IU鎖 或者是IX鎖,這個(gè)差別和上面是一樣的,查詢時(shí)用的是IU鎖,當(dāng)發(fā)現(xiàn)這個(gè)頁內(nèi)部有須要改動(dòng)的記錄時(shí),會(huì)轉(zhuǎn)化為IX鎖。

F、RID的X鎖


3、對(duì)每個(gè)使用的索引,會(huì)對(duì)key加上U鎖,對(duì)索引key所在的頁面會(huì)加上IU鎖。

因?yàn)閡pdate也須要先找到記錄,然后才干更新,所以,在掃描過程中,對(duì)要掃描的記錄所在的頁,加上IU鎖,對(duì)頁中的記錄加上U鎖,假設(shè)這些記錄要改動(dòng),那么會(huì)升級(jí)為X鎖,頁面會(huì)升級(jí)為IX鎖。假設(shè)這個(gè)記錄不須要更新,那么會(huì)釋放U鎖,假設(shè)整個(gè)頁面都沒有要改動(dòng)的記錄,那么也會(huì)釋放IU鎖。

另外,使用到要改動(dòng)列的索引越多,那么鎖也會(huì)越多。比方如今要改動(dòng)name字段的值,而包括name字段的索引有2個(gè),那么在改動(dòng)name時(shí),也須要鎖定這2個(gè)索引的頁面和key,所以會(huì)先改動(dòng)表中name字段的值,然后再改動(dòng)涉及到name字段的2個(gè)索引的key值,這個(gè)改動(dòng)操作是先刪除,然后再插入key值,比方,要update 3條記錄,那么最后改動(dòng)索引時(shí),會(huì)申請(qǐng)6個(gè)key 的X鎖,3個(gè)是要?jiǎng)h除的,3個(gè)是要插入的。

只是須要特別注意的是,update語句和select 語句的差別在于,update語句獲取的鎖,直到事務(wù)結(jié)束,才會(huì)釋放。



對(duì)于Insert 語句:

A、數(shù)據(jù)庫S鎖

B、表的IX鎖

C、頁的IX鎖,對(duì)于要新插入數(shù)據(jù)的頁,也會(huì)有一個(gè)IX鎖。

D、RID,對(duì)要新插入的數(shù)據(jù),會(huì)申請(qǐng)一個(gè)X鎖。

E、假設(shè)表中有多個(gè)索引,那么每一個(gè)索引上都要插入一條新的數(shù)據(jù),要插入數(shù)據(jù)所在頁上,會(huì)有一個(gè)IX鎖。

F、要插入索引中的key,也會(huì)有一個(gè)X鎖。



注意:IS、IU(臨時(shí)沒發(fā)如今表級(jí)別上有這個(gè)鎖)、IX這3個(gè)意向鎖,都是在表級(jí)別、頁級(jí)別的,而S、U( 臨時(shí)沒 沒發(fā)如今表級(jí)別有這個(gè)鎖)、X 能夠在多個(gè)級(jí)別上。

SQL Server中DML語句要申請(qǐng)的鎖


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 乌兰县| 邹平县| 建水县| 台北市| 井陉县| 济阳县| 绿春县| 冀州市| 徐闻县| 南木林县| 宜城市| 上蔡县| 山阳县| 乌兰察布市| 云龙县| 潮安县| 师宗县| 綦江县| 项城市| 唐山市| 鲁甸县| 成安县| 镇坪县| 商丘市| 镇宁| 册亨县| 迁安市| 瑞丽市| 富蕴县| 拜泉县| 泸溪县| 永兴县| 上犹县| 沿河| 贡觉县| 长岛县| 永济市| 揭西县| 资中县| 闵行区| 商城县|