版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、電子商務(wù)數(shù)據(jù)庫技術(shù)華北科技學(xué)院 李文武22021年11月10日星期三6.1.1數(shù)據(jù)匯總數(shù)據(jù)匯總1.聚合函數(shù):對一組值操作,返回單一的匯總值。聚合函數(shù):對一組值操作,返回單一的匯總值。聚合函數(shù)在如下情況下,允許作為表達式使用:聚合函數(shù)在如下情況下,允許作為表達式使用:(1)select語句的選擇列表語句的選擇列表(子查詢或外部查詢子查詢或外部查詢)。(2)compute或或compute by子句。子句。(3)having子句。子句。華北科技學(xué)院 李文武32021年11月10日星期三ncompute子句用于分類匯總,格式為:子句用于分類匯總,格式為:compute聚合函數(shù)名聚合函數(shù)名(expre
2、ssion),.nby expression,.nn其中其中expression是列名;是列名;compute將產(chǎn)生將產(chǎn)生額外的匯總行。額外的匯總行。ncompute by子句可以用同一子句可以用同一select語句語句既查看明細(xì)行,又查看匯總行??捎嬎惴纸M的既查看明細(xì)行,又查看匯總行??捎嬎惴纸M的匯總值,也可計算整個結(jié)果集的匯總值。匯總值,也可計算整個結(jié)果集的匯總值。華北科技學(xué)院 李文武42021年11月10日星期三n當(dāng)當(dāng) compute 帶有可選的帶有可選的 by 子句時,符合子句時,符合 select 條件的每個組都有兩個結(jié)果集:條件的每個組都有兩個結(jié)果集: 每個組的第一個結(jié)果集是明細(xì)行
3、集,其中包含該組的選擇列每個組的第一個結(jié)果集是明細(xì)行集,其中包含該組的選擇列表信息。表信息。每個組的第二個結(jié)果集有一行,其中包含該組的每個組的第二個結(jié)果集有一行,其中包含該組的 compute 子句中所指定的聚合函數(shù)的小計。子句中所指定的聚合函數(shù)的小計。 n當(dāng)當(dāng) compute 不帶可選的不帶可選的 by 子句時,子句時,select 語句語句有兩個結(jié)果集:有兩個結(jié)果集: 每個組的第一個結(jié)果集是包含選擇列表信息的所有明細(xì)行。每個組的第一個結(jié)果集是包含選擇列表信息的所有明細(xì)行。第二個結(jié)果集有一行,其中包含第二個結(jié)果集有一行,其中包含 compute 子句中所指定的子句中所指定的聚合函數(shù)的合計。聚
4、合函數(shù)的合計。 華北科技學(xué)院 李文武52021年11月10日星期三ngroup by 生成單個結(jié)果集。每個組都有一個只包含生成單個結(jié)果集。每個組都有一個只包含分組依據(jù)列和顯示該組子聚合的聚合函數(shù)的行。選擇列分組依據(jù)列和顯示該組子聚合的聚合函數(shù)的行。選擇列表只能包含分組依據(jù)列和聚合函數(shù)。表只能包含分組依據(jù)列和聚合函數(shù)。ncompute 生成多個結(jié)果集。生成多個結(jié)果集。一類結(jié)果集包含每個組的明細(xì)行,其中包含選擇列表中的表一類結(jié)果集包含每個組的明細(xì)行,其中包含選擇列表中的表達式。達式。另一類結(jié)果集包含組的子聚合,或另一類結(jié)果集包含組的子聚合,或 select 語句的總聚合。語句的總聚合。選擇列表可包
5、含除分組依據(jù)列或聚合函數(shù)之外的其它表達式。選擇列表可包含除分組依據(jù)列或聚合函數(shù)之外的其它表達式。聚合函數(shù)在聚合函數(shù)在 compute 子句中指定,而不是在選擇列表中。子句中指定,而不是在選擇列表中。華北科技學(xué)院 李文武62021年11月10日星期三n指定用來放置輸出行的組,并且如果指定用來放置輸出行的組,并且如果 select 子句子句 中包含聚合函數(shù),則計算每中包含聚合函數(shù),則計算每組的匯總值。指定組的匯總值。指定 group by 時,選擇列表中時,選擇列表中任一非聚合表達式內(nèi)的所有列都應(yīng)包含在任一非聚合表達式內(nèi)的所有列都應(yīng)包含在 group by 列表中,或者列表中,或者 group b
6、y 表達式表達式必須與選擇列表表達式完全匹配。必須與選擇列表表達式完全匹配。n語法語法 group by all group_by_expression ,.n with cube | rollup 華北科技學(xué)院 李文武72021年11月10日星期三nall:包含所有組和結(jié)果集,甚至包含那些任何行都不:包含所有組和結(jié)果集,甚至包含那些任何行都不滿足滿足 where 子句指定的搜索條件的組和結(jié)果集。如子句指定的搜索條件的組和結(jié)果集。如果指定了果指定了 all,將對組中不滿足搜索條件的匯總列返,將對組中不滿足搜索條件的匯總列返回空值。不能用回空值。不能用 cube 或或 rollup 運算符指定運
7、算符指定 all。 如果訪問遠(yuǎn)程表的查詢中有如果訪問遠(yuǎn)程表的查詢中有 where 子句,則不支持子句,則不支持 group by all 操作。操作。ngroup_by_expression:是對其執(zhí)行分組的表達式。是對其執(zhí)行分組的表達式。group_by_expression 也稱為分組列。也稱為分組列。group_by expression 可以是列或引用列的非聚合表達式。在選可以是列或引用列的非聚合表達式。在選擇列表內(nèi)定義的列的別名不能用于指定分組列。擇列表內(nèi)定義的列的別名不能用于指定分組列。 華北科技學(xué)院 李文武82021年11月10日星期三ncube:指定在結(jié)果集內(nèi)不僅包含由:指定在
8、結(jié)果集內(nèi)不僅包含由 group by 提供提供的正常行,還包含匯總行。在結(jié)果集內(nèi)返回每個可能的的正常行,還包含匯總行。在結(jié)果集內(nèi)返回每個可能的組和子組組合的組和子組組合的 group by 匯總行。匯總行。group by 匯匯總行在結(jié)果中顯示為總行在結(jié)果中顯示為 null,但可用來表示所有值。使,但可用來表示所有值。使用用 grouping 函數(shù)確定結(jié)果集內(nèi)的空值是否是函數(shù)確定結(jié)果集內(nèi)的空值是否是 group by 匯總值。匯總值。nrollup:指定在結(jié)果集內(nèi)不僅包含由:指定在結(jié)果集內(nèi)不僅包含由 group by 提提供的正常行,還包含匯總行。按層次結(jié)構(gòu)順序,從組內(nèi)供的正常行,還包含匯總行
9、。按層次結(jié)構(gòu)順序,從組內(nèi)的最低級別到最高級別匯總組。組的層次結(jié)構(gòu)取決于指的最低級別到最高級別匯總組。組的層次結(jié)構(gòu)取決于指定分組列時所使用的順序。更改分組列的順序會影響在定分組列時所使用的順序。更改分組列的順序會影響在結(jié)果集內(nèi)生成的行數(shù)。結(jié)果集內(nèi)生成的行數(shù)。華北科技學(xué)院 李文武92021年11月10日星期三n通過聯(lián)接根據(jù)各表間的邏輯關(guān)系從兩個或多個通過聯(lián)接根據(jù)各表間的邏輯關(guān)系從兩個或多個表中檢索數(shù)據(jù)。表中檢索數(shù)據(jù)。n定義方法:定義方法:可以在可以在from 或或where子句中使用比較運算符給子句中使用比較運算符給出聯(lián)接條件對表進行聯(lián)接。出聯(lián)接條件對表進行聯(lián)接。指定各表中用于聯(lián)接的列。指定各表中
10、用于聯(lián)接的列。比較符可以是比較符可以是、=、!=、!聯(lián)接條件與聯(lián)接條件與where和和having子句的搜索條件配子句的搜索條件配合完成查詢。查詢所選的行首先通過合完成查詢。查詢所選的行首先通過 from 子句子句聯(lián)接條件進行篩選,其次由聯(lián)接條件進行篩選,其次由 where 子句搜索條子句搜索條件篩選,然后由件篩選,然后由 having 子句搜索條件篩選子句搜索條件篩選 。華北科技學(xué)院 李文武102021年11月10日星期三n僅顯示兩個聯(lián)接表中的匹配行的聯(lián)接。是查詢僅顯示兩個聯(lián)接表中的匹配行的聯(lián)接。是查詢分析器中的默認(rèn)聯(lián)接類型。分析器中的默認(rèn)聯(lián)接類型。n當(dāng)創(chuàng)建內(nèi)聯(lián)接時,包含當(dāng)創(chuàng)建內(nèi)聯(lián)接時,包含
11、 null 的列不與任何的列不與任何值匹配,因此不包括在結(jié)果集內(nèi)??罩挡慌c其值匹配,因此不包括在結(jié)果集內(nèi)??罩挡慌c其它的空值匹配。它的空值匹配。 n關(guān)鍵詞為:關(guān)鍵詞為:inner join華北科技學(xué)院 李文武112021年11月10日星期三n包括在聯(lián)接表中沒有相關(guān)行的行的聯(lián)接。包括在聯(lián)接表中沒有相關(guān)行的行的聯(lián)接。 n左向外聯(lián)接:包括第一個命名表(左向外聯(lián)接:包括第一個命名表(“左左”表,表,出現(xiàn)在出現(xiàn)在 join 子句的最左邊)中的所有行。不子句的最左邊)中的所有行。不包括右表中的不匹配行。包括右表中的不匹配行。left joinn右向外聯(lián)接:包括第二個命名表(右向外聯(lián)接:包括第二個命名表(“
12、右右”表,表,出現(xiàn)在出現(xiàn)在 join 子句的最右邊)中的所有行。不子句的最右邊)中的所有行。不包括左表中的不匹配行。包括左表中的不匹配行。right joinn完整外部聯(lián)接:包括所有聯(lián)接表中的所有行,完整外部聯(lián)接:包括所有聯(lián)接表中的所有行,不論它們是否匹配。不論它們是否匹配。full join 華北科技學(xué)院 李文武122021年11月10日星期三n在這類聯(lián)接的結(jié)果集內(nèi),兩個表中每兩個可能在這類聯(lián)接的結(jié)果集內(nèi),兩個表中每兩個可能成對的行占一行。成對的行占一行。 n交叉聯(lián)接不使用交叉聯(lián)接不使用where子句。子句。華北科技學(xué)院 李文武132021年11月10日星期三n子查詢是一個子查詢是一個 se
13、lect 查詢,它返回單個值查詢,它返回單個值且嵌套在且嵌套在 select、insert、update、delete 語句或其它子查詢中。任何允許使語句或其它子查詢中。任何允許使用表達式的地方都可以使用子查詢。用表達式的地方都可以使用子查詢。 n子查詢也稱為內(nèi)部查詢或內(nèi)部選擇,而包含子子查詢也稱為內(nèi)部查詢或內(nèi)部選擇,而包含子查詢的語句也稱為外部查詢或外部選擇。查詢的語句也稱為外部查詢或外部選擇。 華北科技學(xué)院 李文武142021年11月10日星期三n嵌套在外部嵌套在外部 select 語句中的子查詢包括以下語句中的子查詢包括以下組件:組件: 包含標(biāo)準(zhǔn)選擇列表組件的標(biāo)準(zhǔn)包含標(biāo)準(zhǔn)選擇列表組件的標(biāo)
14、準(zhǔn) select 查詢。查詢。包含一個或多個表或者視圖名的標(biāo)準(zhǔn)包含一個或多個表或者視圖名的標(biāo)準(zhǔn) from 子句。子句??蛇x的可選的 where 子句。子句。可選的可選的 group by 子句。子句??蛇x的可選的 having 子句。子句。n子查詢的子查詢的 select 查詢總是使用圓括號括起來。查詢總是使用圓括號括起來。且不能包括且不能包括 compute 或或 for browse 子子句,如果同時指定句,如果同時指定 top 子句,則可能只包括子句,則可能只包括 order by 子句。子句。 華北科技學(xué)院 李文武152021年11月10日星期三n子查詢可以嵌套在外部子查詢可以嵌套在外
15、部 select、insert、update 或或 delete 語句的語句的 where 或或 having 子句內(nèi),或者其它子查詢中。子句內(nèi),或者其它子查詢中。n盡管根據(jù)可用內(nèi)存和查詢中其它表達式的復(fù)雜盡管根據(jù)可用內(nèi)存和查詢中其它表達式的復(fù)雜程度不同,嵌套限制也有所不同,但嵌套到程度不同,嵌套限制也有所不同,但嵌套到 32 層是可能的。層是可能的。n如果某個表只出現(xiàn)在子查詢中而不出現(xiàn)在外部如果某個表只出現(xiàn)在子查詢中而不出現(xiàn)在外部查詢中,那么該表中的列就無法包含在輸出中查詢中,那么該表中的列就無法包含在輸出中(外部查詢的選擇列表)。(外部查詢的選擇列表)。 華北科技學(xué)院 李文武162021年
16、11月10日星期三n有三種基本的子查詢。它們是:有三種基本的子查詢。它們是: 在通過在通過 in 引入的列表或者由引入的列表或者由 any 或或 all 修改的比修改的比較運算符的列表上進行操作。較運算符的列表上進行操作。通過無修改的比較運算符引入,且必須返回單個值。通過無修改的比較運算符引入,且必須返回單個值。通過通過 exists 引入的存在測試。引入的存在測試。n通常采用以下格式中的一種:通常采用以下格式中的一種: where 表達式表達式 not in (子查詢子查詢)where 表達式表達式 比較運算符比較運算符 any | all (子查詢子查詢)where not exists
17、(子查詢子查詢)華北科技學(xué)院 李文武172021年11月10日星期三n子查詢受以下條件的限制:子查詢受以下條件的限制: 通過比較運算符引入的子查詢的選擇列表只能包括一個表達式或列名稱通過比較運算符引入的子查詢的選擇列表只能包括一個表達式或列名稱(分別對(分別對 select * 或列表進行或列表進行 exists 和和 in 操作除外)。操作除外)。如果外部查詢的如果外部查詢的 where 子句包括某個列名,則該子句必須與子查詢選子句包括某個列名,則該子句必須與子查詢選擇列表中的該列在聯(lián)接上兼容。擇列表中的該列在聯(lián)接上兼容。子查詢的選擇列表中不允許出現(xiàn)子查詢的選擇列表中不允許出現(xiàn) ntext、
18、text 和和 image 數(shù)據(jù)類型。數(shù)據(jù)類型。由于必須返回單個值,由無修改的比較運算符(指其后未接關(guān)鍵字由于必須返回單個值,由無修改的比較運算符(指其后未接關(guān)鍵字 any 或或 all)引入的子查詢不能包括)引入的子查詢不能包括 group by 和和 having 子句。子句。包括包括 group by 的子查詢不能使用的子查詢不能使用 distinct 關(guān)鍵字。關(guān)鍵字。不能指定不能指定 compute 和和 into 子句。子句。只有同時指定了只有同時指定了 top,才可以指定,才可以指定 order by。由子查詢創(chuàng)建的視圖不能更新。由子查詢創(chuàng)建的視圖不能更新。通過通過 exists
19、引入的子查詢的選擇列表由星號引入的子查詢的選擇列表由星號 (*) 組成,而不使用單個列組成,而不使用單個列名。通過名。通過 exists 引入的子查詢進行了存在測試,返回引入的子查詢進行了存在測試,返回 true 或或 false 而非數(shù)據(jù),所以這些子查詢的規(guī)則與標(biāo)準(zhǔn)選擇列表的規(guī)則完全相同。而非數(shù)據(jù),所以這些子查詢的規(guī)則與標(biāo)準(zhǔn)選擇列表的規(guī)則完全相同。華北科技學(xué)院 李文武182021年11月10日星期三n可以在許多地方指定子查詢:可以在許多地方指定子查詢: 使用別名時使用別名時使用使用 in 或或 not in 時時在在 update、delete 和和 insert 語句中語句中使用比較運算符
20、時使用比較運算符時使用使用 any、some 或或 all 時時使用使用 exists 或或 not exists 時時在有表達式的地方在有表達式的地方 華北科技學(xué)院 李文武192021年11月10日星期三n通過通過 in(或(或 not in)引入的子查詢結(jié)果是一列零值)引入的子查詢結(jié)果是一列零值或更多值。子查詢返回結(jié)果之后,外部查詢將利用這或更多值。子查詢返回結(jié)果之后,外部查詢將利用這些結(jié)果。些結(jié)果。 n使用聯(lián)接而不使用子查詢處理該問題及類似問題的一使用聯(lián)接而不使用子查詢處理該問題及類似問題的一個不同之處在于,聯(lián)接使您可以在結(jié)果中顯示多個表個不同之處在于,聯(lián)接使您可以在結(jié)果中顯示多個表中的
21、列。中的列。 n聯(lián)接總是可以表示為子查詢。子查詢經(jīng)常(但不總是)聯(lián)接總是可以表示為子查詢。子查詢經(jīng)常(但不總是)可以表示為聯(lián)接。這是因為聯(lián)接是對稱的:可以以任可以表示為聯(lián)接。這是因為聯(lián)接是對稱的:可以以任意順序?qū)⒈硪忭樞驅(qū)⒈?a 聯(lián)接到表聯(lián)接到表 b,而且會得到相同的答案。,而且會得到相同的答案。而對子查詢來說,情況則并非如此。而對子查詢來說,情況則并非如此。 華北科技學(xué)院 李文武202021年11月10日星期三n子查詢可以嵌套在子查詢可以嵌套在 update、delete 和和 insert 語句以及語句以及 select 語句中。語句中。 華北科技學(xué)院 李文武212021年11月10日星期
22、三n子查詢可由一個比較運算符(子查詢可由一個比較運算符(=、 =、, ! 或或 =)引入。)引入。n與使用與使用 in 引入的子查詢一樣,由未修改的比引入的子查詢一樣,由未修改的比較運算符(后面不跟較運算符(后面不跟 any 或或 all 的比較運算的比較運算符)引入的子查詢必須返回單個值而不是值列符)引入的子查詢必須返回單個值而不是值列表。如果這樣的子查詢返回多個值,將顯示錯表。如果這樣的子查詢返回多個值,將顯示錯誤信息。誤信息。n要使用由無修改的比較運算符引入的子查詢,要使用由無修改的比較運算符引入的子查詢,必須對數(shù)據(jù)和問題的本質(zhì)非常熟悉,以了解該必須對數(shù)據(jù)和問題的本質(zhì)非常熟悉,以了解該子
23、查詢實際是否只返回一個值。子查詢實際是否只返回一個值。華北科技學(xué)院 李文武222021年11月10日星期三n使用使用 exists 關(guān)鍵字引入一個子查詢時,就相關(guān)鍵字引入一個子查詢時,就相當(dāng)于進行一次存在測試。外部查詢的當(dāng)于進行一次存在測試。外部查詢的 where 子句測試子查詢返回的行是否存在。子查詢實子句測試子查詢返回的行是否存在。子查詢實際上不產(chǎn)生任何數(shù)據(jù);它只返回際上不產(chǎn)生任何數(shù)據(jù);它只返回 true 或或 false 值。值。n使用使用 exists 引入的子查詢語法如下:引入的子查詢語法如下:wherenotexists(子查詢子查詢)華北科技學(xué)院 李文武232021年11月10日
24、星期三n子查詢自身可以包括一個或多個子查詢。一個子查詢自身可以包括一個或多個子查詢。一個語句中可以嵌套任意數(shù)量的子查詢。語句中可以嵌套任意數(shù)量的子查詢。 華北科技學(xué)院 李文武242021年11月10日星期三n創(chuàng)建新表并將結(jié)果行從查詢插入新表中。創(chuàng)建新表并將結(jié)果行從查詢插入新表中。n用戶若要執(zhí)行帶用戶若要執(zhí)行帶 into 子句的子句的 select 語句,語句,必須在目的數(shù)據(jù)庫內(nèi)具有必須在目的數(shù)據(jù)庫內(nèi)具有 create table 權(quán)權(quán)限。限。select.into 不能與不能與 compute 子句子句一起使用。一起使用。華北科技學(xué)院 李文武252021年11月10日星期三nntext、tex
25、t 和和 image 數(shù)據(jù)類型在單個值中可以包含數(shù)據(jù)類型在單個值中可以包含非常大的數(shù)據(jù)量(最大可達非常大的數(shù)據(jù)量(最大可達 2 gb)。單個數(shù)據(jù)值通)。單個數(shù)據(jù)值通常比應(yīng)用程序在一個步驟中能夠檢索的大;某些值可常比應(yīng)用程序在一個步驟中能夠檢索的大;某些值可能還會大于客戶端的可用虛擬內(nèi)存。因此,在檢索這能還會大于客戶端的可用虛擬內(nèi)存。因此,在檢索這些值時,通常需要一些特殊的步驟。些值時,通常需要一些特殊的步驟。 n如果如果 ntext、text 和和 image 數(shù)據(jù)值不超過數(shù)據(jù)值不超過 unicode 串、字符串或二進制串的長度(分別為串、字符串或二進制串的長度(分別為 4,000 個字符、個
26、字符、8,000 個字符和個字符和 8,000 個字節(jié)),就可以在個字節(jié)),就可以在 select、update 和和 insert 語句中引用它們,其引用方式語句中引用它們,其引用方式與較小的數(shù)據(jù)類型相同。與較小的數(shù)據(jù)類型相同。 華北科技學(xué)院 李文武262021年11月10日星期三n包含短值的包含短值的 ntext 列可在列可在 select 語句的選擇語句的選擇列表中引用,與列表中引用,與 nvarchar 列的引用方式相同。列的引用方式相同。n引用時必須遵守一些限制,例如不能在引用時必須遵守一些限制,例如不能在 where 子句中直接引用子句中直接引用 ntext、text 或或 ima
27、ge 列。列。n這些列可以作為返回其它數(shù)據(jù)類型(例如這些列可以作為返回其它數(shù)據(jù)類型(例如 isnull、substring 或或 patindex)的某個)的某個函數(shù)的參數(shù)包含在函數(shù)的參數(shù)包含在 where 子句中,也可以包子句中,也可以包含在含在 is null、is not null 或或 like 表達式表達式中。中。 華北科技學(xué)院 李文武272021年11月10日星期三n事務(wù)是作為單個邏輯工作單元執(zhí)行的一系列操作。事務(wù)是作為單個邏輯工作單元執(zhí)行的一系列操作。n一個邏輯工作單元必須有四個屬性,稱為一個邏輯工作單元必須有四個屬性,稱為 acid(原子(原子性、一致性、隔離性和持久性)屬性,
28、只有這樣才能成性、一致性、隔離性和持久性)屬性,只有這樣才能成為一個事務(wù):為一個事務(wù):原子性:事務(wù)必須是原子工作單元;對于其數(shù)據(jù)修改,要么原子性:事務(wù)必須是原子工作單元;對于其數(shù)據(jù)修改,要么全都執(zhí)行,要么全都不執(zhí)行。全都執(zhí)行,要么全都不執(zhí)行。一致性:事務(wù)在完成時,必須使所有的數(shù)據(jù)都保持一致狀態(tài)。一致性:事務(wù)在完成時,必須使所有的數(shù)據(jù)都保持一致狀態(tài)。在相關(guān)數(shù)據(jù)庫中,所有規(guī)則都必須應(yīng)用于事務(wù)的修改,以保在相關(guān)數(shù)據(jù)庫中,所有規(guī)則都必須應(yīng)用于事務(wù)的修改,以保持所有數(shù)據(jù)的完整性。事務(wù)結(jié)束時,所有的內(nèi)部數(shù)據(jù)結(jié)構(gòu)持所有數(shù)據(jù)的完整性。事務(wù)結(jié)束時,所有的內(nèi)部數(shù)據(jù)結(jié)構(gòu)(如(如 b 樹索引或雙向鏈表)都必須是正確的
29、。樹索引或雙向鏈表)都必須是正確的。 華北科技學(xué)院 李文武282021年11月10日星期三隔離性:由并發(fā)事務(wù)所作的修改必須與任何其它隔離性:由并發(fā)事務(wù)所作的修改必須與任何其它并發(fā)事務(wù)所作的修改隔離。事務(wù)查看數(shù)據(jù)時數(shù)據(jù)并發(fā)事務(wù)所作的修改隔離。事務(wù)查看數(shù)據(jù)時數(shù)據(jù)所處的狀態(tài),要么是另一并發(fā)事務(wù)修改它之前的所處的狀態(tài),要么是另一并發(fā)事務(wù)修改它之前的狀態(tài),要么是另一事務(wù)修改它之后的狀態(tài),事務(wù)狀態(tài),要么是另一事務(wù)修改它之后的狀態(tài),事務(wù)不會查看中間狀態(tài)的數(shù)據(jù)。這稱為可串行性,因不會查看中間狀態(tài)的數(shù)據(jù)。這稱為可串行性,因為它能夠重新裝載起始數(shù)據(jù),并且重播一系列事為它能夠重新裝載起始數(shù)據(jù),并且重播一系列事務(wù),以
30、使數(shù)據(jù)結(jié)束時的狀態(tài)與原始事務(wù)執(zhí)行的狀務(wù),以使數(shù)據(jù)結(jié)束時的狀態(tài)與原始事務(wù)執(zhí)行的狀態(tài)相同。態(tài)相同。持久性:事務(wù)完成之后,它對于系統(tǒng)的影響是永持久性:事務(wù)完成之后,它對于系統(tǒng)的影響是永久性的。該修改即使出現(xiàn)系統(tǒng)故障也將一直保持。久性的。該修改即使出現(xiàn)系統(tǒng)故障也將一直保持。華北科技學(xué)院 李文武292021年11月10日星期三nsql server以三種事務(wù)模式運行:以三種事務(wù)模式運行:自動提交事務(wù):每條單獨的語句都是一個事務(wù)。自動提交事務(wù):每條單獨的語句都是一個事務(wù)。是是 sql server的默認(rèn)事務(wù)管理模式。的默認(rèn)事務(wù)管理模式。n每個每個 t-sql 語句在完成時,都被提交或回滾。語句在完成時,都
31、被提交或回滾。n如果一個語句成功地完成,則提交該語句;如果遇到錯如果一個語句成功地完成,則提交該語句;如果遇到錯誤,則回滾該語句。誤,則回滾該語句。n自動提交模式也是自動提交模式也是 ado、ole db、odbc 和和 db-library 的默認(rèn)模式。的默認(rèn)模式。 華北科技學(xué)院 李文武302021年11月10日星期三顯式事務(wù):也稱為用戶定義或用戶指定的事務(wù)。顯式事務(wù):也稱為用戶定義或用戶指定的事務(wù)。每個事務(wù)均以每個事務(wù)均以 begin transaction 語句顯式語句顯式開始,以開始,以 commit 或或 rollback 語句顯式結(jié)束。語句顯式結(jié)束。隱性事務(wù):在前一個事務(wù)完成時新事
32、務(wù)隱式啟動,隱性事務(wù):在前一個事務(wù)完成時新事務(wù)隱式啟動,但每個事務(wù)仍以但每個事務(wù)仍以 commit 或或 rollback 語句顯語句顯式完成。式完成。華北科技學(xué)院 李文武312021年11月10日星期三n1.啟動事務(wù)啟動事務(wù)語法語法nbegin tran saction transaction_name | tran_name_variable with mark description 參數(shù)參數(shù)ntransaction_name:是給事務(wù)分配的名稱。必須遵循標(biāo)識符規(guī)則,但是給事務(wù)分配的名稱。必須遵循標(biāo)識符規(guī)則,但是不允許標(biāo)識符多于是不允許標(biāo)識符多于 32 個字符。僅在嵌套的個字符。僅在嵌套
33、的 begin.commit 或或 begin.rollback 語句的最外語句對上使用事務(wù)名。語句的最外語句對上使用事務(wù)名。ntran_name_variable:是用戶定義的、含有有效事務(wù)名稱的變量的是用戶定義的、含有有效事務(wù)名稱的變量的名稱。必須用名稱。必須用 char、varchar、nchar 或或 nvarchar 數(shù)據(jù)類型聲明。數(shù)據(jù)類型聲明。nwith mark description:指定在日志中標(biāo)記事務(wù)。:指定在日志中標(biāo)記事務(wù)。description 是描述該標(biāo)記的字符串。如果使用了是描述該標(biāo)記的字符串。如果使用了 with mark,則必須指定事務(wù),則必須指定事務(wù)名。名。w
34、ith mark 允許將事務(wù)日志還原到命名標(biāo)記。允許將事務(wù)日志還原到命名標(biāo)記。華北科技學(xué)院 李文武322021年11月10日星期三n語法語法commit tran saction transaction_name | tran_name_variable n參數(shù)參數(shù)transaction_name:sql server忽略該參數(shù)。忽略該參數(shù)。transaction_name 指定由前面的指定由前面的 begin transaction 指派的事務(wù)名稱。通過向程序員指明指派的事務(wù)名稱。通過向程序員指明 commit transaction 與哪些嵌套的與哪些嵌套的 begin transacti
35、on 相關(guān)相關(guān)聯(lián),聯(lián),transaction_name 可作為幫助閱讀的一種方法??勺鳛閹椭喿x的一種方法。tran_name_variable:是用戶定義的、含有有效事務(wù)名稱是用戶定義的、含有有效事務(wù)名稱的變量的名稱。必須用的變量的名稱。必須用 char、varchar、nchar 或或 nvarchar 數(shù)據(jù)類型聲明該變量。數(shù)據(jù)類型聲明該變量。華北科技學(xué)院 李文武332021年11月10日星期三n結(jié)束一個成功的隱性事務(wù)或用戶定義事務(wù)。結(jié)束一個成功的隱性事務(wù)或用戶定義事務(wù)。ncommit work標(biāo)志事務(wù)的結(jié)束。標(biāo)志事務(wù)的結(jié)束。語法:語法:commit work 與與 commit tran
36、saction 相同,但相同,但 commit transaction 接受用戶定義的事務(wù)名稱。接受用戶定義的事務(wù)名稱。 華北科技學(xué)院 李文武342021年11月10日星期三n語法語法rollback tran saction transaction_name | tran_name_variable | savepoint_name | savepoint_variable n參數(shù)參數(shù)transaction_name:是給是給 begin transaction 上的事務(wù)上的事務(wù)指派的名稱。嵌套事務(wù)時,指派的名稱。嵌套事務(wù)時,transaction_name 必須是來自最必須是來自最遠(yuǎn)的遠(yuǎn)的
37、 begin transaction 語句的名稱。語句的名稱。tran_name_variable:是用戶定義的、含有有效事務(wù)名稱是用戶定義的、含有有效事務(wù)名稱的變量的名稱。的變量的名稱。savepoint_name:是來自是來自 save transaction 語句的語句的 savepoint_name。savepoint_name 必須符合標(biāo)識符規(guī)則。必須符合標(biāo)識符規(guī)則。當(dāng)條件回滾只影響事務(wù)的一部分時使用當(dāng)條件回滾只影響事務(wù)的一部分時使用 savepoint_name。savepoint_variable:是用戶定義的、含有有效保存點名是用戶定義的、含有有效保存點名稱的變量的名稱。必須用
38、稱的變量的名稱。必須用 char、varchar、nchar 或或 nvarchar 數(shù)據(jù)類型聲明該變量。數(shù)據(jù)類型聲明該變量。華北科技學(xué)院 李文武352021年11月10日星期三n將顯式事務(wù)或隱性事務(wù)回滾到事務(wù)的起點或事將顯式事務(wù)或隱性事務(wù)回滾到事務(wù)的起點或事務(wù)內(nèi)的某個保存點。務(wù)內(nèi)的某個保存點。 nrollback transaction 清除自事務(wù)的清除自事務(wù)的起點或到某個保存點所做的所有數(shù)據(jù)修改。起點或到某個保存點所做的所有數(shù)據(jù)修改。rollback 還釋放由事務(wù)控制的資源。還釋放由事務(wù)控制的資源。nrollback work將用戶定義的事務(wù)回滾到事務(wù)的起點。將用戶定義的事務(wù)回滾到事務(wù)的起
39、點。語法:語法:rollback work 華北科技學(xué)院 李文武362021年11月10日星期三n語法語法save tran saction savepoint_name | savepoint_variable n參數(shù)參數(shù)savepoint_name:是指派給保存點的名稱。保存點是指派給保存點的名稱。保存點名稱必須符合標(biāo)識符規(guī)則,但只使用前名稱必須符合標(biāo)識符規(guī)則,但只使用前 32 個字符。個字符。savepoint_variable:是用戶定義的、含有有效保是用戶定義的、含有有效保存點名稱的變量的名稱。必須用存點名稱的變量的名稱。必須用 char、varchar、nchar 或或 nvarc
40、har 數(shù)據(jù)類型聲明該變量。數(shù)據(jù)類型聲明該變量。華北科技學(xué)院 李文武372021年11月10日星期三n用戶可以在事務(wù)內(nèi)設(shè)置保存點或標(biāo)記。保存點用戶可以在事務(wù)內(nèi)設(shè)置保存點或標(biāo)記。保存點定義的是:如果有條件地取消事務(wù)的一部分,定義的是:如果有條件地取消事務(wù)的一部分,事務(wù)可以返回的位置。事務(wù)可以返回的位置。 華北科技學(xué)院 李文武382021年11月10日星期三nwith mark descriptionn指定在日志中標(biāo)記事務(wù)。將數(shù)據(jù)庫還原到早期指定在日志中標(biāo)記事務(wù)。將數(shù)據(jù)庫還原到早期狀態(tài)時,可使用標(biāo)記事務(wù)替代日期和時間。狀態(tài)時,可使用標(biāo)記事務(wù)替代日期和時間。 description 是描述該標(biāo)記的字
41、符串。是描述該標(biāo)記的字符串。n如果使用了如果使用了 with mark,則必須指定事務(wù)名。,則必須指定事務(wù)名。with mark 允許將事務(wù)日志還原到命名標(biāo)記。允許將事務(wù)日志還原到命名標(biāo)記。n只有當(dāng)數(shù)據(jù)庫由標(biāo)記事務(wù)更新時,才在事務(wù)日只有當(dāng)數(shù)據(jù)庫由標(biāo)記事務(wù)更新時,才在事務(wù)日志中放置標(biāo)記。不修改數(shù)據(jù)的事務(wù)不被標(biāo)記。志中放置標(biāo)記。不修改數(shù)據(jù)的事務(wù)不被標(biāo)記。 華北科技學(xué)院 李文武392021年11月10日星期三n一些不能撤銷的操作,其對數(shù)據(jù)庫的操作是不一些不能撤銷的操作,其對數(shù)據(jù)庫的操作是不能恢復(fù)的。如創(chuàng)建、修改、刪除數(shù)據(jù)庫等。能恢復(fù)的。如創(chuàng)建、修改、刪除數(shù)據(jù)庫等。np168華北科技學(xué)院 李文武402
42、021年11月10日星期三n編譯錯誤將阻止編譯錯誤將阻止 sql server 建立執(zhí)行計劃,建立執(zhí)行計劃,這樣批處理中的任何語句都不會執(zhí)行。這樣批處理中的任何語句都不會執(zhí)行。 n運行錯誤時,該語句之前的結(jié)果被保留下來。運行錯誤時,該語句之前的結(jié)果被保留下來。nsql server 使用延遲的名稱解析,其中對象使用延遲的名稱解析,其中對象名直到執(zhí)行時才被解析。名直到執(zhí)行時才被解析。 所以錯誤的對象名所以錯誤的對象名不會在編譯時指出。不會在編譯時指出。 華北科技學(xué)院 李文武412021年11月10日星期三n在為連接將隱性事務(wù)模式設(shè)置為打開之后,當(dāng)在為連接將隱性事務(wù)模式設(shè)置為打開之后,當(dāng) sql
43、server 首次執(zhí)行下列任何語句時,都會自動啟動一首次執(zhí)行下列任何語句時,都會自動啟動一個事務(wù):個事務(wù):n在在 commit 或或 rollback 語句之前,該事務(wù)將一語句之前,該事務(wù)將一直保持有效。在第一個事務(wù)被提交或回滾之后,下次直保持有效。在第一個事務(wù)被提交或回滾之后,下次當(dāng)連接執(zhí)行這些語句中的任何語句時,當(dāng)連接執(zhí)行這些語句中的任何語句時,sql server 都將自動啟動一個新事務(wù)。都將自動啟動一個新事務(wù)。sql server 將不斷地生將不斷地生成一個隱性事務(wù)鏈,直到隱性事務(wù)模式關(guān)閉為止。成一個隱性事務(wù)鏈,直到隱性事務(wù)模式關(guān)閉為止。alter tableinsertcreateo
44、pendeleterevokedropselectfetchtruncate tablegrantupdate華北科技學(xué)院 李文武422021年11月10日星期三nset implicit_transactions on 語句啟語句啟動隱性事務(wù)模式。動隱性事務(wù)模式。n set implicit_transactions off 語句語句關(guān)閉隱性事務(wù)模式。關(guān)閉隱性事務(wù)模式。n使用使用 commit transaction、commit work、rollback transaction 或或 rollback work 語句結(jié)束每個事務(wù)。語句結(jié)束每個事務(wù)。 華北科技學(xué)院 李文武432021年11
45、月10日星期三n如果連接已經(jīng)在打開的事務(wù)中,則上述語句不啟動新如果連接已經(jīng)在打開的事務(wù)中,則上述語句不啟動新事務(wù)。事務(wù)。n對于因為該設(shè)置為對于因為該設(shè)置為 on 而自動打開的事務(wù),用戶必而自動打開的事務(wù),用戶必須在該事務(wù)結(jié)束時將其顯式提交或回滾。否則當(dāng)用戶須在該事務(wù)結(jié)束時將其顯式提交或回滾。否則當(dāng)用戶斷開連接時,事務(wù)及其所包含的所有數(shù)據(jù)更改將回滾。斷開連接時,事務(wù)及其所包含的所有數(shù)據(jù)更改將回滾。在事務(wù)提交后,執(zhí)行上述任一語句即可啟動新事務(wù)。在事務(wù)提交后,執(zhí)行上述任一語句即可啟動新事務(wù)。n隱性事務(wù)模式將保持有效,直到連接執(zhí)行隱性事務(wù)模式將保持有效,直到連接執(zhí)行 set implicit_tran
46、sactions off 語句使連接返回語句使連接返回到自動提交模式。在自動提交模式下,如果各個語句到自動提交模式。在自動提交模式下,如果各個語句成功完成則提交。成功完成則提交。華北科技學(xué)院 李文武442021年11月10日星期三n通過鎖定確保事務(wù)完整性和數(shù)據(jù)庫的一致性。通過鎖定確保事務(wù)完整性和數(shù)據(jù)庫的一致性。n如:如:讀取正由其他用戶更改的數(shù)據(jù)讀取正由其他用戶更改的數(shù)據(jù)多個用戶同時更改同一數(shù)據(jù)多個用戶同時更改同一數(shù)據(jù)華北科技學(xué)院 李文武452021年11月10日星期三n如果沒有鎖定且多個用戶同時訪問一個數(shù)據(jù)庫,如果沒有鎖定且多個用戶同時訪問一個數(shù)據(jù)庫,則當(dāng)他們的事務(wù)同時使用相同的數(shù)據(jù)時可能會
47、則當(dāng)他們的事務(wù)同時使用相同的數(shù)據(jù)時可能會發(fā)生問題。并發(fā)問題包括:發(fā)生問題。并發(fā)問題包括: 丟失或覆蓋更新。丟失或覆蓋更新。未確認(rèn)的相關(guān)性(未確認(rèn)的相關(guān)性(臟讀臟讀)。)。不一致的分析(不一致的分析(非重復(fù)讀非重復(fù)讀)。)?;孟褡x?;孟褡x。華北科技學(xué)院 李文武462021年11月10日星期三n當(dāng)兩個或多個事務(wù)選擇同一行,然后基于最初當(dāng)兩個或多個事務(wù)選擇同一行,然后基于最初選定的值更新該行時,會發(fā)生丟失更新問題。選定的值更新該行時,會發(fā)生丟失更新問題。每個事務(wù)都不知道其它事務(wù)的存在。每個事務(wù)都不知道其它事務(wù)的存在。n最后的更新將重寫由其它事務(wù)所做的更新,這最后的更新將重寫由其它事務(wù)所做的更新,這將
48、導(dǎo)致數(shù)據(jù)丟失。將導(dǎo)致數(shù)據(jù)丟失。 華北科技學(xué)院 李文武472021年11月10日星期三n當(dāng)?shù)诙€事務(wù)選擇其它事務(wù)正在更新的行時,當(dāng)?shù)诙€事務(wù)選擇其它事務(wù)正在更新的行時,會發(fā)生未確認(rèn)的相關(guān)性問題。會發(fā)生未確認(rèn)的相關(guān)性問題。n第二個事務(wù)正在讀取的數(shù)據(jù)還沒有確認(rèn)并且可第二個事務(wù)正在讀取的數(shù)據(jù)還沒有確認(rèn)并且可能由更新此行的事務(wù)所更改。能由更新此行的事務(wù)所更改。華北科技學(xué)院 李文武482021年11月10日星期三n當(dāng)?shù)诙€事務(wù)多次訪問同一行而且每次讀取不當(dāng)?shù)诙€事務(wù)多次訪問同一行而且每次讀取不同的數(shù)據(jù)時,會發(fā)生不一致的分析問題。同的數(shù)據(jù)時,會發(fā)生不一致的分析問題。n不一致的分析與未確認(rèn)的相關(guān)性類似,因為其
49、不一致的分析與未確認(rèn)的相關(guān)性類似,因為其它事務(wù)也是正在更改第二個事務(wù)正在讀取的數(shù)它事務(wù)也是正在更改第二個事務(wù)正在讀取的數(shù)據(jù)。然而,在不一致的分析中,第二個事務(wù)讀據(jù)。然而,在不一致的分析中,第二個事務(wù)讀取的數(shù)據(jù)是由已進行了更改的事務(wù)提交的。取的數(shù)據(jù)是由已進行了更改的事務(wù)提交的。n而且,不一致的分析涉及多次(兩次或更多)而且,不一致的分析涉及多次(兩次或更多)讀取同一行,而且每次信息都由其它事務(wù)更改;讀取同一行,而且每次信息都由其它事務(wù)更改;因而該行被非重復(fù)讀取。因而該行被非重復(fù)讀取。 華北科技學(xué)院 李文武492021年11月10日星期三n當(dāng)對某行執(zhí)行插入或刪除操作,而該行屬于某當(dāng)對某行執(zhí)行插入或
50、刪除操作,而該行屬于某個事務(wù)正在讀取的行的范圍時,會發(fā)生幻像讀個事務(wù)正在讀取的行的范圍時,會發(fā)生幻像讀問題。問題。n事務(wù)第一次讀的行范圍顯示出其中一行已不復(fù)事務(wù)第一次讀的行范圍顯示出其中一行已不復(fù)存在于第二次讀或后續(xù)讀中,因為該行已被其存在于第二次讀或后續(xù)讀中,因為該行已被其它事務(wù)刪除。它事務(wù)刪除。n同樣,由于其它事務(wù)的插入操作,事務(wù)的第二同樣,由于其它事務(wù)的插入操作,事務(wù)的第二次或后續(xù)讀顯示有一行已不存在于原始讀中。次或后續(xù)讀顯示有一行已不存在于原始讀中。 華北科技學(xué)院 李文武502021年11月10日星期三nsql server 2000 提供了樂觀并發(fā)控制和悲觀提供了樂觀并發(fā)控制和悲觀并
51、發(fā)控制。樂觀并發(fā)控制使用游標(biāo)。并發(fā)控制。樂觀并發(fā)控制使用游標(biāo)。sql server 默認(rèn)使用悲觀并發(fā)控制。默認(rèn)使用悲觀并發(fā)控制。 樂觀并發(fā):樂觀并發(fā)控制假定不太可能(但不是樂觀并發(fā):樂觀并發(fā)控制假定不太可能(但不是不可能)在多個用戶間發(fā)生資源沖突,允許不鎖不可能)在多個用戶間發(fā)生資源沖突,允許不鎖定任何資源而執(zhí)行事務(wù)。只有試圖更改數(shù)據(jù)時才定任何資源而執(zhí)行事務(wù)。只有試圖更改數(shù)據(jù)時才檢查資源以確定是否發(fā)生沖突。如果發(fā)生沖突,檢查資源以確定是否發(fā)生沖突。如果發(fā)生沖突,應(yīng)用程序必須讀取數(shù)據(jù)并再次嘗試進行更改。應(yīng)用程序必須讀取數(shù)據(jù)并再次嘗試進行更改。 悲觀并發(fā):悲觀并發(fā)控制根據(jù)需要在事務(wù)的持續(xù)悲觀并發(fā):
52、悲觀并發(fā)控制根據(jù)需要在事務(wù)的持續(xù)時間內(nèi)鎖定資源。除非出現(xiàn)死鎖,否則事務(wù)肯定時間內(nèi)鎖定資源。除非出現(xiàn)死鎖,否則事務(wù)肯定會成功完成。會成功完成。華北科技學(xué)院 李文武512021年11月10日星期三n當(dāng)鎖定用作并發(fā)控制機制時,它可以解決并發(fā)問題。當(dāng)鎖定用作并發(fā)控制機制時,它可以解決并發(fā)問題。這使所有事務(wù)得以在彼此完全隔離的環(huán)境中運行,但這使所有事務(wù)得以在彼此完全隔離的環(huán)境中運行,但是任何時候都可以有多個正在運行的事務(wù)。是任何時候都可以有多個正在運行的事務(wù)。 n盡管可串行性對于事務(wù)確保數(shù)據(jù)庫中的數(shù)據(jù)在所有時盡管可串行性對于事務(wù)確保數(shù)據(jù)庫中的數(shù)據(jù)在所有時間內(nèi)的正確性相當(dāng)重要,然而許多事務(wù)并不總是要求間內(nèi)
53、的正確性相當(dāng)重要,然而許多事務(wù)并不總是要求完全的隔離。完全的隔離。 n事務(wù)準(zhǔn)備接受不一致數(shù)據(jù)的級別稱為隔離級別。隔離事務(wù)準(zhǔn)備接受不一致數(shù)據(jù)的級別稱為隔離級別。隔離級別是一個事務(wù)必須與其它事務(wù)進行隔離的程度。較級別是一個事務(wù)必須與其它事務(wù)進行隔離的程度。較低的隔離級別可以增加并發(fā),但代價是降低數(shù)據(jù)的正低的隔離級別可以增加并發(fā),但代價是降低數(shù)據(jù)的正確性。相反,較高的隔離級別可以確保數(shù)據(jù)的正確性,確性。相反,較高的隔離級別可以確保數(shù)據(jù)的正確性,但可能對并發(fā)產(chǎn)生負(fù)面影響。應(yīng)用程序要求的隔離級但可能對并發(fā)產(chǎn)生負(fù)面影響。應(yīng)用程序要求的隔離級別確定了別確定了 sql server 使用的鎖定行為。使用的鎖定
54、行為。 華北科技學(xué)院 李文武522021年11月10日星期三nsql server 支持所有這些隔離級別:支持所有這些隔離級別: 未提交讀(事務(wù)隔離的最低級別,僅可保證不讀取物理損未提交讀(事務(wù)隔離的最低級別,僅可保證不讀取物理損壞的數(shù)據(jù))。壞的數(shù)據(jù))。提交讀(提交讀(sql server 默認(rèn)級別)。不允許臟讀。默認(rèn)級別)。不允許臟讀??芍貜?fù)讀。允許幻像讀。可重復(fù)讀。允許幻像讀??纱凶x(事務(wù)隔離的最高級別,事務(wù)之間完全隔離)。可串行讀(事務(wù)隔離的最高級別,事務(wù)之間完全隔離)。 n事務(wù)必須運行于可重復(fù)讀或更高的隔離級別以防止丟事務(wù)必須運行于可重復(fù)讀或更高的隔離級別以防止丟失更新。失更新。n當(dāng)
55、兩個事務(wù)檢索相同的行,然后基于原檢索的值對行當(dāng)兩個事務(wù)檢索相同的行,然后基于原檢索的值對行進行更新時,會發(fā)生丟失更新。進行更新時,會發(fā)生丟失更新。n如果兩個事務(wù)使用一個如果兩個事務(wù)使用一個 update 語句更新行,并且語句更新行,并且不基于以前檢索的值進行更新,則在默認(rèn)的提交讀隔不基于以前檢索的值進行更新,則在默認(rèn)的提交讀隔離級別不會發(fā)生丟失更新。離級別不會發(fā)生丟失更新。華北科技學(xué)院 李文武532021年11月10日星期三nsql server 可以鎖定以下資源(按粒度增加的順序可以鎖定以下資源(按粒度增加的順序列出)。列出)。資源資源描述描述ridrid行標(biāo)識符。用于單獨鎖定表中的一行。行
56、標(biāo)識符。用于單獨鎖定表中的一行。鍵鍵(key)(key)索引中的行鎖。用于保護可串行事務(wù)中的鍵范圍。索引中的行鎖。用于保護可串行事務(wù)中的鍵范圍。頁頁(pag)(pag)8 8 千字節(jié)千字節(jié) (kb) (kb) 的數(shù)據(jù)頁或索引頁。的數(shù)據(jù)頁或索引頁。擴展盤區(qū)擴展盤區(qū)(ext)(ext)相鄰的八個數(shù)據(jù)頁或索引頁構(gòu)成的一組。相鄰的八個數(shù)據(jù)頁或索引頁構(gòu)成的一組。表表(tab)(tab)包括所有數(shù)據(jù)和索引在內(nèi)的整個表。包括所有數(shù)據(jù)和索引在內(nèi)的整個表。dbdb數(shù)據(jù)庫。數(shù)據(jù)庫。華北科技學(xué)院 李文武542021年11月10日星期三sql server 使用不同的鎖模式鎖定資源,這些鎖模式確定使用不同的鎖模式鎖定
57、資源,這些鎖模式確定了并發(fā)事務(wù)訪問資源的方式。了并發(fā)事務(wù)訪問資源的方式。鎖模式鎖模式描述描述共享共享 (s)(s)用于不更改或不更新數(shù)據(jù)的操作(只讀操作),如用于不更改或不更新數(shù)據(jù)的操作(只讀操作),如 select select 語句。語句。更新更新 (u)(u)用于可更新的資源中。防止當(dāng)多個會話在讀取、鎖定以及隨用于可更新的資源中。防止當(dāng)多個會話在讀取、鎖定以及隨后可能進行的資源更新時發(fā)生常見形式的死鎖。后可能進行的資源更新時發(fā)生常見形式的死鎖。排它排它 (x)(x)用于數(shù)據(jù)修改操作,例如用于數(shù)據(jù)修改操作,例如 insertinsert、update update 或或 deletedel
58、ete。確。確保不會同時對同一資源進行多重更新。保不會同時對同一資源進行多重更新。意向意向用于建立鎖的層次結(jié)構(gòu)。意向鎖的類型為:意向共享用于建立鎖的層次結(jié)構(gòu)。意向鎖的類型為:意向共享 (is)(is)、意向排它意向排它 (ix) (ix) 以及與意向排它共享以及與意向排它共享 (six)(six)。架構(gòu)架構(gòu)在執(zhí)行依賴于表架構(gòu)的操作時使用。架構(gòu)鎖的類型為:架構(gòu)在執(zhí)行依賴于表架構(gòu)的操作時使用。架構(gòu)鎖的類型為:架構(gòu)修改修改 (sch(sch-m) -m) 和架構(gòu)穩(wěn)定性和架構(gòu)穩(wěn)定性 (sch(sch-s)-s)。大容量更新大容量更新 (bu)(bu)向表中大容量復(fù)制數(shù)據(jù)并指定了向表中大容量復(fù)制數(shù)據(jù)并指
59、定了 tablock tablock 提示時使用。提示時使用。華北科技學(xué)院 李文武552021年11月10日星期三n共享共享 (s) 鎖允許并發(fā)事務(wù)讀取鎖允許并發(fā)事務(wù)讀取 (select) 一個一個資源。資源上存在共享資源。資源上存在共享 (s) 鎖時,任何其它事鎖時,任何其它事務(wù)都不能修改數(shù)據(jù)。務(wù)都不能修改數(shù)據(jù)。n一旦已經(jīng)讀取數(shù)據(jù),便立即釋放資源上的共享一旦已經(jīng)讀取數(shù)據(jù),便立即釋放資源上的共享 (s) 鎖,除非將事務(wù)隔離級別設(shè)置為可重復(fù)讀鎖,除非將事務(wù)隔離級別設(shè)置為可重復(fù)讀或更高級別,或者在事務(wù)生存周期內(nèi)用鎖定提或更高級別,或者在事務(wù)生存周期內(nèi)用鎖定提示保留共享示保留共享 (s) 鎖。鎖。華
60、北科技學(xué)院 李文武562021年11月10日星期三n更新更新 (u) 鎖可以防止通常形式的死鎖。一般更新模式由一個事務(wù)鎖可以防止通常形式的死鎖。一般更新模式由一個事務(wù)組成,此事務(wù)讀取記錄,獲取資源(頁或行)的共享組成,此事務(wù)讀取記錄,獲取資源(頁或行)的共享 (s) 鎖,然鎖,然后修改行,此操作要求鎖轉(zhuǎn)換為排它后修改行,此操作要求鎖轉(zhuǎn)換為排它 (x) 鎖。鎖。n如果兩個事務(wù)獲得了資源上的共享模式鎖,然后試圖同時更新數(shù)如果兩個事務(wù)獲得了資源上的共享模式鎖,然后試圖同時更新數(shù)據(jù),則一個事務(wù)嘗試將鎖轉(zhuǎn)換為排它據(jù),則一個事務(wù)嘗試將鎖轉(zhuǎn)換為排它 (x) 鎖。鎖。n共享模式到排它鎖的轉(zhuǎn)換必須等待一段時間,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度美容美發(fā)行業(yè)品牌推廣與廣告投放合同4篇
- 2025版五金制品研發(fā)、生產(chǎn)與銷售合作協(xié)議2篇
- 2025年度鋁合金門窗維修保養(yǎng)服務(wù)合同模板4篇
- 2025年度高速公路路基采石供應(yīng)合同3篇
- 2025年行政法律文書數(shù)字化處理及輸出合同3篇
- 精準(zhǔn)農(nóng)業(yè)2025年度糧食儲備風(fēng)險管理與保險合同3篇
- 二零二五紅酒年份酒定制銷售及品牌合作合同范本3篇
- 二零二五版門窗行業(yè)環(huán)保材料采購合同8篇
- 2025年度鋁窗產(chǎn)品研發(fā)與創(chuàng)新激勵合同4篇
- 2025年度道路施工勞務(wù)分包合同4篇
- 2024-2025學(xué)年人教版數(shù)學(xué)六年級上冊 期末綜合試卷(含答案)
- 收養(yǎng)能力評分表
- 山東省桓臺第一中學(xué)2024-2025學(xué)年高一上學(xué)期期中考試物理試卷(拓展部)(無答案)
- 中華人民共和國保守國家秘密法實施條例培訓(xùn)課件
- 管道坡口技術(shù)培訓(xùn)
- 2024年全國統(tǒng)一高考英語試卷(新課標(biāo)Ⅰ卷)含答案
- 2024年認(rèn)證行業(yè)法律法規(guī)及認(rèn)證基礎(chǔ)知識 CCAA年度確認(rèn) 試題與答案
- 皮膚儲存新技術(shù)及臨床應(yīng)用
- 外研版七年級英語上冊《閱讀理解》專項練習(xí)題(含答案)
- 2024年遼寧石化職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫必考題
- 上海市復(fù)旦大學(xué)附中2024屆高考沖刺模擬數(shù)學(xué)試題含解析
評論
0/150
提交評論