黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

如何選擇行版本的隔離級(jí)別

系統(tǒng) 2050 0

基于行版本控制的隔離級(jí)別通過(guò)消除讀取操作的鎖來(lái)改善讀取并發(fā)。Microsoft SQL Server 引入了兩個(gè)使用行版本控制的事務(wù)隔離級(jí)別:

  • READ_COMMITTED_SNAPSHOT 數(shù)據(jù)庫(kù)選項(xiàng)為 ON 時(shí),啟用使用行版本控制的已提交讀隔離的新實(shí)現(xiàn)。

  • ALLOW_SNAPSHOT_ISOLATION 數(shù)據(jù)庫(kù)選項(xiàng)為 ON 時(shí),啟用的新的快照隔離級(jí)別。

對(duì)于大多數(shù)應(yīng)用程序,建議應(yīng)用使用行版本控制的已提交讀隔離,而不要應(yīng)用快照隔離,原因如下:

  • 已提交讀隔離比快照隔離占用的 tempdb 空間少。

  • 已提交讀隔離可用于分布式事務(wù),而快照隔離不能用于分布式事務(wù)。

  • 已提交讀隔離可用于大多數(shù)現(xiàn)有應(yīng)用程序,而不需要進(jìn)行任何更改。可以動(dòng)態(tài)優(yōu)化使用默認(rèn)隔離級(jí)別(已提交讀)編寫(xiě)的應(yīng)用程序。已提交讀的行為(是否使用行版本控制)是由數(shù)據(jù)庫(kù)選項(xiàng)設(shè)置確定的,可以對(duì)其進(jìn)行更改,而不會(huì)影響應(yīng)用程序。

    注意:
    對(duì)于設(shè)計(jì)為依賴于已提交讀隔離的阻塞行為的應(yīng)用程序,開(kāi)發(fā)人員可能希望將應(yīng)用程序更改為使用兩種模式的已提交讀隔離。否則,請(qǐng)注意將 READ_COMMITTED_SNAPSHOT 數(shù)據(jù)庫(kù)選項(xiàng)保持為 OFF。
  • 快照隔離很容易發(fā)生不適用于使用行版本控制的已提交讀隔離的更新沖突。當(dāng)在快照隔離下運(yùn)行的事務(wù)讀取另一個(gè)事務(wù)稍后會(huì)修改的數(shù)據(jù)時(shí),快照事務(wù)對(duì)同一數(shù)據(jù)的更新會(huì)導(dǎo)致更新沖突,該事務(wù)將終止并回滾。而使用行版本控制的已提交讀隔離不存在此問(wèn)題。

何時(shí)應(yīng)用使用行版本控制的已提交讀隔離

使用行版本控制的已提交讀隔離提供語(yǔ)句級(jí)讀取的一致性。事務(wù)中的每條語(yǔ)句執(zhí)行時(shí),新的數(shù)據(jù)快照將產(chǎn)生,并在該語(yǔ)句執(zhí)行完成之前對(duì)每條語(yǔ)句保持一致。發(fā)生下列情況時(shí),啟用使用行版本控制的已提交讀隔離:

  • 當(dāng)并發(fā)好處大于創(chuàng)建和管理行版本所增加的開(kāi)銷(xiāo)時(shí),將發(fā)生讀取器/編寫(xiě)器阻塞。

  • 應(yīng)用程序需要長(zhǎng)時(shí)間運(yùn)行的聚合或查詢(其中數(shù)據(jù)值必須與查詢啟動(dòng)時(shí)的時(shí)點(diǎn)一致)絕對(duì)精確。

何時(shí)使用快照隔離

快照隔離提供事務(wù)級(jí)讀取的一致性。數(shù)據(jù)快照在快照事務(wù)啟動(dòng)時(shí)產(chǎn)生并在事務(wù)持續(xù)時(shí)間內(nèi)保持一致。發(fā)生下列情況時(shí),使用快照隔離:

  • 需要開(kāi)放式并發(fā)控制。

  • 由于更新沖突必須回滾事務(wù)的可能性較低。

  • 應(yīng)用程序需要基于必須具有時(shí)點(diǎn)一致性的長(zhǎng)時(shí)間運(yùn)行的多語(yǔ)句查詢生成報(bào)告。快照隔離具有可重復(fù)讀取的優(yōu)點(diǎn)(請(qǐng)參閱 并發(fā)影響 ),而不使用共享鎖。數(shù)據(jù)庫(kù)快照可以提供類(lèi)似的功能,但必須手動(dòng)實(shí)現(xiàn)。快照隔離自動(dòng)為每個(gè)快照隔離事務(wù)提供數(shù)據(jù)庫(kù)中的最新信息。

基于行版本控制的隔離級(jí)別的優(yōu)點(diǎn)

使用行版本控制的隔離級(jí)別具有以下優(yōu)點(diǎn):

  • 讀取操作檢索一致的數(shù)據(jù)庫(kù)快照。

  • SELECT 語(yǔ)句不會(huì)在讀取操作期間鎖定數(shù)據(jù)(讀取器不會(huì)阻止編寫(xiě)器,編寫(xiě)器也不會(huì)阻止讀取器)。

  • SELECT 語(yǔ)句可以訪問(wèn)最后提交的行值,同時(shí)其他事務(wù)更新該行,而不會(huì)受到阻塞。

  • 死鎖的數(shù)量減少。

  • 事務(wù)所需的鎖的數(shù)量減少,這減少了管理鎖所需的系統(tǒng)開(kāi)銷(xiāo)。

  • 鎖升級(jí)的次數(shù)減少。

