大型數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)與功效研究_第1頁
大型數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)與功效研究_第2頁
大型數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)與功效研究_第3頁
大型數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)與功效研究_第4頁
大型數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)與功效研究_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第第頁大型數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)與功效研究數(shù)據(jù)庫特別是大型數(shù)據(jù)庫的執(zhí)行效率一貫是困擾系統(tǒng)用戶的最大問題。軟件項(xiàng)目在設(shè)計(jì)時,由于測試用例的數(shù)據(jù)量很小,許多有關(guān)執(zhí)行效率的問題都反映不出來。

大型數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)與功效討論

數(shù)據(jù)庫特別是大型數(shù)據(jù)庫的執(zhí)行效率一貫是困擾系統(tǒng)用戶的最大問題。軟件項(xiàng)目在設(shè)計(jì)時,由于測試用例的數(shù)據(jù)量很小,許多有關(guān)執(zhí)行效率的問題都反映不出來。

佳的一面,對產(chǎn)品弱點(diǎn)卻避開提及或進(jìn)行遮掩。其實(shí)在選擇和評估過程中,首要目標(biāo)是選擇一款能夠滿意甚至超過預(yù)定要求的技術(shù)或解決方案。選型的正確方法將運(yùn)用戶在面對眾多產(chǎn)品時,做出最正確選擇。數(shù)據(jù)庫選型需要考慮五大因素:開發(fā)要求、性能/成本、數(shù)據(jù)庫運(yùn)行和管理、可升級性和總體擁有成本。

首先,需要清晰自己到底想運(yùn)用什么開發(fā)技術(shù)。例如,你是要以訪問傳統(tǒng)的關(guān)系型數(shù)據(jù)庫?還是要以純面對對象技術(shù)構(gòu)建j2ee應(yīng)用平臺?又或是需要建設(shè)*mlwebservices?假如你要實(shí)現(xiàn)的是純關(guān)系型的開發(fā)典范,那么實(shí)際要運(yùn)用的受支持的標(biāo)準(zhǔn)〔和非標(biāo)準(zhǔn)〕sql功能有多少?假如你要規(guī)劃的是面對對象開發(fā)策略,那么在原計(jì)劃里的數(shù)據(jù)庫支持真正的面對對象嗎?它是如何支持的?假設(shè)有需要,它能同時提供sql的功能嗎?數(shù)據(jù)庫支持這個功能嗎?雖然,有些關(guān)系型數(shù)據(jù)庫聲稱支持對象開發(fā),但事實(shí)上并不是徑直支持的。這種非徑直的體系結(jié)構(gòu)將導(dǎo)致更多的事務(wù)處理故障,以及潛在的可升級性和性能問題。

另外,你還需要確定自己的前端技術(shù)如何與后端進(jìn)行“對話”。你的業(yè)務(wù)規(guī)律是放在客戶機(jī)一端呢?還是放在服務(wù)器一端?你要運(yùn)用哪些腳本語言?它們與后端服務(wù)器的兼容性如何?它們是快速應(yīng)用開發(fā)〔rad〕環(huán)境嗎?

目前,實(shí)現(xiàn)基于關(guān)系型數(shù)據(jù)庫的應(yīng)用可以選擇傳統(tǒng)的主流品牌,這些數(shù)據(jù)庫產(chǎn)品有著很成熟的關(guān)系技術(shù)以及廣泛的應(yīng)用資源。但是,假如實(shí)現(xiàn)的是基于面對對象技術(shù)的應(yīng)用、又或是數(shù)據(jù)結(jié)構(gòu)更為繁復(fù)

數(shù)據(jù)庫特別是大型數(shù)據(jù)庫的執(zhí)行效率一貫是困擾系統(tǒng)用戶的最大問題。軟件項(xiàng)目在設(shè)計(jì)時,由于測試用例的數(shù)據(jù)量很小,許多有關(guān)執(zhí)行效率的問題都反映不出來。

