自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

DB2 V9.7新特征可以給你帶來(lái)哪些好處?

數(shù)據(jù)庫(kù)
以下的文章主要向大家描述的是DB2 V9.7 新特性,以及對(duì)這些新特征在實(shí)際操作過(guò)程中帶來(lái)的好處的描述,以下就是文章的主要內(nèi)容講述。

我們大家都知道DB2 V9.7 數(shù)據(jù)庫(kù),其引入了一系列新的特性,這些新的特征的出現(xiàn)會(huì)使客戶(hù)可以更輕松地節(jié)省 IT 成本。起具體的特性包括壓縮增強(qiáng)、pureXML 增強(qiáng)、易用性增強(qiáng)、監(jiān)控增強(qiáng)、工作負(fù)載管理增強(qiáng)。

安全性提高、性能提高、應(yīng)用開(kāi)發(fā)提高、SQL PL 語(yǔ)言支持、SQL 兼容性提高和高可用、備份、日志、彈性、恢復(fù)提高等。

本文的重點(diǎn)是介紹“當(dāng)前已落實(shí)”新特性,該新特性的顯著特點(diǎn)是在游標(biāo)穩(wěn)定性隔離級(jí)別時(shí)可以明顯減少鎖等待的出現(xiàn),以及死鎖的出現(xiàn)頻率。通過(guò)使用“當(dāng)前已落實(shí)”的 CS 隔離級(jí)別,可以有效提升高吞吐量事務(wù)處理環(huán)境下的數(shù)據(jù)庫(kù)性能。

從 DB2 V9.7 開(kāi)始,DB2 通過(guò)采用完全鎖定避免技術(shù),當(dāng)能夠明確獲得數(shù)據(jù)或者頁(yè)的“已落實(shí)”版本時(shí),允許掃描避免使用行級(jí)鎖。當(dāng)無(wú)法獲知索引或行記錄是否已落實(shí)時(shí),掃描將改用使用傳統(tǒng)的鎖定方式。未提交的插入行在行級(jí)鎖中是直接被標(biāo)識(shí)的,允許“當(dāng)前已落實(shí)”掃描直接忽略或跳過(guò)該行。

簡(jiǎn)介

從 IBM DB2 V9.7 開(kāi)始,DB2 引入了一系列新特性,使客戶(hù)可以更輕松地節(jié)省 IT 成本。具體包括壓縮增強(qiáng)(通過(guò)對(duì) XML 數(shù)據(jù)、臨時(shí)表、索引、數(shù)據(jù)復(fù)制源表的壓縮支持,進(jìn)一步減少了對(duì)存儲(chǔ)的需求,提高了 I/O 的效率,提高了對(duì)磁盤(pán)數(shù)據(jù)的快速訪(fǎng)問(wèn))、pureXML 增強(qiáng)(通過(guò)對(duì) pureXML 功能的進(jìn)一步增強(qiáng),使得數(shù)據(jù)倉(cāng)庫(kù)中可以部署和分析 XML 數(shù)據(jù);

現(xiàn)在 XML 可以在表分區(qū)、MDC 表、臨時(shí)表、用戶(hù)函數(shù)、分區(qū)數(shù)據(jù)庫(kù)環(huán)境中使用)、易用性增強(qiáng)(通過(guò)對(duì)易用性的增強(qiáng),減少了總體擁有成本 TCO,減少了執(zhí)行系統(tǒng)管理任務(wù)對(duì)系統(tǒng)的影響,擴(kuò)展了以前版本發(fā)布的自治特性)、監(jiān)控增強(qiáng)(可以更靈活、更高粒度的監(jiān)控 DB2 環(huán)境)、工作負(fù)載管理增強(qiáng)(新增調(diào)配正在進(jìn)行的活動(dòng)的優(yōu)先級(jí)、與 Linux 工作負(fù)載管理 WLM 集成、對(duì)服務(wù)類(lèi)提高緩沖池中 I/O 優(yōu)先級(jí)控制等。

新增了 AGGSQLTEMPSPACE、CPUTIME、CPUTIMEINSC、SQLROWSREAD、SQLROWSREADINSC 等閾值,改進(jìn)了基于時(shí)間的閾值 ACTIVITYTOTALTIME、CONNECTIONIDLETIME 的粒度)、安全性提高(可以對(duì)敏感數(shù)據(jù)進(jìn)行更好的保護(hù))、性能提高(通過(guò)在游標(biāo)穩(wěn)定性隔離級(jí)別下引入“當(dāng)前已落實(shí)”、掃描共享、在表分區(qū)上創(chuàng)建分區(qū)索引、在表中存儲(chǔ)內(nèi)嵌 LOB 文件等提高了對(duì)數(shù)據(jù)的訪(fǎng)問(wèn)速度,增加了數(shù)據(jù)的并發(fā)性;

DB2 優(yōu)化器通過(guò)訪(fǎng)問(wèn)計(jì)劃重用、Statement concentrator 支持等增強(qiáng)了 DB2 的性能)、應(yīng)用開(kāi)發(fā)提高(通過(guò)“使用 ALTER TABLE 重命名列名”等簡(jiǎn)化了數(shù)據(jù)庫(kù)對(duì)象的管理,通過(guò)引入 TRUNCATE 語(yǔ)句、創(chuàng)建臨時(shí)表、公共同義詞等很多新的功能提高了 SQL 編程、存儲(chǔ)過(guò)程開(kāi)發(fā)得到了簡(jiǎn)化和提高等)、SQL PL 語(yǔ)言支持、SQL 兼容性提高(可以從諸如 ORACLE 應(yīng)用程序等更容易的遷移到 DB2 環(huán)境中)和高可用、備份、日志、彈性、恢復(fù)提高等。

