亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

數(shù)據(jù)庫(kù)面試題型

Lemon_95 / 1942人閱讀

摘要:事務(wù)處理事務(wù)的概念來(lái)自于兩個(gè)獨(dú)立的需求并發(fā)數(shù)據(jù)庫(kù)訪問(wèn),系統(tǒng)錯(cuò)誤恢復(fù)。一致性事務(wù)將數(shù)據(jù)庫(kù)從一種一致?tīng)顟B(tài)轉(zhuǎn)變?yōu)橄乱环N一致?tīng)顟B(tài)。等多數(shù)數(shù)據(jù)庫(kù)默認(rèn)都是該級(jí)別。獨(dú)占鎖鎖,也叫排他鎖一次只能有一個(gè)獨(dú)占鎖用在一個(gè)資源上,并且阻止其他所有的鎖包括共享縮。

事務(wù)處理

事務(wù)的概念來(lái)自于兩個(gè)獨(dú)立的需求:并發(fā)數(shù)據(jù)庫(kù)訪問(wèn)系統(tǒng)錯(cuò)誤恢復(fù)。

一個(gè)事務(wù)是可以被看作一個(gè)單元的一系列SQL語(yǔ)句的集合。

事務(wù)的特性(ACID)

atomacity 原子性 :事務(wù)必須是原子工作單元;對(duì)于其數(shù)據(jù)修改,要么全都執(zhí)行,要么全都不執(zhí)行。通常,與某個(gè)事務(wù)關(guān)聯(lián)的操作具有共同的目標(biāo),并且是相互依賴的。如果系統(tǒng)只執(zhí)行這些操作的一個(gè)子集,則可能會(huì)破壞事務(wù)的總體目標(biāo)。原子性消除了系統(tǒng)處理操作子集的可能性。

consistency 一致性事務(wù)將數(shù)據(jù)庫(kù)從一種一致?tīng)顟B(tài)轉(zhuǎn)變?yōu)橄乱环N一致?tīng)顟B(tài)。也就是說(shuō),事務(wù)在完成時(shí),必須使所有的數(shù)據(jù)都保持一致?tīng)顟B(tài)(各種 constraint 不被破壞)。

isolation 隔離性由并發(fā)事務(wù)所作的修改必須與任何其它并發(fā)事務(wù)所作的修改隔離。事務(wù)查看數(shù)據(jù)時(shí)數(shù)據(jù)所處的狀態(tài),要么是另一并發(fā)事務(wù)修改它之前的狀態(tài),要么是另一事務(wù)修改它之后的狀態(tài),事務(wù)不會(huì)查看中間狀態(tài)的數(shù)據(jù)。換句話說(shuō),一個(gè)事務(wù)的影響在該事務(wù)提交前對(duì)其他事務(wù)都不可見(jiàn)。

durability 持久性事務(wù)完成之后,它對(duì)于系統(tǒng)的影響是永久性的。該修改即使出現(xiàn)致命的系統(tǒng)故障也將一直保持。

事務(wù)的隔離級(jí)別

如果不對(duì)數(shù)據(jù)庫(kù)進(jìn)行并發(fā)控制,可能會(huì)產(chǎn)生異常情況:

臟讀(Dirty Read)

當(dāng)一個(gè)事務(wù)讀取另一個(gè)事務(wù)尚未提交的修改時(shí),產(chǎn)生臟讀。

一個(gè)事務(wù)開(kāi)始讀取了某行數(shù)據(jù),但是另外一個(gè)事務(wù)已經(jīng)更新了此數(shù)據(jù)但沒(méi)有能夠及時(shí)提交。這是相當(dāng)危險(xiǎn)的,因?yàn)楹芸赡芩械牟僮鞫急换貪L,也就是說(shuō)讀取出的數(shù)據(jù)其實(shí)是錯(cuò)誤的。

非重復(fù)讀(Nonrepeatable Read)