時,不妨考慮目前一些公司推出的所謂后關(guān)系數(shù)據(jù)庫。它所代表的正好是關(guān)系數(shù)據(jù)庫和面對對象技術(shù)的融合,以多維數(shù)據(jù)引擎作為核心,從根本上支持繁復(fù)的對象存儲及主流的二維表,同時也已經(jīng)配備了功能強(qiáng)大的應(yīng)用服務(wù)引擎,可作對象規(guī)律操作的平臺。它的涌現(xiàn)已經(jīng)為傳統(tǒng)數(shù)據(jù)庫領(lǐng)域帶來了沖擊,而在面對對象數(shù)據(jù)庫方面更是廣受歡迎。

測量數(shù)據(jù)庫性能最常見的方法是tpc基準(zhǔn)。tpc明確地定義了數(shù)據(jù)庫方案、數(shù)據(jù)量以及sql查詢。測量的結(jié)果是,在特定的操作系統(tǒng)上配置了特定的數(shù)據(jù)庫版本,以及在驚人的硬件條件下每項(xiàng)事務(wù)的成本是多少——其中的事務(wù)可以是tpc測試中定義的任何數(shù)據(jù)庫操作。

從理論上來講,這類基準(zhǔn)旨在提供不同產(chǎn)品間客觀的比較值。但在現(xiàn)實(shí)中,這些方案又有多少能精確反映并回答你在選擇技術(shù)時所存在的迷惑?其次,全部技術(shù)廠商發(fā)布的tpc基準(zhǔn)都會超過以前發(fā)布的結(jié)果。這樣,tpc基準(zhǔn)在更大程度上反映的是為解決問題而投入的內(nèi)存和cpu量,而不是數(shù)據(jù)庫性能的任何真實(shí)表現(xiàn)。只有在真實(shí)的環(huán)境中進(jìn)行實(shí)際的比較測試才可以推斷出數(shù)據(jù)庫的預(yù)期性能及評估所需成本。常用的方法包括平衡移植,把原來的數(shù)據(jù)轉(zhuǎn)移到類似硬件上的另一套數(shù)據(jù)庫,然后以真實(shí)的客戶端連接這套測試對象。又或是以數(shù)據(jù)產(chǎn)生針對真實(shí)的數(shù)據(jù)模型,建立出巨大的數(shù)據(jù)量,再以客戶端連接作測試。

這種做法跟試驗(yàn)室中的做法的不同之處有以下幾點(diǎn):第一,試驗(yàn)

數(shù)據(jù)庫特別是大型數(shù)據(jù)庫的執(zhí)行效率一貫是困擾系統(tǒng)用戶的最大問題。軟件項(xiàng)目在設(shè)計(jì)時,由于測試用例的數(shù)據(jù)量很小,許多有關(guān)執(zhí)行效率的問題都反映不出來。

中的硬件構(gòu)架跟你預(yù)期的方案不會有太大的差別;第二,所測試的事務(wù)在寬度和深度方面跟將來計(jì)劃的也差不太遠(yuǎn);第三,假如是硬件條件一樣,我們可以徑直看出測試對象跟原來方案有著多少差異。

掌控了以上結(jié)論之后,我們應(yīng)當(dāng)可以更精明地為所需的性能投入相應(yīng)的成本。換句話說,我們將能夠更精確地猜測各種數(shù)據(jù)庫的性能與相應(yīng)的成本。

2數(shù)據(jù)庫設(shè)計(jì)

2.1數(shù)據(jù)模式設(shè)計(jì)

在數(shù)據(jù)庫規(guī)律設(shè)計(jì)過程中,為了保證數(shù)據(jù)庫的全都性和完整性,數(shù)據(jù)庫要根據(jù)關(guān)系數(shù)據(jù)庫的規(guī)范化要求設(shè)計(jì)。滿意這些范式條件的關(guān)系模式可在不同程度上避開冗余、插入和更新異樣問題。在基于表驅(qū)動的系統(tǒng)中,基本表的設(shè)計(jì)規(guī)范是第三范式3nf。但是在實(shí)際工作中,對于常常需要執(zhí)行查詢、匯總的列,假如按規(guī)范化理論設(shè)計(jì)確定會增加表的連接操作而降低系統(tǒng)性能,這時可以降低數(shù)據(jù)庫對規(guī)范化理論的要求,以便滿意實(shí)際應(yīng)用操作的需要。所以合理運(yùn)用冗余會為查詢帶來很大的好處,比如常常被查詢的匯總數(shù)據(jù)可以在平常工作中就累加好,不需要到查詢時再運(yùn)用如sum之類的函數(shù)。

