教你設(shè)計(jì)大型Oracle數(shù)據(jù)庫
更新時(shí)間:2009年06月20日 20:04:40 作者:
表及索引的存儲(chǔ)容量估算是根據(jù)其記錄長度及估算的最大記錄數(shù)確定的。在容量計(jì)算中考慮了數(shù)據(jù)塊的頭開銷及記錄和字段的頭開銷等等。表及索引的initial和next存儲(chǔ)參數(shù)一般設(shè)為相等,pctincrease設(shè)為0。
一、概論
超大型系統(tǒng)的特點(diǎn)為:
1、處理的用戶數(shù)一般都超過百萬,有的還超過千萬,數(shù)據(jù)庫的數(shù)據(jù)量一般超過1TB;
2、系統(tǒng)必須提供實(shí)時(shí)響應(yīng)功能,系統(tǒng)需不停機(jī)運(yùn)行,要求系統(tǒng)有很高的可用性及可擴(kuò)展性。
為了能達(dá)到以上要求,除了需要性能優(yōu)越的計(jì)算機(jī)和海量存儲(chǔ)設(shè)備外,還需要先進(jìn)的數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)和優(yōu)化的應(yīng)用系統(tǒng)。
一般的超大型系統(tǒng)采用雙機(jī)或多機(jī)集群系統(tǒng)。下面以數(shù)據(jù)庫采用Oracle 8.0.6并行服務(wù)器為例來談?wù)劤笮蛿?shù)據(jù)庫設(shè)計(jì)方法:
確定系統(tǒng)的ORACLE并行服務(wù)器應(yīng)用劃分策略
數(shù)據(jù)庫物理結(jié)構(gòu)的設(shè)計(jì)
系統(tǒng)硬盤的劃分及分配
備份及恢復(fù)策略的考慮
二、Oracle并行服務(wù)器應(yīng)用劃分策略
Oracle并行服務(wù)器允許不同節(jié)點(diǎn)上的多個(gè)INSTANCE實(shí)例同時(shí)訪問一個(gè)數(shù)據(jù)庫,以提高系統(tǒng)的可用性、可擴(kuò)展性及性能。Oracle并行服務(wù)器中的每個(gè)INSTANCE實(shí)例都可將共享數(shù)據(jù)庫中的表或索引的數(shù)據(jù)塊讀入本地的緩沖區(qū)中,這就意味著一個(gè)數(shù)據(jù)塊可存在于多個(gè)INSTANCE實(shí)例的SGA區(qū)中。那么保持這些緩沖區(qū)的數(shù)據(jù)的一致性就很重要。Oracle使用 PCM( Parallel Cache Management)鎖維護(hù)緩沖區(qū)的一致性,Oracle同時(shí)通過I DLM(集成的分布式鎖管理器)實(shí)現(xiàn)PCM 鎖,并通過專門的LCK進(jìn)程實(shí)現(xiàn)INSTANCE實(shí)例間的數(shù)據(jù)一致。
考慮這種情況:INSTANCE1對BLOCK X塊修改,這時(shí)INSTANCE2對BLOCK X塊也需要修改。Oracle并行服務(wù)器利用PCM鎖機(jī)制,使BLOCK X從INSTANCE 1的SGA區(qū)寫入數(shù)據(jù)庫數(shù)據(jù)文件中,又從數(shù)據(jù)文件中把BLOCK X塊讀入INSTANCE2的SGA區(qū)中。發(fā)生這種情況即為一個(gè)PING。PING使原來1個(gè)MEMORY IO可以完成的工作變成2個(gè)DISK IO和1個(gè) MEMORY IO才能夠完成,如果系統(tǒng)中有過多的PING,將大大降低系統(tǒng)的性能。
Oracle并行服務(wù)器中的每個(gè)PCM鎖可管理多個(gè)數(shù)據(jù)塊。PCM鎖管理的數(shù)據(jù)塊的個(gè)數(shù)與分配給一個(gè)數(shù)據(jù)文件的PCM鎖的個(gè)數(shù)及該數(shù)據(jù)文件的大小有關(guān)。當(dāng)INSTANCE 1和INSTANCE 2要操作不同的BLOCK,如果這些BLOCK 是由同一個(gè)PCM鎖管理的,仍然會(huì)發(fā)生PING。這些PING稱為FALSE PING。當(dāng)多個(gè)INSTANCE訪問相同的BLOCK而產(chǎn)生的PING是TRUE PING。
合理的應(yīng)用劃分使不同的應(yīng)用訪問不同的數(shù)據(jù),可避免或減少TRUE PING;通過給FALSE PING較多的數(shù)據(jù)文件分配更多的PCM鎖可減少 FALSE PING的次數(shù),增加PCM鎖不能減少TRUE PING。
所以,Oracle并行服務(wù)器設(shè)計(jì)的目的是使系統(tǒng)交易處理合理的分布在INSTANCE實(shí)例間,以最小化PING,同時(shí)合理的分配PCM鎖,減少FALSE PING。設(shè)計(jì)的關(guān)鍵是找出可能產(chǎn)生的沖突,從而決定應(yīng)用劃分的策略。應(yīng)用劃分有如下四種方法:
1、根據(jù)功能模塊劃分,不同的節(jié)點(diǎn)運(yùn)行不同的應(yīng)用
2、根據(jù)用戶劃分,不同類型的用戶運(yùn)行在不同的節(jié)點(diǎn)上
3、根據(jù)數(shù)據(jù)劃分,不同的節(jié)點(diǎn)訪問不同的數(shù)據(jù)或索引
4、根據(jù)時(shí)間劃分,不同的應(yīng)用在不同的時(shí)間段運(yùn)行
應(yīng)用劃分的兩個(gè)重要原則是使PING最小化及使各節(jié)點(diǎn)的負(fù)載大致均衡。
三、數(shù)據(jù)庫物理結(jié)構(gòu)的設(shè)計(jì)
數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計(jì)包括確定表及索引的物理存儲(chǔ)參數(shù),確定及分配數(shù)據(jù)庫表空間,確定初始的回滾段,臨時(shí)表空間,redo log files等,并確定主要的初始化參數(shù)。物理設(shè)計(jì)的目的是提高系統(tǒng)的性能。整個(gè)物理設(shè)計(jì)的參數(shù)可以根據(jù)實(shí)際運(yùn)行情況作調(diào)整。
表及索引數(shù)據(jù)量估算及物理存儲(chǔ)參數(shù)的設(shè)置
表及索引的存儲(chǔ)容量估算是根據(jù)其記錄長度及估算的最大記錄數(shù)確定的。在容量計(jì)算中考慮了數(shù)據(jù)塊的頭開銷及記錄和字段的頭開銷等等。表及索引的initial和next存儲(chǔ)參數(shù)一般設(shè)為相等,pctincrease設(shè)為0。
超大型系統(tǒng)的特點(diǎn)為:
1、處理的用戶數(shù)一般都超過百萬,有的還超過千萬,數(shù)據(jù)庫的數(shù)據(jù)量一般超過1TB;
2、系統(tǒng)必須提供實(shí)時(shí)響應(yīng)功能,系統(tǒng)需不停機(jī)運(yùn)行,要求系統(tǒng)有很高的可用性及可擴(kuò)展性。
為了能達(dá)到以上要求,除了需要性能優(yōu)越的計(jì)算機(jī)和海量存儲(chǔ)設(shè)備外,還需要先進(jìn)的數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)和優(yōu)化的應(yīng)用系統(tǒng)。
一般的超大型系統(tǒng)采用雙機(jī)或多機(jī)集群系統(tǒng)。下面以數(shù)據(jù)庫采用Oracle 8.0.6并行服務(wù)器為例來談?wù)劤笮蛿?shù)據(jù)庫設(shè)計(jì)方法:
確定系統(tǒng)的ORACLE并行服務(wù)器應(yīng)用劃分策略
數(shù)據(jù)庫物理結(jié)構(gòu)的設(shè)計(jì)
系統(tǒng)硬盤的劃分及分配
備份及恢復(fù)策略的考慮
二、Oracle并行服務(wù)器應(yīng)用劃分策略
Oracle并行服務(wù)器允許不同節(jié)點(diǎn)上的多個(gè)INSTANCE實(shí)例同時(shí)訪問一個(gè)數(shù)據(jù)庫,以提高系統(tǒng)的可用性、可擴(kuò)展性及性能。Oracle并行服務(wù)器中的每個(gè)INSTANCE實(shí)例都可將共享數(shù)據(jù)庫中的表或索引的數(shù)據(jù)塊讀入本地的緩沖區(qū)中,這就意味著一個(gè)數(shù)據(jù)塊可存在于多個(gè)INSTANCE實(shí)例的SGA區(qū)中。那么保持這些緩沖區(qū)的數(shù)據(jù)的一致性就很重要。Oracle使用 PCM( Parallel Cache Management)鎖維護(hù)緩沖區(qū)的一致性,Oracle同時(shí)通過I DLM(集成的分布式鎖管理器)實(shí)現(xiàn)PCM 鎖,并通過專門的LCK進(jìn)程實(shí)現(xiàn)INSTANCE實(shí)例間的數(shù)據(jù)一致。
考慮這種情況:INSTANCE1對BLOCK X塊修改,這時(shí)INSTANCE2對BLOCK X塊也需要修改。Oracle并行服務(wù)器利用PCM鎖機(jī)制,使BLOCK X從INSTANCE 1的SGA區(qū)寫入數(shù)據(jù)庫數(shù)據(jù)文件中,又從數(shù)據(jù)文件中把BLOCK X塊讀入INSTANCE2的SGA區(qū)中。發(fā)生這種情況即為一個(gè)PING。PING使原來1個(gè)MEMORY IO可以完成的工作變成2個(gè)DISK IO和1個(gè) MEMORY IO才能夠完成,如果系統(tǒng)中有過多的PING,將大大降低系統(tǒng)的性能。
Oracle并行服務(wù)器中的每個(gè)PCM鎖可管理多個(gè)數(shù)據(jù)塊。PCM鎖管理的數(shù)據(jù)塊的個(gè)數(shù)與分配給一個(gè)數(shù)據(jù)文件的PCM鎖的個(gè)數(shù)及該數(shù)據(jù)文件的大小有關(guān)。當(dāng)INSTANCE 1和INSTANCE 2要操作不同的BLOCK,如果這些BLOCK 是由同一個(gè)PCM鎖管理的,仍然會(huì)發(fā)生PING。這些PING稱為FALSE PING。當(dāng)多個(gè)INSTANCE訪問相同的BLOCK而產(chǎn)生的PING是TRUE PING。
合理的應(yīng)用劃分使不同的應(yīng)用訪問不同的數(shù)據(jù),可避免或減少TRUE PING;通過給FALSE PING較多的數(shù)據(jù)文件分配更多的PCM鎖可減少 FALSE PING的次數(shù),增加PCM鎖不能減少TRUE PING。
所以,Oracle并行服務(wù)器設(shè)計(jì)的目的是使系統(tǒng)交易處理合理的分布在INSTANCE實(shí)例間,以最小化PING,同時(shí)合理的分配PCM鎖,減少FALSE PING。設(shè)計(jì)的關(guān)鍵是找出可能產(chǎn)生的沖突,從而決定應(yīng)用劃分的策略。應(yīng)用劃分有如下四種方法:
1、根據(jù)功能模塊劃分,不同的節(jié)點(diǎn)運(yùn)行不同的應(yīng)用
2、根據(jù)用戶劃分,不同類型的用戶運(yùn)行在不同的節(jié)點(diǎn)上
3、根據(jù)數(shù)據(jù)劃分,不同的節(jié)點(diǎn)訪問不同的數(shù)據(jù)或索引
4、根據(jù)時(shí)間劃分,不同的應(yīng)用在不同的時(shí)間段運(yùn)行
應(yīng)用劃分的兩個(gè)重要原則是使PING最小化及使各節(jié)點(diǎn)的負(fù)載大致均衡。
三、數(shù)據(jù)庫物理結(jié)構(gòu)的設(shè)計(jì)
數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計(jì)包括確定表及索引的物理存儲(chǔ)參數(shù),確定及分配數(shù)據(jù)庫表空間,確定初始的回滾段,臨時(shí)表空間,redo log files等,并確定主要的初始化參數(shù)。物理設(shè)計(jì)的目的是提高系統(tǒng)的性能。整個(gè)物理設(shè)計(jì)的參數(shù)可以根據(jù)實(shí)際運(yùn)行情況作調(diào)整。
表及索引數(shù)據(jù)量估算及物理存儲(chǔ)參數(shù)的設(shè)置
表及索引的存儲(chǔ)容量估算是根據(jù)其記錄長度及估算的最大記錄數(shù)確定的。在容量計(jì)算中考慮了數(shù)據(jù)塊的頭開銷及記錄和字段的頭開銷等等。表及索引的initial和next存儲(chǔ)參數(shù)一般設(shè)為相等,pctincrease設(shè)為0。
相關(guān)文章
Oracle查看表結(jié)構(gòu)的幾種方法示例代碼
本文通過示例代碼給大家介紹了oracle查看表結(jié)構(gòu)的幾種方式,感興趣的朋友參考下吧2017-07-07Oracle數(shù)據(jù)庫存儲(chǔ)過程的調(diào)試過程
oracle如果存儲(chǔ)過程比較復(fù)雜,我們要定位到錯(cuò)誤就比較困難,那么我們就可以用存儲(chǔ)過程的調(diào)試功能,下面這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫存儲(chǔ)過程調(diào)試的相關(guān)資料,需要的朋友可以參考下2022-07-07Oracle中pivot函數(shù)圖文實(shí)例詳解
pivot操作是一種數(shù)據(jù)處理方法,可以將一個(gè)表中的行數(shù)據(jù)轉(zhuǎn)換為列數(shù)據(jù),這種轉(zhuǎn)換對于表格數(shù)據(jù)的分析和展示非常有用,下面這篇文章主要給大家介紹了關(guān)于Oracle中pivot函數(shù)的相關(guān)資料,需要的朋友可以參考下2023-05-05Oracle數(shù)據(jù)遷移MySQL的三種簡單方法
對于許多企業(yè)而言,遷移數(shù)據(jù)庫時(shí)最大的挑戰(zhàn)之一是如何從一個(gè)數(shù)據(jù)庫平臺順利遷移到另一個(gè)平臺,下面這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)遷移MySQL的三種簡單方法,需要的朋友可以參考下2023-06-06日常收集整理oracle trunc 函數(shù)處理日期格式(很實(shí)用)
關(guān)于oracle trunc函數(shù)小編日常收集整理了些,下面把oracle trunc 函數(shù)處理日期格式的相關(guān)介紹分享給大家,感興趣的朋友參考下2015-10-10Oracle 實(shí)現(xiàn) 一個(gè)關(guān)鍵字 匹配多個(gè) 字段的方法
這篇文章主要介紹了Oracle 實(shí)現(xiàn) 一個(gè)關(guān)鍵字 匹配多個(gè) 字段的方法,本文給大家提供兩個(gè)方案,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-05-05Oracle數(shù)據(jù)庫及圖形化界面安裝教程圖解
本文通過圖文并茂的形式給大家介紹了Oracle數(shù)據(jù)庫及圖形化界面安裝教程,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-08-08Oracle開發(fā)之分析函數(shù)(Top/Bottom N、First/Last、NTile)
本文主要是對Oracle分析函數(shù)查找前幾名、后幾名、最多、最少以及按層次查詢的介紹,需要的朋友可以參考下。2016-05-05