一個(gè)事務(wù)對(duì)同一行數(shù)據(jù)重復(fù)讀取兩次,但是卻得到了不同的結(jié)果。同一查詢?cè)谕皇聞?wù)中多次進(jìn)行,由于其他提交事務(wù)所做的修改或刪除,每次返回不同的結(jié)果集,此時(shí)發(fā)生非重復(fù)讀。

幻像讀(Phantom Reads)

事務(wù)在操作過(guò)程中進(jìn)行兩次查詢,第二次查詢的結(jié)果包含了第一次查詢中未出現(xiàn)的數(shù)據(jù)(這里并不要求兩次查詢的SQL語(yǔ)句相同)。這是因?yàn)樵趦纱尾樵冞^(guò)程中有另外一個(gè)事務(wù)插入數(shù)據(jù)造成的。

當(dāng)對(duì)某行執(zhí)行插入或刪除操作,而該行屬于某個(gè)事務(wù)正在讀取的行的范圍時(shí),會(huì)發(fā)生幻像讀問(wèn)題。

丟失修改(Lost Update)

第一類(lèi):當(dāng)兩個(gè)事務(wù)更新相同的數(shù)據(jù)源,如果第一個(gè)事務(wù)被提交,第二個(gè)卻被撤銷(xiāo),那么連同第一個(gè)事務(wù)做的更新也被撤銷(xiāo)。

第二類(lèi):有兩個(gè)并發(fā)事務(wù)同時(shí)讀取同一行數(shù)據(jù),然后其中一個(gè)對(duì)它進(jìn)行修改提交,而另一個(gè)也進(jìn)行了修改提交。這就會(huì)造成第一次寫(xiě)操作失效。

為了兼顧并發(fā)效率和異??刂?,在標(biāo)準(zhǔn)SQL規(guī)范中,定義了4個(gè)事務(wù)隔離級(jí)別,( Oracle 和 SQL Server 對(duì)標(biāo)準(zhǔn)隔離級(jí)別有不同的實(shí)現(xiàn) )

未提交讀(Read Uncommitted)

直譯就是讀未提交,意思就是即使一個(gè)更新語(yǔ)句沒(méi)有提交,但是別的事務(wù)可以讀到這個(gè)改變。

Read Uncommitted允許臟讀。

已提交讀(Read Committed)

直譯就是讀提交,意思就是語(yǔ)句提交以后,即執(zhí)行了 Commit以后別的事務(wù)就能讀到這個(gè)改變,只能讀取到已經(jīng)提交的數(shù)據(jù)。Oracle等多數(shù)數(shù)據(jù)庫(kù)默認(rèn)都是該級(jí)別。

Read Commited 不允許臟讀,但會(huì)出現(xiàn)非重復(fù)讀。

可重復(fù)讀(Repeatable Read):

直譯就是可以重復(fù)讀,這是說(shuō)在同一個(gè)事務(wù)里面先后執(zhí)行同一個(gè)查詢語(yǔ)句的時(shí)候,得到的結(jié)果是一樣的。

Repeatable Read 不允許臟讀,不允許非重復(fù)讀,但是會(huì)出現(xiàn)幻象讀。

串行讀(Serializable)

直譯就是序列化,意思是說(shuō)這個(gè)事務(wù)執(zhí)行的時(shí)候不允許別的事務(wù)并發(fā)執(zhí)行。完全串行化的讀,每次讀都需要獲得表級(jí)共享鎖,讀寫(xiě)相互都會(huì)阻塞。

Serializable 不允許不一致現(xiàn)象的出現(xiàn)。

事務(wù)隔離的實(shí)現(xiàn)——鎖

共享鎖(S鎖)

用于只讀操作(SELECT),鎖定共享的資源。共享鎖不會(huì)阻止其他用戶讀,但是阻止其他的用戶寫(xiě)和修改。

更新鎖(U鎖)