本文的重點(diǎn)是介紹“當(dāng)前已落實(shí)”(currently committed semantics,以后會(huì)簡(jiǎn)稱(chēng) CC)新特性,該新特性的顯著特點(diǎn)是在游標(biāo)穩(wěn)定性(Cursor stability,以后會(huì)簡(jiǎn)稱(chēng) CS)隔離級(jí)別時(shí)可以明顯減少鎖等待的出現(xiàn),以及死鎖的出現(xiàn)頻率。

在 DB2 V9.7 之前的版本中,當(dāng)我們使用游標(biāo)穩(wěn)定性隔離級(jí)別(默認(rèn)的隔離級(jí)別)時(shí),一般只鎖定事務(wù)聲明并打開(kāi)的游標(biāo)當(dāng)前引用的行,也就是說(shuō)該事務(wù)一般只鎖定當(dāng)前行,對(duì)當(dāng)前行以外的記錄不做鎖定;對(duì)其所獲取的鎖一直有效,直到游標(biāo)重定位或事務(wù)終止為止 。如果游標(biāo)重定位,原來(lái)行上的鎖就被釋放,并獲得游標(biāo)現(xiàn)在引用的行上的鎖 。

如果事務(wù)修改了它檢索到的任何行,那么在事務(wù)終止之前,其他事務(wù)不能更新或刪除該行,即使游標(biāo)不再位于被更新或刪除的行 。需要注意:如果只檢索的話(huà),一般只鎖定當(dāng)前行;如果對(duì)檢索的行還進(jìn)行了更新或刪除的話(huà),則對(duì)修改的行也進(jìn)行了鎖定,即便指針移向了其他行,對(duì)修改行的鎖定還是存在。而對(duì)修改行的鎖定會(huì)阻止其他應(yīng)用程序讀取該行,直到對(duì)修改行的鎖定解除后(對(duì)該修改落實(shí)后),其他應(yīng)用才能讀取該行。

我們首先來(lái)看一下 ORACLE 在 Snapshot 隔離級(jí)別下讀操作與寫(xiě)操作堵塞的情況,具體如表格 1 所示,當(dāng)讀操作遇上讀操作、讀操作遇上寫(xiě)操作和寫(xiě)操作遇上讀操作都不會(huì)發(fā)生堵塞,而寫(xiě)操作遇上寫(xiě)操作時(shí)則會(huì)發(fā)生堵塞:

ORACLE Snapshot 隔離級(jí)別情況下的的堵塞情況

 

先出現(xiàn)的工作負(fù)載 \ 后出現(xiàn)的工作負(fù)載 讀工作負(fù)載 寫(xiě)工作負(fù)載

 

讀工作負(fù)載 否(不堵塞) 否(不堵塞)

 

寫(xiě)工作負(fù)載 否(不堵塞) 是(堵塞)

 

下面我們看一下在 DB2 V9.7 之前的版本中使用游標(biāo)穩(wěn)定性隔離級(jí)別時(shí)讀操作與寫(xiě)操作堵塞的情況,具體如表格 2 所示,當(dāng)讀操作遇上讀操作時(shí)不會(huì)發(fā)生堵塞;當(dāng)讀操作遇上寫(xiě)操作時(shí)可能會(huì)發(fā)生堵塞(FOR READ ONLY 的讀操作不會(huì)堵塞寫(xiě)操作,而 FOR UPDATE 的讀操作由于其行上有 U 鎖,會(huì)堵塞寫(xiě)操作);當(dāng)寫(xiě)操作遇上讀操作時(shí)一定會(huì)發(fā)生堵塞,而當(dāng)寫(xiě)操作遇上寫(xiě)操作時(shí)同樣會(huì)發(fā)生堵塞。