2.2索引設(shè)計(jì)

索引即將表數(shù)據(jù)按索引要求而產(chǎn)生有序的數(shù)據(jù)副本,這樣的查詢可以在有序表中進(jìn)行,提高查詢數(shù)據(jù)的速度,改善系統(tǒng)性能??墒沁\(yùn)用索引也會耗費(fèi)磁盤空間,增加開銷,降低dml(insert、

數(shù)據(jù)庫特別是大型數(shù)據(jù)庫的執(zhí)行效率一貫是困擾系統(tǒng)用戶的最大問題。軟件項(xiàng)目在設(shè)計(jì)時,由于測試用例的數(shù)據(jù)量很小,許多有關(guān)執(zhí)行效率的問題都反映不出來。

update、delete)操作執(zhí)行的效率。因此設(shè)計(jì)時應(yīng)盡量選擇有用的索引,在提高查詢速度和節(jié)約存儲空間之間尋求最正確的平衡點(diǎn)。數(shù)據(jù)庫服務(wù)器對數(shù)據(jù)進(jìn)行訪問一般采納下面的兩種方式:索引掃描:通過索引訪問數(shù)據(jù);表掃描:讀表中的全部頁。當(dāng)對一個表進(jìn)行查詢時,假如返回的行數(shù)占全表總行數(shù)的10%到15%時,運(yùn)用索引可以極大的優(yōu)化查詢的性能。但是假如查詢涉及到全表40%以上的行時,表掃描的效率比運(yùn)用索引掃描的效率高。在詳細(xì)運(yùn)用的過程中,要結(jié)合實(shí)際的數(shù)據(jù)庫和用戶的需求來確定要不要索引以及在什么字段上建立什么樣的索引。下面給出一些通用的規(guī)章:

①在常常用作過濾器或者查詢頻率較高字段上建立索引;②在sql語句中常常進(jìn)行g(shù)roupby、orderby的字段上建立索引;③在不同值較少的字段上不須要建立索引,如性別字段;④對于常常存取的列應(yīng)避開建立索引;⑤用于聯(lián)接的列〔主健/外健〕建立索引;⑥在常常存取的多個列上建立聯(lián)合索引,但要留意聯(lián)合索引的建立順次要根據(jù)運(yùn)用的頻度來確定。

聚集索引是指行的物理順次與行的索引順次相同的索引。一個表只能有一個聚集索引。非聚集索引是指定表的規(guī)律順次索引,行的物理順次與索引順次不盡相同,每個表可以有多個非聚集索引。缺省狀況下建立的是非聚集索引,但是在一些特定的狀況下建立非聚集索引會極大的縮短查詢的時間。有大量重復(fù)值、且常常有范圍查詢〔between,,=,=〕和orderby、groupby發(fā)生的列,可考慮建立聚集索引,而對于經(jīng)常修改的列、或者返回小數(shù)目的不同值

數(shù)據(jù)庫特別是大型數(shù)據(jù)庫的執(zhí)行效率一貫是困擾系統(tǒng)用戶的最大問題。軟件項(xiàng)目在設(shè)計(jì)時,由于測試用例的數(shù)據(jù)量很小,許多有關(guān)執(zhí)行效率的問題都反映不出來。

的這些狀況應(yīng)當(dāng)避開建立聚集索引。

運(yùn)用聚集索引的最大好處就是能夠依據(jù)查詢要求,快速縮小查詢范圍,避開全表掃描。比如要返回2022年10月1日到2022年10月1日之間的數(shù)據(jù),假如在日期的字段建立了聚集索引,那么數(shù)據(jù)原來就是根據(jù)日期的順次排列的,只要找到開始和結(jié)尾日期的數(shù)據(jù)就可以了,可以極大的節(jié)約時間。而假如運(yùn)用非聚集索引,需要查到這個時間段中每個日期對應(yīng)的位置,然后在依據(jù)位置存取數(shù)據(jù),明顯效率很低。不言而喻,運(yùn)用聚集索引的優(yōu)勢很明顯。一個表只能根據(jù)一個固定的順次來存儲數(shù)據(jù)。因此,在建立聚集索引的時候肯定要和實(shí)際查詢相結(jié)合,看哪個字段對于查詢貢獻(xiàn)大,而且操作不是很經(jīng)常。