用于可更新的資源中。防止當(dāng)多個(gè)會(huì)話在讀取、鎖定以及隨后可能進(jìn)行的資源更新時(shí)發(fā)生常見(jiàn)形式的死鎖。

獨(dú)占鎖(X鎖,也叫排他鎖)

一次只能有一個(gè)獨(dú)占鎖用在一個(gè)資源上,并且阻止其他所有的鎖包括共享縮。寫(xiě)是獨(dú)占鎖,可以有效的防止“臟讀”。

Read Uncommited 如果一個(gè)事務(wù)已經(jīng)開(kāi)始寫(xiě)數(shù)據(jù),則另外一個(gè)數(shù)據(jù)則不允許同時(shí)進(jìn)行寫(xiě)操作,但允許其他事務(wù)讀此行數(shù)據(jù)。該隔離級(jí)別可以通過(guò)“排他寫(xiě)鎖”實(shí)現(xiàn)。

Read Committed 讀取數(shù)據(jù)的事務(wù)允許其他事務(wù)繼續(xù)訪問(wèn)該行數(shù)據(jù),但是未提交的寫(xiě)事務(wù)將會(huì)禁止其他事務(wù)訪問(wèn)該行??梢酝ㄟ^(guò)“瞬間共享讀鎖”和“排他寫(xiě)鎖”實(shí)現(xiàn)。

Repeatable Read 讀取數(shù)據(jù)的事務(wù)將會(huì)禁止寫(xiě)事務(wù)(但允許讀事務(wù)),寫(xiě)事務(wù)則禁止任何其他事務(wù)。可以通過(guò)“共享讀鎖”和“排他寫(xiě)鎖”實(shí)現(xiàn)。

Serializable 讀加共享鎖,寫(xiě)加排他鎖,讀寫(xiě)互斥。

索引

數(shù)據(jù)庫(kù)創(chuàng)建索引能夠大大提高系統(tǒng)的性能。

通過(guò)創(chuàng)建唯一性的索引,可以保證數(shù)據(jù)庫(kù)表中每一行數(shù)據(jù)的唯一性。

可以大大加快數(shù)據(jù)的檢索速度,這也是創(chuàng)建索引的最主要的原因。

可以加速表和表之間的連接,特別是在實(shí)現(xiàn)數(shù)據(jù)的參考完整性方面特別有意義。

在使用分組和排序子句進(jìn)行數(shù)據(jù)檢索時(shí),同樣可以顯著的減少查詢中分組和排序的時(shí)間。

通過(guò)使用索引,可以在查詢的過(guò)程中,使用優(yōu)化隱藏器,提高系統(tǒng)的性能。

增加索引也有許多不利的方面。

創(chuàng)建索引和維護(hù)索引需要消耗時(shí)間,這種時(shí)間隨著數(shù)量的增加而增加。

索引需要占物理空間,除了數(shù)據(jù)表占據(jù)數(shù)據(jù)空間之外,每一個(gè)索引還要占一定的物理空間,如果要建立聚簇索引,那么需要額空間就會(huì)更大。

當(dāng)對(duì)表中的數(shù)據(jù)進(jìn)行增加,刪除和修改的時(shí)候,索引也要?jiǎng)討B(tài)的維護(hù),這樣就降低了數(shù)據(jù)的維護(hù)速度。

應(yīng)該對(duì)如下的列建立索引

在作為主鍵的列上,強(qiáng)制該列的唯一性和組織表中數(shù)據(jù)的排列結(jié)構(gòu)。

在經(jīng)常用在連接的列上,這些列主要是一些外鍵,可以加快連接的速度。

在經(jīng)常需要根據(jù)范圍進(jìn)行搜索的列上創(chuàng)建索引,因?yàn)樗饕呀?jīng)排序,其指定的范圍是連續(xù)的。

在經(jīng)常需要排序的列上創(chuàng)建索引,因?yàn)樗饕呀?jīng)排序,這樣查詢可以利用索引的排序,加快排序查詢時(shí)間。