DB2 V9.7 之前的版本中使用 CS 隔離級(jí)別情況下的堵塞情況

 

先出現(xiàn)的工作負(fù)載 \ 后出現(xiàn)的工作負(fù)載 讀工作負(fù)載 寫(xiě)工作負(fù)載

 

讀工作負(fù)載 否(不堵塞) 可能

 

寫(xiě)工作負(fù)載 是(堵塞) 是(堵塞)

 

再看一下在 DB2 V9.7 中,啟用“當(dāng)前已落實(shí)”的游標(biāo)穩(wěn)定性隔離級(jí)別時(shí)的讀操作與寫(xiě)操作堵塞的情況,具體如表格 3 所示,可以看到比 DB2 之前的版本有了明顯的改進(jìn),當(dāng)讀操作遇上讀操作、讀操作遇上寫(xiě)操作和寫(xiě)操作遇上讀操作都不會(huì)發(fā)生堵塞,只有寫(xiě)操作遇上寫(xiě)操作時(shí)才會(huì)發(fā)生堵塞:

DB2 V9.7 中啟用“當(dāng)前已落實(shí)”的 CS 隔離級(jí)別情況下的堵塞情況

 

先出現(xiàn)的工作負(fù)載 \ 后出現(xiàn)的工作負(fù)載 讀工作負(fù)載 寫(xiě)工作負(fù)載

 

讀工作負(fù)載 否(不堵塞) 否(不堵塞)

 

寫(xiě)工作負(fù)載 否(不堵塞) 是(堵塞)

 

在 DB2 V9.7 中,在游標(biāo)穩(wěn)定性隔離級(jí)別下,通過(guò)啟用“當(dāng)前已落實(shí)”新特性,一個(gè)讀操作已經(jīng)不需要再等待該變更落實(shí)后再返回值,而是直接返回該行未變更前的值(也就是當(dāng)前已落實(shí)的結(jié)果值,忽略任何可能發(fā)生的未落實(shí)操作)。不過(guò)需要注意的是在可更新游標(biāo)中存在例外的情況:如果某行基于它自己之前的內(nèi)容被更新過(guò),當(dāng)前已落實(shí)結(jié)果無(wú)法立即返回。

在游標(biāo)穩(wěn)定性隔離級(jí)別使用行級(jí)鎖的情況(沒(méi)有啟用“當(dāng)前已落實(shí)”)下,可能會(huì)出現(xiàn)鎖定超時(shí)和死鎖,特別是那些沒(méi)有為防止這些問(wèn)題進(jìn)行特殊設(shè)計(jì)的應(yīng)用程序。某些高吞吐量數(shù)據(jù)庫(kù)應(yīng)用程序不能容忍事物處理過(guò)程中的鎖等待,某些應(yīng)用不能容忍處理未提交的數(shù)據(jù),但仍然需要不堵塞讀操作事務(wù)。

通過(guò)在 CS 隔離級(jí)別下啟用“當(dāng)前已落實(shí)”,可以有效提高高吞吐量事務(wù)處理環(huán)境下的數(shù)據(jù)庫(kù)性能。在這些環(huán)境中,過(guò)多的鎖等待是不能容忍的,通過(guò)啟用“當(dāng)前已落實(shí)”的 CS 隔離級(jí)別,可以有效的減少 timeout 和 deadlocks 。在“當(dāng)前已落實(shí)”啟用的情況下,只有落實(shí)的數(shù)據(jù)才會(huì)被返回,就像之前的例子,現(xiàn)在讀操作不需要再等待更新操作釋放行級(jí)鎖了,讀操作將直接返回“當(dāng)前已落實(shí)”版本的數(shù)據(jù)(也就是首次寫(xiě)操作之前的值)。

由于“當(dāng)前已落實(shí)”是 DB2 V9.7 的新特性,很多客戶(hù)不知道該如何使用,本文將重點(diǎn)介紹 DB2 V9.7 關(guān)于“當(dāng)前已落實(shí)”新特性以及相關(guān)的概念,并結(jié)合實(shí)際的例子幫助大家理解和提高。

當(dāng)前已落實(shí)(Currently Committed) 工作原理

從 DB2 V9.7 開(kāi)始,DB2 通過(guò)采用完全鎖定避免(full lock avoidance techniques)技術(shù),當(dāng)能夠明確獲得數(shù)據(jù)或者頁(yè)的“已落實(shí)”版本時(shí),允許掃描避免使用行級(jí)鎖。當(dāng)無(wú)法獲知索引或行記錄是否已落實(shí)時(shí),掃描將改為使用傳統(tǒng)的鎖定方式。 DB2 通過(guò)在行級(jí)鎖定中增加新的反饋機(jī)制,來(lái)標(biāo)識(shí)哪些“日志記錄”描述了該行的首次修改(從該行的首次修改,就可以獲得修改前的數(shù)據(jù)值,也就是該行的已落實(shí)版本),當(dāng)發(fā)生一個(gè)鎖沖突時(shí)鎖管理器將使用該反饋機(jī)制直接返回這些日志記錄編號(hào)。