索引有助于提高檢干脆能,但過多或不當(dāng)?shù)乃饕矔?dǎo)致系統(tǒng)低效。由于用戶在表中每添加一個索引,數(shù)據(jù)庫就要做更多的工作。過多的索引甚至?xí)?dǎo)致索引碎片。所以說,我們要合理運(yùn)用索引體系,特別是對索引的創(chuàng)建,更應(yīng)精益求精,使數(shù)據(jù)庫的性能得到更好的發(fā)揮。

創(chuàng)建索引可以依據(jù)查詢業(yè)務(wù)的不同分為兩種:單一列索引和聯(lián)合索引。單一列索引就是指在表的某一列上創(chuàng)建索引,聯(lián)合索引是在多個列上聯(lián)合創(chuàng)建索引。兩種索引比較結(jié)果如下:

①索引所占用空間:單一列索引相對要??;②索引創(chuàng)建時間:單一列索引相對短;③索引對insert,update,delete的影響程序:單

數(shù)據(jù)庫特別是大型數(shù)據(jù)庫的執(zhí)行效率一貫是困擾系統(tǒng)用戶的最大問題。軟件項(xiàng)目在設(shè)計(jì)時,由于測試用例的數(shù)據(jù)量很小,許多有關(guān)執(zhí)行效率的問題都反映不出來。

一列索引要相對低;④在多條件查詢時,聯(lián)合索引效率要高。索引的運(yùn)用范圍:單一列索引可以涌現(xiàn)在where條件中的任何位置,而聯(lián)合索引需要按肯定的順次來寫。最末要留意,對數(shù)據(jù)量大及運(yùn)用經(jīng)常的數(shù)據(jù)庫需要是要用索引優(yōu)化器來優(yōu)化索引。

2.3查詢設(shè)計(jì)

從大多數(shù)系統(tǒng)的應(yīng)用實(shí)例來看,查詢操作在各種數(shù)據(jù)庫操作中所占據(jù)的比重最大。很多程序員在開發(fā)數(shù)據(jù)庫應(yīng)用程序時,只著重用戶界面的華麗,并不重視查詢語句的效率問題,導(dǎo)致所開發(fā)出來的應(yīng)用系統(tǒng)效率低下。因此,如何設(shè)計(jì)高效合理的查詢語句就顯得特別重要。

(1)正確地運(yùn)用索引

正確運(yùn)用索引可以大大提高查詢效率,在條件子句中應(yīng)盡量考慮有用索引的運(yùn)用。例如,在同學(xué)登記表中,假如創(chuàng)建學(xué)號為單列索引,那么查詢語句的where子句中應(yīng)運(yùn)用學(xué)號這個索引,使之成為有用索引。

(2)模糊匹配的避開

like關(guān)鍵字支持通配符匹配,技術(shù)上稱為正那么表達(dá)式。但這種匹配特別耗費(fèi)時間,盡量避開運(yùn)用模糊匹配。

(3)子查詢合并

子查詢合并是將某些特定的子查詢重寫為等價的多個表的連接操作。子查詢合并的作用在于能使查詢語句的層次盡可能地減削,從而可提高查詢的效率。子查詢合并的一般規(guī)章為:①假如外層查詢

數(shù)據(jù)庫特別是大型數(shù)據(jù)庫的執(zhí)行效率一貫是困擾系統(tǒng)用戶的最大問題。軟件項(xiàng)目在設(shè)計(jì)時,由于測試用例的數(shù)據(jù)量很小,許多有關(guān)執(zhí)行效率的問題都反映不出來。

的結(jié)果沒有重復(fù),即select子句中包含主碼,那么可以合并其子查詢,并且合并后的select子句前應(yīng)加上distinct標(biāo)識;②假如外層查詢的select子句中有distinct標(biāo)識,那么可以徑直進(jìn)行子查詢合并;③假如內(nèi)部子查詢結(jié)果沒有重復(fù)元組,那么可以合并。

(4)運(yùn)用臨時表優(yōu)化查詢

在涉及相關(guān)查詢的某些情形中,構(gòu)造臨時關(guān)系可以提高查詢效率。