在經(jīng)常使用在where子句中的列上面創(chuàng)建索引,加快條件的判斷速度。

有些列不應(yīng)該創(chuàng)建索引

在查詢中很少使用或者作為參考的列不應(yīng)該創(chuàng)建索引。

對(duì)于那些只有很少數(shù)據(jù)值的列也不應(yīng)該增加索引(比如性別,結(jié)果集的數(shù)據(jù)行占了表中數(shù)據(jù)行的很大比例,即需要在表中搜索的數(shù)據(jù)行的比例很大。增加索引,并不能明顯加快檢索速度)。

對(duì)于那些定義為text,image和bit數(shù)據(jù)類(lèi)型的列不應(yīng)該增加索引。這是因?yàn)?,這些列的數(shù)據(jù)量要么相當(dāng)大,要么取值很少。

當(dāng)修改性能遠(yuǎn)遠(yuǎn)大于檢索性能時(shí),不應(yīng)該創(chuàng)建索引,因?yàn)樾薷男阅芎蜋z索性能是矛盾的。

創(chuàng)建索引的方法:直接創(chuàng)建和間接創(chuàng)建(在表中定義主鍵約束或者唯一性約束時(shí),同時(shí)也創(chuàng)建了索引)。

索引的特征:

唯一性索引保證在索引列中的全部數(shù)據(jù)是唯一的,不會(huì)包含冗余數(shù)據(jù)。

復(fù)合索引就是一個(gè)索引創(chuàng)建在兩個(gè)列或者多個(gè)列上??梢詼p少在一個(gè)表中所創(chuàng)建的索引數(shù)量。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/17625.html

相關(guān)文章

  • 前端面試常見(jiàn)題型

    摘要:布局垂直居中生命周期優(yōu)化手段常用的新特性面向?qū)ο笤颓懈钗募鞣N原生用法瀏覽器緩存機(jī)制機(jī)制 1 css布局2 垂直居中3 react生命周期 優(yōu)化手段 purerender4 es6常用的新特性5 this6 面向?qū)ο?原型7 webpack 切割文件8 array string各種原生用法9 promise10 瀏覽器緩存機(jī)制11 mobx機(jī)制

    anquan 評(píng)論0 收藏0
  • 前端面試常見(jiàn)題型

    摘要:布局垂直居中生命周期優(yōu)化手段常用的新特性面向?qū)ο笤颓懈钗募鞣N原生用法瀏覽器緩存機(jī)制機(jī)制 1 css布局2 垂直居中3 react生命周期 優(yōu)化手段 purerender4 es6常用的新特性5 this6 面向?qū)ο?原型7 webpack 切割文件8 array string各種原生用法9 promise10 瀏覽器緩存機(jī)制11 mobx機(jī)制

    Hancock_Xu 評(píng)論0 收藏0
  • 從簡(jiǎn)歷被拒到收割今日頭條 offer,我用一年時(shí)間破繭成蝶!

    摘要:正如我標(biāo)題所說(shuō),簡(jiǎn)歷被拒??戳宋液?jiǎn)歷之后說(shuō)頭條競(jìng)爭(zhēng)激烈,我背景不夠,點(diǎn)到為止。。三準(zhǔn)備面試其實(shí)從三月份投遞簡(jiǎn)歷開(kāi)始準(zhǔn)備面試到四月份收,也不過(guò)個(gè)月的時(shí)間,但這都是建立在我過(guò)去一年的積累啊。 本文是 無(wú)精瘋 同學(xué)投稿的面試經(jīng)歷 關(guān)注微信公眾號(hào):進(jìn)擊的java程序員K,即可獲取最新BAT面試資料一份 在此感謝 無(wú)精瘋 同學(xué)的分享 目錄: 印象中的頭條 面試背景 準(zhǔn)備面試 ...

    tracymac7 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<