基于行版本控制的隔離級(jí)別的開(kāi)銷(xiāo)

確定使用基于行版本控制的隔離需要對(duì)比最小化鎖定的并發(fā)好處與維護(hù)和讀取行版本所需增加的資源使用量。考慮下列與啟用用于快照和已提交讀隔離級(jí)別的行版本控制關(guān)聯(lián)的開(kāi)銷(xiāo):

  • 當(dāng)查詢所需的版本變舊且必須掃描長(zhǎng)版本鏈時(shí),會(huì)影響讀取性能。

  • tempdb 中維護(hù)行版本時(shí),行版本控制會(huì)增加修改數(shù)據(jù)過(guò)程中的資源使用量。

  • 當(dāng) READ_COMMITTED_SNAPSHOT 或 ALLOW_SNAPSHOT_ISOLATION 數(shù)據(jù)庫(kù)選項(xiàng)為 ON 時(shí),更新和刪除特定數(shù)據(jù)庫(kù)的事務(wù)必須維護(hù)行版本,即使不存在使用基于行版本控制的隔離級(jí)別的事務(wù)。構(gòu)造使用行版本的一致的數(shù)據(jù)快照包括系統(tǒng)資源(CPU 和內(nèi)存),并可能生成 I/O 活動(dòng)。由于記錄版本存儲(chǔ)在 tempdb 中,因此當(dāng)更多的 tempdb 頁(yè)可以存儲(chǔ)在行版本控制的內(nèi)存中時(shí),性能會(huì)更好,發(fā)出的 I/O 數(shù)也會(huì)更少。

    注意:
    通常,插入行不會(huì)生成行版本。但是,在某些情況下,INSERT 命令確實(shí)可以生成行版本。例如,如果在前一個(gè)刪除的行版本(虛影記錄)尚未截?cái)鄷r(shí)將行插入具有唯一索引的表中,則 INSERT 命令將生成行版本。
  • tempdb 必須具有足夠的磁盤(pán)空間用于版本存儲(chǔ)區(qū)。如果存在超長(zhǎng)時(shí)間運(yùn)行的事務(wù),則更新事務(wù)在該時(shí)間內(nèi)生成的所有版本都必須保留在 tempdb 中。如果 tempdb 運(yùn)行空間不足,更新操作并不會(huì)失敗,但使用行版本控制的讀取操作可能會(huì)失敗。

  • 行版本控制信息需要將 14 個(gè)字節(jié)添加到數(shù)據(jù)庫(kù)行。

  • 由于維護(hù)行版本的工作,更新性能可能較低。在典型的 OLTP 工作負(fù)荷中,每個(gè)更新僅更改數(shù)據(jù)庫(kù)中的一部分行。在這些系統(tǒng)中,與兩個(gè)選項(xiàng)都為 OFF 的數(shù)據(jù)庫(kù)相比,在選項(xiàng)為 ON 的數(shù)據(jù)庫(kù)中更新的性能可能只低幾個(gè)百分點(diǎn)。當(dāng)在更新操作過(guò)程中更改更大量的數(shù)據(jù)時(shí),版本更新的性能開(kāi)銷(xiāo)可能變高。

  • 數(shù)據(jù)讀取器遍歷版本鏈接列表時(shí)會(huì)引起其他開(kāi)銷(xiāo)。快照越舊,在快照隔離事務(wù)中訪問(wèn)快照的進(jìn)程就越慢。

  • 由于更新操作的必需的沖突檢測(cè),某些使用快照隔離的更新事務(wù)可能必須回滾。在使用行版本控制的已提交讀隔離下運(yùn)行的事務(wù)不會(huì)生成更新沖突。

使用行版本控制的事務(wù)還有其他限制。有關(guān)詳細(xì)信息,請(qǐng)參閱 使用基于行版本控制的隔離級(jí)別

從基于行版本控制的隔離級(jí)別獲益的系統(tǒng)

從基于行版本控制的隔離級(jí)別獲益的方案包括:

  • 并行運(yùn)行只讀報(bào)告和即席查詢以及更新數(shù)據(jù)的應(yīng)用程序的系統(tǒng)。

  • 從支持類(lèi)似隔離級(jí)別的其他關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)到 Microsoft SQL Server 數(shù)據(jù)庫(kù)引擎的應(yīng)用程序遷移。

  • 獲取一致聚合(如 AVG、COUNT 和 SUM)或執(zhí)行索引交叉和索引聯(lián)接將需要一個(gè)嚴(yán)格的隔離級(jí)別(如可重復(fù)讀或可序列化)的系統(tǒng)。

  • 具有由于讀/寫(xiě)爭(zhēng)用導(dǎo)致的大量死鎖的系統(tǒng)。

如何選擇行版本的隔離級(jí)別


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

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

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

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

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

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論