欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
DB2 最佳實(shí)踐: 數據生命周期管理最佳實(shí)踐
本文描述了最佳 DB2 設計實(shí)踐,簡(jiǎn)化 DB2 數據生命周期管理。生命周期管理是有效增加(即轉入)新數據,并將主數據庫中不再需要的數據進(jìn)行歸檔(即轉出),DB2 系統提供的功能可以簡(jiǎn)化生命周期管理。

內容提要

現在的數據庫應用程序通常需要伸縮性、快速轉入及轉出數據——在盡量不影響應用程序訪(fǎng)問(wèn)數據的情況下。轉入轉出數據涉及添加新數據和移除(通常歸檔)歷史數據。今天的很多應用程序是 24X7 訪(fǎng)問(wèn)的,因此消除了以前提供的批處理窗口的數據更新。同樣,很多應用程序需要在并行訪(fǎng)問(wèn)數據的情況下才能連續進(jìn)行數據更新。

DB2數據庫系統提供了多種工具來(lái)實(shí)現伸縮性和在最低限度影響數據訪(fǎng)問(wèn)的情況下,方便連續填充或轉入轉出數據。本文建議的最佳實(shí)踐可用來(lái)設計并實(shí)施這些 DB2 工具,以達到這些目的。





回頁(yè)首


介紹

本文描述了最佳 DB2 設計實(shí)踐,簡(jiǎn)化 DB2 數據生命周期管理。生命周期管理是有效增加(即轉入)新數據,并將主數據庫中不再需要的數據進(jìn)行歸檔(即轉出)。 DB2 系統提供了下列功能,這些功能你可以組合使用,可以簡(jiǎn)化生命周期管理:

  • 數據庫分區
  • 表分區
  • 多維集群
  • UNION ALL 視圖

除了這些 DB2 功能,IBM Optim Data Growth 解決方案還簡(jiǎn)化了數據歸檔生命周期的管理。

DB2數據庫系統分區工具的一個(gè)最重要的好處是,可以部署和更改這些工具而不影響現有應用程序的代碼。

本文是最佳實(shí)踐文章家族的一員,你也能通過(guò)閱讀其它最佳實(shí)踐從中受益。

本文的目標讀者是負責為 DB2 應用程序設計數據庫的人員(如果要達到伸縮性和有效的數據生命周期管理,數據庫人員同樣會(huì )發(fā)現本文的價(jià)值)。本文認為你需要有一定的 DB2 數據庫設計的經(jīng)驗。

這篇文章的內容是基于 DB2 版本 9.5 提供的工具。 DB2 數據庫系統的后續版本可能會(huì )有所提高,這將對本文的最佳實(shí)踐建議帶來(lái)變化。





回頁(yè)首


分區技術(shù)

什么是數據庫分區?

數據庫分區(之前稱(chēng)為 DPF)是通過(guò)使用哈希鍵值算法把數據分布在數據庫中的各個(gè)邏輯節點(diǎn)上。數據庫分區的目標是通過(guò)在計算機集群之間均勻的分布數據來(lái)最大化可擴展性。數據庫分區通過(guò)減少 DB2 實(shí)用工具操作粒度來(lái)增強擴展性。它并行的在數據庫上進(jìn)行查詢(xún)和更新操作。

下面的例子演示了如何指定數據庫分區:

CREATE TABLE Test                        (Account_Number INTEGER,                        Trade_date DATE )                        DISTRIBUTE BY(Account Number)USING HASHING                        

注意:在 DB2 版本 9 中,PARTITION KEY 子句被重命名為 DISTRIBUTE BY 。

數據庫分區是完全透明的,因此并不影響現有應用程序代碼。同樣,你可以使用 redistribution 實(shí)用工具來(lái)在線(xiàn)更改,而不會(huì )影響應用程序代碼。

在設計你的數據庫分區策略時(shí),使用一個(gè)有較高基數性的分區鍵列,來(lái)確保數據在各個(gè)邏輯節點(diǎn)間均勻分布。一個(gè)有較高基數的列有大量唯一值(而非大部分值相同)。同樣,唯一索引必須是分區鍵的超集。

對那些要進(jìn)行連接的表,嘗試使用相同的分區鍵。這增加了連接并置。

什么是表分區?

表分區(通常叫做范圍分區)是在一個(gè)邏輯數據庫分區中的一個(gè)或多個(gè)物理對象上,通過(guò)制定鍵值范圍來(lái)分割數據。表分區的目的是組織數據以便于優(yōu)化數據訪(fǎng)問(wèn)和數據轉出。對于特定的應用程序,表分區也有助于轉入數據,然而,多維集群(在下面“ Multi-Dimensional Clustering ”章節討論)往往是增強轉入的更好選擇。數據庫分區是減少實(shí)用工具操作粒度以及超大型數據庫的可擴展性的最佳實(shí)踐。