一個(gè)當(dāng)前已落實(shí)掃描將用使用該反饋結(jié)果,用來(lái)從日志(日志緩沖區(qū)中或者活動(dòng)日志文件中)訪(fǎng)問(wèn)該行的“當(dāng)前已落實(shí)”版本(也就是首次更新之前的結(jié)果值)。未提交的插入行在行級(jí)鎖中是直接被標(biāo)識(shí)的,允許“當(dāng)前已落實(shí)”掃描直接忽略或跳過(guò)該行。

具體如圖 1 所示,emp 表有 5 條記錄,其中第二行和第四行插入操作已經(jīng)完成,描述該插入操作的日志記錄已經(jīng)存儲(chǔ)在使用 TSM 歸檔的帶庫(kù)中,具體如圖 1 中右下方紅色部分所示;第三行正處于更新?tīng)顟B(tài)(還沒(méi)落實(shí)),記錄該行的日志記錄處于磁盤(pán)中的活動(dòng)日志文件中,該日志記錄描述了第三行的首次更改情況,具體如圖 1 右邊中間黃色部分所示;

第五行正處于插入狀態(tài)(還沒(méi)落實(shí)),記錄該行的日志記錄處于磁盤(pán)中的活動(dòng)日志文件中,該日志記錄描述了第五行的首次插入情況,具體如圖 1 右邊中間黃色部分所示;第一行正處于刪除狀態(tài)(還沒(méi)落實(shí)),記錄該行的日志記錄處于日志緩沖區(qū)中,該日志記錄描述了第一行的首次更改情況,

具體如圖 1 右邊上方綠色部分所示;圖 1 中間的 Locklist 部分表示鎖管理器,在鎖管理器中描述了第一行、第三行、第五行處于 X 鎖狀態(tài),與這些行對(duì)應(yīng)的日志記錄也在該鎖管理器中,這就是 DB2 V9.7 對(duì)行級(jí)鎖定新增的反饋機(jī)制,來(lái)標(biāo)識(shí)哪些“日志記錄”描述了該行的首次修改。

當(dāng)發(fā)生一個(gè)鎖沖突時(shí)鎖管理器將使用該反饋機(jī)制直接返回這些日志記錄編號(hào),如黑色箭頭所示。當(dāng)其他應(yīng)用試圖讀取第一行或第三行時(shí),將會(huì)直接從日志緩沖區(qū)或日志文件中返回該行的“已落實(shí)”版本數(shù)據(jù)。而對(duì)未提交的第五行,掃描將直接忽略或跳過(guò)該行。

【編輯推薦】

  1. 實(shí)現(xiàn)DB2備份數(shù)據(jù)庫(kù)的操作方案漫談
  2. DB2歸檔日志的管理方案從哪幾點(diǎn)入手?
  3. 對(duì)DB2取得當(dāng)前時(shí)間的正確解析
  4. DB2性能調(diào)優(yōu)中存在哪些問(wèn)題,如何破解?
  5. DB2 數(shù)據(jù)類(lèi)型如何才能輕松接觸?
責(zé)任編輯:佚名 來(lái)源: 通信產(chǎn)業(yè)報(bào)
相關(guān)推薦

2010-08-19 09:22:03

DB2 V9.7 分區(qū)

2010-08-16 13:53:26

2010-08-16 11:34:11

IBM DB2 V9.

2010-08-16 16:08:34

DB2 V9.7

2010-08-10 10:23:16

IBM DB2 V9.

2010-08-11 11:39:06

IBM DB2 V9.

2010-08-11 09:56:20

DB2 V9.7

2010-08-06 15:14:03

DB2 V9.5 新特

2010-08-19 09:30:31

DB2 V9.7

2010-08-19 09:37:41

DB2 V9.7 語(yǔ)句

2010-08-10 10:42:27

DB2 V9.7

2010-08-10 11:01:12

DB2 V9.7

2010-08-19 08:49:41

DB2 V9.7 索引

2009-09-25 11:44:00

ibmdwDB2

2009-04-30 08:59:13

DB2 9.7InfoSphereIBM

2010-08-16 17:07:43

DB2 trc

2010-07-29 13:09:48

DB2 9.7 兼容

2010-08-16 10:45:46

DB2 9.7

2010-08-16 10:45:46

DB2 9.7

2010-09-06 13:06:08

DB2 9.7
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)