3數(shù)據(jù)庫系統(tǒng)配置

3.1硬件系統(tǒng)配置

數(shù)據(jù)庫服務(wù)器中最重要的配置參數(shù)有內(nèi)存、cpu和網(wǎng)卡。目前影響最大的是內(nèi)存。盡可能把數(shù)據(jù)放入內(nèi)存,比臨時從硬盤中調(diào)入內(nèi)存來的要快的多。假如內(nèi)存太小,小會造成數(shù)據(jù)在內(nèi)存與硬盤之間的經(jīng)常調(diào)入調(diào)出,假如內(nèi)存的占用率超過50%,那就要考慮是否要擴(kuò)大它。在內(nèi)存足夠大時,系統(tǒng)可以考慮在每天的初始運(yùn)行時,將數(shù)據(jù)預(yù)裝入內(nèi)存也是一種行之有效的好方法。

3.2功能模塊配置

系統(tǒng)無論是c/s架構(gòu)還是b/s架構(gòu)。數(shù)據(jù)信息的系統(tǒng)處理時間都是由三部分組成:數(shù)據(jù)庫服務(wù)器處理時間;網(wǎng)絡(luò)傳輸時間;客戶端處理時間。所以解決系統(tǒng)性能的關(guān)鍵點(diǎn)就在于如何使得這三個時間的總和最小。

在系統(tǒng)中數(shù)據(jù)庫服務(wù)器的配置和性能往往是最高。但它的工作也最繁重,要同時應(yīng)對假設(shè)干用戶的操作懇求。同時我們留意到有些系

數(shù)據(jù)庫特別是大型數(shù)據(jù)庫的執(zhí)行效率一貫是困擾系統(tǒng)用戶的最大問題。軟件項(xiàng)目在設(shè)計(jì)時,由于測試用例的數(shù)據(jù)量很小,許多有關(guān)執(zhí)行效率的問題都反映不出來。

統(tǒng)工作可以放在客戶端處理,也可以由數(shù)據(jù)庫服務(wù)器處理,但怎樣安排才好呢?這要詳細(xì)看系統(tǒng)各組成部分的性能。

(1)如客戶端功能弱而數(shù)據(jù)庫服務(wù)器技能強(qiáng),那么有些問題就可以用觸發(fā)器、自定義函數(shù)和視圖等形式交給數(shù)據(jù)庫服務(wù)器去處理。這樣不僅可以減輕客戶端壓力還帶來系統(tǒng)可維護(hù)性好的好處。

(2)反之,如客戶端處理技能較強(qiáng),而數(shù)據(jù)庫服務(wù)器壓力過大的話,有些諸如觸發(fā)器要完成的工作可以有客戶端來完成,如數(shù)據(jù)驗(yàn)證、自動編號生成、數(shù)據(jù)統(tǒng)計(jì)等這樣一些工作可以交與客戶端來完成。

(3)充分兼顧網(wǎng)絡(luò)傳輸時間。目前的網(wǎng)絡(luò)特別是互聯(lián)網(wǎng)絡(luò),其流量壓力越來越大,峰值越來越經(jīng)常。為平衡客戶端與數(shù)據(jù)庫服務(wù)器的工作,有時會將一些半加工的數(shù)據(jù)在網(wǎng)絡(luò)上傳輸,這些數(shù)據(jù)往往數(shù)據(jù)量就很大,給網(wǎng)絡(luò)環(huán)節(jié)帶來壓力就大。假如只能傳輸處理結(jié)果而不傳輸中間數(shù)據(jù),這樣數(shù)據(jù)傳輸時間就最少,但這樣平衡客戶端和數(shù)據(jù)庫服務(wù)器的工作又比較難。所以要詳細(xì)狀況詳細(xì)分析,充分兼顧網(wǎng)絡(luò)傳輸時間對系統(tǒng)的影響。

4數(shù)據(jù)庫性能測試

目前常用的數(shù)據(jù)庫基準(zhǔn)性能測試工具是tpcc。關(guān)于它的運(yùn)用方法這里不再贅述。當(dāng)系統(tǒng)的性能下降以后,我們要分析下降的現(xiàn)象及產(chǎn)生緣由。常見的有:①原本好好的,突然變得很慢;②工作高峰時比較慢;③

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論