表分區的好處是:

  • 通過(guò)消除不恰當分區來(lái)提高查詢(xún)性能。優(yōu)化器可以把 SQL 查詢(xún),限制到僅在和 WHERE 子句相關(guān)的分區里。
  • 優(yōu)化表分區的轉入和轉出處理。表分區可以很容易的添加或刪除表的分區,而不發(fā)生數據移動(dòng)。應用程序可以在添加分區時(shí),對原來(lái)的數據執行讀寫(xiě)操作 ( 查詢(xún)被安排在一段很短的時(shí)間內 ) 。
  • 以前提供的維護方法壓縮率會(huì )隨著(zhù)時(shí)間推移發(fā)生變化。由于每個(gè)表分區都有它自己的壓縮字典。因此,以前分區上的壓縮數據并不會(huì )隨新數據的插入而發(fā)生改變。
  • 優(yōu)化對超大型表的管理。表分區可以擁有幾乎無(wú)限的大小,因為限制只存在于各個(gè)分區中(而不是整個(gè)表)。你可以把范圍數據存放到多個(gè)表空間中,以便于備份和恢復數據。
  • 使 SMS 表空間的索引有更大的靈活性。你可以將索引存儲到不同的 SMS 大型表空間中(僅支持分區表)。所有表都可以把索單獨存放到 DMS 表空間中。

下面例子演示了指定表分區:

CREATE TABLE Test                        (Account_Number INTEGER,                        Trade_date DATE)                        IN ts1, ts2, ts3PARTITIONED BY RANGE(Trade_date)                        (STARTING'1/1/2000'                        ENDING'3/31/2000',STARTING'4/1/2000'                        ENDING'6/30/2000',STARTING'7/1/2000'                        ENDING'9/30/2000)                        

在你的 DB2 文檔中有很多其他技術(shù)可以用來(lái)指定表如何進(jìn)行分區。





回頁(yè)首


多維集群

多維集群(MDC)是一個(gè) DB2 數據庫系統具有的獨特能力。 MDC 在表中通過(guò)多維鍵值(單元)來(lái)組織數據。 MDC 的目的就是通過(guò)多個(gè)維度方便的存取數據,以保持數據訪(fǎng)問(wèn)只選擇那些相關(guān)的單元。 MDC 通過(guò)維度確保數據隨時(shí)處于集群狀態(tài),從而避免了重組數據的需求(數據永遠不會(huì )變得無(wú)序)。

MDC也利用在每個(gè)維度上的塊索引(并結合維度)對比行 ID(RID)索引。這樣做的結果就是極大的減少了索引大小和索引級別。例如,如果在一個(gè) DB2 單元中能裝入 100 行,塊索引將只指向單元而不是這 100 行數據的每一條。這樣減少了讀取和更新數據的 I/O( 索引值在塊滿(mǎn)了的時(shí)候進(jìn)行更新 ) 。

MDC使轉入和轉出數據變得很方便,而且是對應用程序完全透明的。

下面的例子演示了如何指定多維集群:

CREATE TABLE order                        (Account_Number INTEGER,                        Trade_Date DATE,                        Region CHAR(10,                        order_month INTEGER generated always as month(order_dt))                        IN ts1                        ORGANIZED BY DIMENSIONS (region, order_month)                        

在設計你的 MDC 策略時(shí),指定有較低基數的列,以避免稀疏填充單元。稀疏填充的單元會(huì )顯著(zhù)的增加磁盤(pán)空間的使用量。一個(gè)有較低基數的列,會(huì )有很多相同的值(而不是很多唯一值)。你也可以使用一個(gè)生成列來(lái)產(chǎn)生一個(gè)高度集群的維度。例如,一個(gè)生成列或內部函數可以把日期轉換成月份。這樣就顯著(zhù)的減少了基數(對于一年的數據,基數從 365 減少到了 12)。

MDC 功能有助于轉入和轉出數據

MDC保證了在所有維度上的集群維護避免了重組數據的需求。這在轉入過(guò)程中極大的減少了 I/O(而使用連續的大塊 I/O)。同樣,由于 MDC 維度上的索引是塊索引,這也使得 MDC 在轉入過(guò)程中避免了過(guò)多的索引 I/O 。塊索引比普通基于 RID 的索引要更小也更淺,這是因為索引條目指向的是一個(gè)數據塊而非一行。

同樣,在轉入過(guò)程中,MDC 減少了索引維護,因為塊索引只在塊滿(mǎn)了的時(shí)候更新一次(不是像其他索引那樣每插入一行就更新一次)。這也有助于減少 I/O 。

INSERT語(yǔ)句在你使用 MDC 時(shí)運行的更快,因為 MDC 從用現有空的數據塊不需要進(jìn)行分頁(yè)。插入鎖定同樣得到了減少,因為鎖發(fā)生在塊級別而不是行級別。

MDC提高了轉出數據的效率,因為刪除的是整個(gè)頁(yè)面而不是每一條記錄。在 MDC 刪除過(guò)程中日志同樣會(huì )減少(每個(gè)頁(yè)面只會(huì )有幾個(gè)字節)。

使用只有一列的 MDC 設計,以便于轉入和轉出數據,而不會(huì )增加磁盤(pán)使用量。

見(jiàn)“連續更新情況下轉入和轉出數據的最佳實(shí)踐”章節中,一個(gè)假設從使用 MDC 轉入數據中獲益的應用程序。

在一個(gè)數據庫設計中同時(shí)使用數據庫分區、表分區和多維集群

開(kāi)發(fā)大型應用程序方法的最佳實(shí)踐是在一個(gè)數據庫設計中同時(shí)實(shí)現數據庫分區、表分區和 MDC 。數據庫分區提供了可擴展性并且確保了在邏輯分區上均勻分布數據;表分區方便了查詢(xún)分區刪除和轉出數據; MDC 提高了查詢(xún)性能并使數據轉入更加方便。

例如:

CREATE TABLE Test                        (A INT, B INT, C INT, D INT … )                        IN Tablespace A, Tablespace B, Tablespace C …                        INDEX IN Tablespace B                        DISTRIBUTE BY HASH (A)                        PARTITION BY RANGE (B) (STARTING FROM (100) ENDING (300) EVERY (100))                        ORGANIZE BY DIMENSIONS (C,D)                        

表分區不能完全解決在 DB2 版本 9.5 中的擴展問(wèn)題。需要繼續使用數據庫分區來(lái)解決大型數據倉庫的擴展問(wèn)題。 DB2 數據庫分區不共享架構是對你的應用程序提供線(xiàn)性擴展而沒(méi)有軟件瓶頸的最好方法。





回頁(yè)首


支持生命周期管理的其他技術(shù)

大型表空間

使用大型表空間(在 DB2 版本 9 中默認使用)能更好的調節大型的表或索引。在 DB2 服務(wù)器上這也使每頁(yè)能存更多的行。

對深度壓縮的表(一頁(yè)中有很多行)和表分區全局索引(預計會(huì )超過(guò) 4K 頁(yè) 64G 容量)使用大型表空間。如果你不受這些問(wèn)題的影響,就不要使用大型表空間。同樣你可以通過(guò)把每個(gè)表分區的全局索引拆分到不同的表空間(強烈建議)來(lái)避免大型表空間的需求。

下面的圖比較了可用空間在不同頁(yè)面大小的情況下能存儲的記錄數目,包括普通表空間和大型表空間。

Page Size REG TBSP Max Size RID – 4 Bytes REG TBSP Max Records/Min Record Length LARGE TBSP Max Size RID – 6 Bytes LARGE TBSP Max Records/Min Record Length
4 KB 64 GB 251 / 14 2 TB 287 / 12
8 KB 128 GB 253 / 30 4 TB 580 / 12
16 KB 256 GB 254 / 62 8 TB 1165 / 12
32 KB 512 GB 253 / 127 16 TB 2335 / 12

注意:如果你把一個(gè)表空間改成大型表空間,在與所有表相關(guān)的索引重組完成之前,它不會(huì )立即生效。

SET INTEGRITY 操作

當附加了一個(gè)新的分區到表中,或者當你分離了一個(gè)表分區和物化查詢(xún)表(MQT)時(shí),就需要運行 SET INTEGRITY(注意,這些數據在新的分區中 SET INTEGRITY 處理完成之前是不可見(jiàn)的)。 SET INTEGRITY 可能是一個(gè)要運行很長(cháng)時(shí)間的操作,它驗證數據并維護全局索引。這個(gè)維護操作需要記錄日志并可能產(chǎn)生大量的日志輸入。

SET INTEGRITY的關(guān)鍵好處是,操作期間現有數據可以被讀寫(xiě)訪(fǎng)問(wèn)。你可以把對大數據量運行 SET INTEGRITY 的影響通過(guò)使用 MDC 來(lái)減到最小,而且也可以最小化對全局索引和 MQTs 的使用。另外一個(gè)選擇是你可以指定用戶(hù)維護 MQT 來(lái)加速 SET INTEGRITY

“設計并實(shí)現你的表分區策略”這一章節有使用 SET INTEGRITY 的建議。

異步索引清除

異步索引清除(AIC)是 DB2 的一個(gè)新功能,它在表分區分離后釋放索引空間(清除程序作為較低優(yōu)先級的后臺進(jìn)程運行)。由于有 AIC 功能,分離表分區幾乎是一瞬間的。分離操作不需要等待索引清除完成。 AIC 是一個(gè)后臺進(jìn)程,它是 DB2 數據庫系統自動(dòng)調用的。





回頁(yè)首


設計并實(shí)現你的表分區策略

從表分區獲益的應用程序使用了下列類(lèi)型的表:

  • 超大型表
  • 有查詢(xún)訪(fǎng)問(wèn)表的范圍子集的表
  • 有轉出需求的表
  • 有轉入需求的表。另外可以考慮使用 MDC 來(lái)轉入數據。

設計最佳實(shí)踐:

表分區設計,你需要考慮的內容包括:

  • 在日期上的分區列(以方便轉出)
  • 協(xié)助分區刪除的分區列,這會(huì )在后面討論
  • 匹配轉入和轉出標準粒度。這避免了在你運行 DETACH 時(shí)需要重組來(lái)釋放空間。
  • 考慮把不同的范圍分別存放到單獨的表空間中以便于備份和恢復。 DB2 數據庫系統可以備份和恢復整個(gè)范圍分區——如果他們存放在單獨的表空間中的話(huà)。
  • 考慮把活動(dòng)數據和歷史數據分開(kāi)。
  • 為了在以后的 DB2 數據庫系統版本進(jìn)一步提高,可以考慮對表分區鍵建立唯一索引。非唯一索引可以建在任何其他列上。
  • 把你的全局索引指定存放在它們各自的表空間中(如有需要,就使用大型表空間)。為了縮短備份時(shí)間,這是最小化存放全局索引所需表空間的最佳實(shí)踐。同樣的,使用數據庫分區來(lái)減少全局索引的粒度。
  • 把全局索引拆分到多個(gè)表空間中,以確保一個(gè)單獨的表空間不會(huì )變得過(guò)大。
  • 考慮最小化 SET INTEGRITY 的策略??紤]日志的影響以及當涉及較大范圍時(shí)的 SET INTEGRITY 花費的時(shí)間。如果失敗了 SET INTEGRITY 也會(huì )影響重啟時(shí)間。在環(huán)境中建立原型以查看花費的時(shí)間是否可以接受。另外,考慮其他設計策略,這在“轉入數據:用什么方法”和“轉入壓縮表分區的最佳實(shí)踐”中進(jìn)行了討論。
  • DB2 版本 9.5 強力建議進(jìn)行深度壓縮,因為它可以在 LOAD、IMPORT 或 INSERT 操作時(shí)自動(dòng)建立壓縮字典。如果沒(méi)有壓縮字典的話(huà),DB2 版本 9.1 需要進(jìn)行表重組來(lái)壓縮一個(gè)表分區中的數據。

從分區刪除中獲得最大的好處:

表分區提供了一個(gè)強大的功能,以限制到分區的數據訪(fǎng)問(wèn)必須滿(mǎn)足 SQL WHERE 子句。為了從分區刪除中獲益,需做好以下工作:

  • 把集群鍵和分區鍵放在前面
  • 確保范圍分區列在 WHERE 子句中經(jīng)常使用
  • 確保組合分區鍵的引導列在 WHERE 子句中
  • 如果你在使用生成列,那么,正確的使用它們可以協(xié)助分區刪除。
  • 把生成列用作 MDC 的維度,這能適當減少維度的基數。
  • 如果有可能使用多個(gè)不同的范圍來(lái)消除不必要的搜索。例如,分區刪除可以只訪(fǎng)問(wèn) 1 月和 12 月,而不是全年。
  • 如果你使用了連接,那么分區刪除就僅僅被用做嵌套循環(huán)的內部訪(fǎng)問(wèn)。
  • 分區刪除參數標記被推送到運行時(shí),然后值在運行時(shí)被綁定。

操作方面的考慮

使用下列最佳實(shí)踐來(lái)增強表分區的操作性特征:

  • 在每次轉入或轉出操作后,運行一個(gè) COMMIT 語(yǔ)句來(lái)釋放鎖(例如,在 ATTACH、DETACH、SET INTEGRITY,等等)。
  • 為每個(gè)表分區取一個(gè)明確的名字。這些名字管理起來(lái)比系統生成的名字要容易得多。
  • 一定要終止一個(gè)運行失敗的 LOAD 。在 LOAD 被終止之前,不能執行后續操作(例如,DROP TABLE)。
  • 如果你正在附加數據到一個(gè)分區中,指定 LOAD INSERT 。在一個(gè)分區上執行 LOAD REPLACE 將會(huì )覆蓋整個(gè)表(所有分區)。
  • 避免附加一個(gè)與被分離的分區有相同名字的分區。在異步索引清除(AIC)完成之前,這會(huì )導致重名。




回頁(yè)首


轉入數據:用什么方法?

有很多因素會(huì )影響你在安裝中如何選擇最佳轉入的解決方案:

  • 盡量減少新數據轉入系統并減少使它可用的時(shí)間
  • 最小化在轉入過(guò)程中作為 SET INTEGRITY 操作一部分日志活動(dòng)總量。
  • 你是否需要連續更新而不是每天進(jìn)行批量操作。
  • 最大限度的壓縮新的范圍,以有效的管理數據傾斜。

下面是兩個(gè)把數據以分區形式轉入的不同技術(shù):

1.ALTER/ATTACH

你使用 ALTER/ATTACH 方法首先離線(xiàn)填充表,然后附加這個(gè)分區。你必須運行 SET INTEGRITY(對于大數據量來(lái)說(shuō),這個(gè)操作可能會(huì )運行很長(cháng)時(shí)間)。

優(yōu)點(diǎn):

  • 并發(fā)訪(fǎng)問(wèn):
  • 所有之前的分區都可以進(jìn)行更新
  • 沒(méi)有部分數據視圖(在 SET INTEGRITY 完成之前,新數據不可見(jiàn))

缺點(diǎn):

  • 需要額外的日志空間
  • 花費較長(cháng)時(shí)間
  • 肯定會(huì )流失查詢(xún)

2.ALTER/Add

使用 ALTER/Add 方法,你可以附加一個(gè)空的表分區,然后使用 LOAD 實(shí)用工具或 INSERT 語(yǔ)句來(lái)填充它。

你不需要運行 SET INTEGRITY

優(yōu)點(diǎn):

  • 花費更少的時(shí)間
  • 不再需要一致性檢查
  • 全局索引維護需要更少的空間

缺點(diǎn):

  • 當你使用 INSERT 語(yǔ)句(而不是 LOAD 實(shí)用工具)插入的時(shí)候會(huì )發(fā)生部分數據視圖
  • LOAD 實(shí)用工具允許對原來(lái)分區進(jìn)行只讀訪(fǎng)問(wèn)

建議:

對于更大的數據量,利用 ALTER/Add 方法來(lái)轉入一個(gè)表分區或利用 MDC 來(lái)轉入。





回頁(yè)首


轉入壓縮表分區的最佳實(shí)踐

這些最佳實(shí)踐使用 ALTER/Attach 附加一個(gè)表分區,這在前面的章節中已經(jīng)介紹過(guò)了。

在版本 9.1 上,快速附加一個(gè)有壓縮數據的表分區的技術(shù)是:

  1. 裝載數據子集(一個(gè)真正的隨機抽樣)到另外一個(gè) DB2 表
  2. 更改獨立的表啟用壓縮
  3. 重組數據子集以建立一個(gè)壓縮字典
  4. 清空表或保留最少數據(因此字典得到了保留)
  5. ALTER/ATTACH表作為一個(gè)新的表分區(保留字典)
  6. 執行 SET INTEGRITY(因為數據很少,所以這很快)
  7. 使用 LOAD 實(shí)用工具或 INSERT 語(yǔ)句(會(huì )發(fā)生壓縮)。對于有連續更新、裝載數據到中間過(guò)渡表的應用程序,使用 LOAD 實(shí)用工具。然后用一個(gè)有對中間過(guò)渡表的查詢(xún)的插入或者運行一個(gè) ETL(抽取,轉換和裝載)任務(wù)來(lái)更新主表(會(huì )發(fā)生壓縮)。如果你在表分區中利用 MDC 的優(yōu)勢轉入數據性能可以得到進(jìn)一步提高。

對版本 9.5,自動(dòng)創(chuàng )建壓縮字典簡(jiǎn)化了這個(gè)快速附加一個(gè)表分區的技術(shù)。

  1. ALTER/Add空表
  2. 通過(guò)使用 LOAD 實(shí)用工具或一個(gè) INSERT/SELECT 語(yǔ)句,用數據填充這個(gè)表(數據被自動(dòng)創(chuàng )建的壓縮字典壓縮)

注意,在一個(gè)完全裝載的分區上進(jìn)行離線(xiàn)重組,可以得到比只有這個(gè)月歸檔的分區更好的壓縮。





回頁(yè)首


連續更新情況下轉入和轉出數據的最佳實(shí)踐

這個(gè)數據庫設計包含了多個(gè) DB2 數據庫系統功能,以方便在連續更新的請求下的數據轉入和轉出。

這些應用程序的設計有以下特點(diǎn):

  • 全天的連續更新(這妨礙了執行 ALTER/Add 來(lái)添加一個(gè)分區)
  • 數據是按天增加的
  • 查詢(xún)經(jīng)常訪(fǎng)問(wèn)某天
  • 基于 day 的表分區會(huì )產(chǎn)生過(guò)多的分區(例如,有 3 年,每年 365 天)
  • 每周或者每月進(jìn)行轉出(通常在一個(gè)報告邊界)

關(guān)于數據庫設計的建議:

為了方便轉入數據,指定只有一個(gè)在 day 上的維度的 MDC(見(jiàn)“ MDC 功能有助于轉入和轉出數據”部分)

為了方便轉出數據,對每周或每個(gè)月指定一個(gè)表分區范圍。對 MDC 提供相同的時(shí)間維度不過(guò)是更粗的粒度。

有很長(cháng)運行報告的程序對 DB2 LOAD 實(shí)用工具通常不能排除查詢(xún)。在這種情況下的最佳實(shí)踐是使用 LOAD 實(shí)用工具來(lái)快速裝載數據到中間過(guò)渡表,然后使用一個(gè)有子查詢(xún)的插入來(lái)填充主表。





回頁(yè)首


在轉出以后:如何管理數據增長(cháng)和數據保持?

為了符合公司政策、管理章程、或審計需求,你可能需要保留你的數據并保持它們在很長(cháng)時(shí)間內可用。例如,Health Insurance Portability and Accountability Act (HIPAA) 法案,要求健康護理組織保留至少 5 年的原始醫療記錄。另外,一些企業(yè)也發(fā)現了對歷史數據進(jìn)行分析的價(jià)值,并因此保留更長(cháng)時(shí)期的數據。

因此,為了實(shí)施一個(gè)恰當的轉入轉入策略和適當的數據庫設計,你需要考慮數據的壽命,包括數據保留和獲取政策。出于保留數據的目的,你可以什么都不做并不停的增加硬件能力和資源,來(lái)保持這些附加的數據增長(cháng),然而本文介紹的是數據保留的最佳實(shí)踐。

使用 UNION All 視圖

一個(gè)實(shí)踐就是在數據庫中保留所有數據,把某些范圍轉出作為數據保留,并對這些范圍創(chuàng )建 UNION ALL 視圖以便于訪(fǎng)問(wèn)。

下面的例子演示了如何創(chuàng )建一個(gè) UNION ALL 視圖:

CREATE VIEW all_sales AS                        (                        SELECT * FROM sales_0105                        WHERE sales_date BETWEEN '01-01-2005' AND '01-31-2005'                        UNION ALL                        SELECT * FROM sales_0205                        WHERE sales_date BETWEEN '02-01-2005' AND '02-28-2005'                        UNION ALL                        ...                        UNION ALL                        SELECT * FROM sales_1207                        WHERE sales_date BETWEEN '12-01-2007' AND '12-31-2007'                        );                        

在數據庫使用主存儲把所有數據保持在線(xiàn)時(shí),使用 UNION ALL 視圖定位數據保留和實(shí)時(shí)訪(fǎng)問(wèn)。這個(gè)方法帶來(lái)的一個(gè)問(wèn)題是你可能不需要再維護和備份鏡像相關(guān)的數據。同樣,歷史數據一般不需要高性能,所以不需要進(jìn)行索引或使用在你主數據上的高成本的因素。

有很多使用 UNION ALL 視圖的方法:

  • 使用 UNION ALL 視圖訪(fǎng)問(wèn)活動(dòng)數據,并把你的歷史數據保持在分區表中。
  • 在范圍分區中保持活動(dòng)數據 , 使用 UNION ALL 視圖來(lái)訪(fǎng)問(wèn)在其他范圍分區中的歷史數據。

對使用 UNION ALL 視圖有一些限制。當你有很多范圍時(shí),最好使用范圍分區表。這是因為某些復雜謂詞不能用在 UNION ALL 視圖上。

然而,在某些情況下 UNION ALL 視圖又很有優(yōu)勢。例如,一個(gè) UNION ALL 視圖可以在聯(lián)邦數據庫中使用,相反,范圍分區表不能。

使用 IBM Optim Data Growth

根據你的歷史數據的服務(wù)級別協(xié)議(SLA),通常同時(shí)討論數據增長(cháng)和保存的最佳實(shí)踐是用 IBM Optim Data Growth 實(shí)施數據歸檔。

IBM Optim Data Growth是在處理增長(cháng)、遵守和管理上領(lǐng)先的解決方案。它通過(guò)歸檔已完成的業(yè)務(wù)對象,來(lái)保持應用程序的完整性,而非單個(gè)表。例如它在歸檔中保持外鍵并保留原數據。這些功能使你能夠:

  • 靈活的訪(fǎng)問(wèn)數據
  • 可以有選擇的或完整的恢復歸檔數據到原始數據庫表或一個(gè)新表中,甚至恢復到另外一個(gè)數據庫中。

完成下列步驟指南來(lái)判斷如何最好的實(shí)施你的歸檔策略:

1步:對你的應用程序進(jìn)行分類(lèi)

首先,你需要根據它們的歸檔需求來(lái)對你的應用程序進(jìn)行分類(lèi)。通過(guò)了解需要從你的應用程序數據中保留什么事務(wù),你可以根據相似數據需求來(lái)對應用程序進(jìn)行分組,來(lái)提高可訪(fǎng)問(wèn)性和性能。一些應用程序只需要保留當前事務(wù);一些只需要訪(fǎng)問(wèn)歷史事務(wù);其他的需要混合訪(fǎng)問(wèn)現在的和歷史的事務(wù)(以不同的比例)。

你也需要客觀(guān)的對歸檔數據考慮服務(wù)層協(xié)議(SLA)。 SLA 是一個(gè)各個(gè)組織間著(zhù)名的協(xié)議,它定義了它們之間的期望,包括客觀(guān)的條目,比如服務(wù)、優(yōu)先級和職責。 SLA 的目的通常被定義為使用響應時(shí)間的目標。例如,可能需要在五分鐘內運行一個(gè)特定的人力資源報告。

2步:評估你的數據溫度

數據溫度來(lái)自于:

  • 數據訪(fǎng)問(wèn)有多頻繁
  • 花費多長(cháng)時(shí)間
  • 數據變化(揮發(fā)性)有多快
  • 用戶(hù)和應用程序需求

在不同的企業(yè),數據溫度也有所不同,不過(guò)通常來(lái)說(shuō),數據溫度是根據產(chǎn)業(yè)間的區別進(jìn)行的一般分類(lèi)。下表提供了數據溫度的指南:

數據溫度 描述
Hot 策略數據 – 對當前數據查詢(xún)的體積、頻繁訪(fǎng)問(wèn)的和需要提升快速反應時(shí)間。
Warm 傳統決策支持數據 – 查詢(xún)對這類(lèi)數據的訪(fǎng)問(wèn)不那么頻繁而且數據獲取也不需要緊急提升響應時(shí)間。
Cold 深度歷史數據 – 查詢(xún)很少訪(fǎng)問(wèn)這類(lèi)數據不過(guò)它們必須可以周期性的訪(fǎng)問(wèn)。
Dormant 監控數據它們需要能夠在某些例外情況下訪(fǎng)問(wèn)。

有很多方法可以訪(fǎng)問(wèn)數據溫度,例如,使用你的轉出策略和系統跟蹤。你需要訪(fǎng)問(wèn)的溫度信息:

  • 什么對象有(或沒(méi)有)被訪(fǎng)問(wèn)。
  • 每個(gè)對象訪(fǎng)問(wèn)的平率
  • 某個(gè)對象被訪(fǎng)問(wèn)的通常的時(shí)間間隔

    例如 THIS_WEEK, LAST_WEEK, THIS_QUARTER, LAST_QUARTER 。

  • 在一個(gè)對象中的那些數據被訪(fǎng)問(wèn)了。

你可以使用 DB2 版本 9.5 負載管理器(WLM)來(lái)幫助發(fā)現數據的溫度。 WLM 歷史分析工具提供了關(guān)于那些表、索引和列被訪(fǎng)問(wèn)了,那些沒(méi)有以及有多頻繁的信息。

WLM歷史分析工具有兩個(gè)腳本組成:

  • wlmhist.pl:產(chǎn)生歷史數據
  • wlmhisrep.pl:從歷史數據中產(chǎn)生報告

要發(fā)現對象中的那些數據被訪(fǎng)問(wèn)過(guò),你需要分析 SQL 語(yǔ)句。要這么做,使用一個(gè) ACTIVITIES 事件監視器來(lái)搜集運行的活動(dòng)數據(包括 SQL 語(yǔ)句文本)。你可能想搜集關(guān)于工作負載管理對象比如工作負載、服務(wù)類(lèi)型和工作類(lèi)型(通過(guò)工作活動(dòng))。要啟用活動(dòng)搜集,在這些市哦那個(gè) COLLECT ACTIVITY DATA WITH DETAILS 子句的對象上執行 CREATE 或 ALTER 語(yǔ)句,如下所示

ALTER SERVICE CLASS sysdefaultsubclass                        UNDER sysdefaultuserclass                        COLLECT ACTIVITY DATAON ALLWITH DETAILS                        

WITH DETAILS選項啟用對靜態(tài)語(yǔ)句和動(dòng)態(tài) SQL 語(yǔ)句的語(yǔ)句文本搜集。

如果應用程序在語(yǔ)句文本中使用了參數標記,也應該包括 AND VALUES 選項,(指定 COLLECT ACTIVITY DATA WITH DETAILS 和 AND VALUES)。 AND VALUES 選項搜集和參數變量相關(guān)的數據值以獲得詳細語(yǔ)句信息。

第3步:發(fā)現并對你的業(yè)務(wù)對象進(jìn)行分類(lèi)

業(yè)務(wù)對象,比如一個(gè)保單、一個(gè)發(fā)票、或購物清單、代表了一個(gè)事務(wù)交易。通過(guò)指定你的業(yè)務(wù)對象,你可以開(kāi)始定義規則和相關(guān)業(yè)務(wù)驅動(dòng)以在數據生命周期的不同階段管理這些對象。

從數據庫透視圖來(lái)看,一個(gè)業(yè)務(wù)對象表示了一組相關(guān)表中相關(guān)的行

業(yè)務(wù)對象的簡(jiǎn)單例子

給出了下面 3 個(gè)表:



業(yè)務(wù)對象是:

出于保持和歸檔的目的,你希望表現整個(gè)業(yè)務(wù)對象,比如你有一個(gè)事務(wù)交易的歷史“時(shí)間點(diǎn)”快照。創(chuàng )建一個(gè)歷史快照需要交易細節和相關(guān)主要數據,這包含數據庫中的多個(gè)表??梢酝暾_的對整個(gè)業(yè)務(wù)對象進(jìn)行歸檔,并提供單獨的交易歷史存儲庫。為了響應質(zhì)詢(xún)或發(fā)現需求,你可以查詢(xún)這個(gè)存儲庫而不需要訪(fǎng)問(wèn) HOT 數據。

在這個(gè)例子中,為了確保所有對象可用,歸檔業(yè)務(wù)對象必須由來(lái)自 DEPARTMENT 和 EMPLOYEE 表中的相關(guān)數據組成。在歸檔后,你會(huì )只想刪除生產(chǎn) PROJECT 表中的數據以及和 EMPLOYEE、DEPARTEMENT 無(wú)關(guān)的數據。

就像在這個(gè)例子中展示的,你會(huì )發(fā)現基于模式間的關(guān)系的業(yè)務(wù)對象。 不過(guò),你或許也想包含其它沒(méi)有任何模式關(guān)系的相關(guān)表,卻通過(guò)使用一個(gè)應用程序相關(guān)聯(lián)。另外,你或許會(huì )選擇刪除從某個(gè)業(yè)務(wù)對象上某個(gè)發(fā)現的關(guān)系

第4步:生成你的綜合數據分類(lèi):

在你對你的應用程序和業(yè)務(wù)對象完以成分類(lèi)并對他們相關(guān)數據溫度做出判斷后,你可以生成一個(gè)數據分類(lèi)表來(lái)總結這些信息。這張表可以明白的說(shuō)明數據的年齡。

下表提供了一個(gè)分類(lèi)樣本:

第5步:判斷后歸檔存儲類(lèi)型

為了判斷什么存儲類(lèi)型歲適合你的老數據:

  • 誰(shuí)需要訪(fǎng)問(wèn)歸檔數據,處于什么目的?
  • 期望的響應時(shí)間是多少?
  • 什么數據年齡將被歸檔?
  • 有多少層以及應該部署在什么存儲類(lèi)型上,例如,SAN、WORM 或磁帶

例如,對于在線(xiàn)歸檔你可以使用 ATA 磁盤(pán)或更大容量的較慢驅動(dòng)。對離線(xiàn)歸檔,你可以使用磁帶或 WORM(IBM DR550,EMC Centera)。

第6步:訪(fǎng)問(wèn)歸檔數據

Optim Data Growth訪(fǎng)問(wèn)層使用 SQL92 容量和多種協(xié)議(如上圖所示)以支持對歸檔數據的訪(fǎng)問(wèn)。這個(gè)訪(fǎng)問(wèn)能力和生產(chǎn)系統完全不同,而且不會(huì )使用任何生產(chǎn)系統資源

另外,你可以使用一個(gè)聯(lián)邦系統(使用 IBM DB2 聯(lián)邦服務(wù)器)從生產(chǎn)系統上來(lái)對歸檔數據提供透明訪(fǎng)問(wèn)。

這兩種方法都允許對歸檔數據的直接訪(fǎng)問(wèn),不需要取得或回復歸檔數據。

下面例子演示了如何使用 UNION ALL 視圖來(lái)同時(shí)訪(fǎng)問(wèn)活動(dòng)和歸檔數據。在例子中把數據庫中叫做project表重命名為另外一個(gè)名字,然后創(chuàng )建一個(gè)也叫做project的 UNION ALL 視圖。

RENAME TABLE project TO project_active                        CREATE VIEW project AS                        SELECT * FROM project_active WHERE prjendate >= (CURRENT_DATE – 5 YEARS)                        UNION ALL                        SELECT * FROM project_arch WHERE prjendate < (CURRENT_DATE – 5 YEARS)                        

另外,下面例子避免了在數據庫中重名表的需求。例子中創(chuàng )建了一個(gè)叫project_all的 UNION ALL 視圖作為替代,應用程序可以從這里查詢(xún)到完整的project數據集:

CREATE VIEW project_all AS                        SELECT * FROM project WHERE prjendate >= (CURRENT_DATE – 5 YEARS)                        UNION ALL                        SELECT * FROM project_arch WHERE prjendate < (CURRENT_DATE – 5 YEARS)                        





回頁(yè)首


結論

通過(guò)仔細選擇在你的 DB2 數據庫中最適合分區方法,以及在你的系統上使用最有效的轉入和轉出技術(shù),你可以最大化整體系統性能和效率。

投入足夠的時(shí)間來(lái)分析和理解你的數據,這樣你可以最好的利用本文中的指南,并獲得 DB2 數據庫提供功能的好處來(lái)使你的系統盡可能有效率。

你可以使用數據庫分區來(lái)提供擴展性并確保數據在分區間均勻分布。下面指南在“設計并實(shí)現你的表分區策略”這一章中設計最有效的表分區策略。使用 MDC 來(lái)提高查詢(xún)性能并使轉入數據更容易。

如果你需要從壓縮的額表分區中轉入大量數據,升級到 DB2 版本 9.5 數據庫系統并使用 ALTER/Add 方法來(lái)附加一個(gè)表分區。

如果你需要提供連續更新,你的最佳策略是使用 MDC 以方便轉入處理。

緊接著(zhù)在“在轉出以后:如何管理數據增長(cháng)和數據保持?”指南中確定了如何處理你的歷史數據需求。

在你準備好轉出你的數據并歸檔之前,你需要對數據保留和從歸檔中取回數據確定一個(gè)和你的組織匹配的數據策略。

你可以確定你組織對保留數據的需求,并通過(guò)下列因素取回:

  • 你需要保留的事務(wù)類(lèi)型
  • 你的數據的“溫度”
  • 你的業(yè)務(wù)對象是怎么組成的

你的策略應該包含什么類(lèi)型的后歸檔存儲是最合適的,以及如何最好的訪(fǎng)問(wèn)歸檔數據。



參考資料

學(xué)習

獲得產(chǎn)品和技術(shù)
  • 使用可直接從 developerWorks 下載的IBM 產(chǎn)品評估試用軟件構建您的下一個(gè)開(kāi)發(fā)項目。

  • 現在可以免費使用 DB2 。下載DB2 Express-C,這是為社區提供的 DB2 Express Edition 的免費版本,它提供了與 DB2 Express Edition 相同的核心數據特性,為構建和部署應用程序奠定了堅實(shí)的基礎。


討論




 
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
提高數據庫查詢(xún)速度的幾個(gè)思路
數據庫經(jīng)典筆試題總結
數據庫管理員JAVA程序員架構師必看
DB2 for z/OS: DB2 數據庫設計
SQL Server 表分區實(shí)戰系列(文章索引)
數據庫的那些事(全是干貨)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久