心若改變,則態(tài)度改變;態(tài)度改變,則習(xí)慣改變;習(xí)慣改變,則人生改變
1、數(shù)據(jù)庫設(shè)計(jì):如何設(shè)計(jì)一個**的數(shù)據(jù)庫數(shù)據(jù)庫設(shè)計(jì)(DatabaseDesign)是指對于一個給定的應(yīng)用環(huán)境,構(gòu)造**的數(shù)據(jù)庫模式,建立數(shù)據(jù)庫及其應(yīng)用系統(tǒng),使之能夠有效地存儲數(shù)據(jù),滿足各種用戶的應(yīng)用需求(信息要求和處理要求)。在數(shù)據(jù)庫領(lǐng)域內(nèi),常常把使用數(shù)據(jù)庫的各類系統(tǒng)統(tǒng)稱為數(shù)據(jù)庫 2、數(shù)據(jù)庫設(shè)計(jì):數(shù)據(jù)庫設(shè)計(jì)過程中必須注意哪些問題DB2數(shù)據(jù)庫的性能與穩(wěn)定性直接跟數(shù)據(jù)庫對象的多少、大小有關(guān)。如果對象很少,不復(fù)雜,那么就算不怎么規(guī)劃,也能夠達(dá)到比較高的性能。如果對象數(shù)據(jù)比較多、比較大的話,那么就需要在數(shù)據(jù)庫設(shè)計(jì)之前好好的規(guī)劃,否則會在很大程度上影響數(shù)據(jù)庫的性能與穩(wěn)定性。 一、選擇合適的語言與數(shù)據(jù)庫字符集。 在企業(yè)中部署數(shù)據(jù)庫的時候,首先需要在操作系統(tǒng)上安裝數(shù)據(jù)庫。而在安裝數(shù)據(jù)庫的時候,需要選擇安裝的語言環(huán)境。即是以中文狀態(tài)下安裝數(shù)據(jù)庫還是以英文狀態(tài)安裝數(shù)據(jù)庫。如在啟動安裝程序的時,可以利用/ilanguage選項(xiàng)來指定安裝過程中所采用的語言。到目前為止,DB2數(shù)據(jù)庫已經(jīng)支持很多種語言。那么數(shù)據(jù)庫在安裝過程中,該采用什么語言呢?筆者建議,只要數(shù)據(jù)庫管理員有一點(diǎn)英語基礎(chǔ),**能夠采用英文語言環(huán)境來進(jìn)行安裝。雖然說現(xiàn)在DB2數(shù)據(jù)庫的中文語言環(huán)境已經(jīng)設(shè)計(jì)的比較完善,但是筆者仍然擔(dān)心其有一些不知名的漏洞。為此筆者在安裝DB2數(shù)據(jù)庫的時候,基本上都采用的是英文語言環(huán)境來進(jìn)行安裝。即將語言設(shè)置為“EN”,表示英文。提高DB2數(shù)據(jù)備份與恢復(fù)的效率。 另外如果DB2數(shù)據(jù)庫中要保存英文以外的數(shù)據(jù),或者說用戶會使用不同的字符集訪問數(shù)據(jù)庫時,還需要在數(shù)據(jù)庫安裝過程中選擇特定的數(shù)據(jù)庫字符集。DB2數(shù)據(jù)庫中的所有字符數(shù)據(jù),包括數(shù)據(jù)字典中的數(shù)據(jù),都是存儲在數(shù)據(jù)庫字符集中的。如果用戶使用不同的字符集訪問數(shù)據(jù)庫時,數(shù)據(jù)庫管理員就需要選擇包含所有這些用戶的字符集的超集。只有如此,才能夠確保系統(tǒng)能夠很方便的使用替代字符完成字符的轉(zhuǎn)換,從而提高數(shù)據(jù)庫的性能。如果用戶選擇的字符集不對,有可能會出現(xiàn)一些莫名其妙的問題。如一次用戶在安裝數(shù)據(jù)庫過程中,沒有選擇合適的字符集。雖然在使用的過程中,其存儲中文字符沒有問題。但是當(dāng)對數(shù)據(jù)庫采取還原操作時,卻發(fā)現(xiàn)還原后的數(shù)據(jù)庫中有些原來是中文字符的地方,盡然出現(xiàn)了亂碼。這主要就是沒有選擇合適的字符集惹的禍。有時候如果字符集選擇不當(dāng)?shù)脑,從外部?shù)據(jù)源(如Excel表格)導(dǎo)入數(shù)據(jù)的時候,中文數(shù)據(jù)也會無法順利導(dǎo)入。所以,數(shù)據(jù)庫管理員在安裝數(shù)據(jù)庫的時候,需要根據(jù)實(shí)際企業(yè),來選擇合適的字符集。 二、評估數(shù)據(jù)庫對象的大小、數(shù)量。 DB2數(shù)據(jù)庫的性能與穩(wěn)定性直接跟數(shù)據(jù)庫對象的多少、大小有關(guān)。如果對象很少,不復(fù)雜,那么就算不怎么規(guī)劃,也能夠達(dá)到比較高的性能。如果對象數(shù)據(jù)比較多、比較大的話,那么就需要在數(shù)據(jù)庫設(shè)計(jì)之前好好的規(guī)劃,否則會在很大程度上影響數(shù)據(jù)庫的性能與穩(wěn)定性。其實(shí)DB2數(shù)據(jù)庫就好像一個倉庫,數(shù)據(jù)庫中的對象(如索引、數(shù)據(jù)表、表空間)等等就好像倉庫中的貨物。如果貨物比較少,那么隨便放放,倉庫都顯得很空曠。貨物尋找起來也會很方便。但是如果貨物數(shù)量比較多、比較大,就必須要對其存儲空間進(jìn)行合理規(guī)劃。只有如此才能夠讓倉庫的空間利用率達(dá)到**狀態(tài)。并且貨物的存放有序,在查找起來也特別的方便。筆者這里就以倉庫管理為例,說話該如何做好數(shù)據(jù)庫對象大小、數(shù)量等方便的評估,以及他們對于數(shù)據(jù)庫性能與穩(wěn)定性的影響。 · · 關(guān)注微信公眾號:挪車小黃碼 · 官方免費(fèi)領(lǐng)取:挪車碼,車主雙方虛擬號碼,隱私保護(hù),拒絕騷擾,違章查詢,免費(fèi)使用!--挪車電話 官網(wǎng):https://www.nuoche.cc/ · · 1、根據(jù)對象大小來規(guī)劃存儲空間。在倉庫貨物的擺放上,要根據(jù)貨物的大小來規(guī)劃存儲空間;蛘哒f要首先防止大的貨物。只有如此空間的利用率才會**。其實(shí)在規(guī)劃DB2對象的時候,也是如此。如某些表可能會包含的記錄比較多,屬于大表。此時數(shù)據(jù)庫管理員就需要考慮,是否將其放置在一個獨(dú)立的表空間或者硬盤空間上,以提高數(shù)據(jù)操作的性能。大表所對應(yīng)的索引往往也是比較大的。為此在硬件條件允許的情況下,將索引表與數(shù)據(jù)表分別存放在不同的硬盤上,可以提高數(shù)據(jù)庫的性能。而對于一些比較小的對象(如數(shù)據(jù)表),可以將它們存放在一個表空間中。其實(shí)這個表空間就好像倉庫中的一個個紙盒子。將小的對象放入到這個“紙盒子”中,不但不占空間,而且也容易管理。 2、根據(jù)對象的使用頻率來規(guī)劃存放空間。在倉庫中擺放物品的時候,往往會把近期就要用到的貨物或者頻繁需要用到的東西放在倉庫門口或者容易拿到的地方。如此在拿這些貨物時就會比較便捷,也不會對其他貨物產(chǎn)生影響。對于DB2數(shù)據(jù)庫中的對象來說,也是這么一回事?梢詫⒛切┰L問量比較大的對象,如索引、數(shù)據(jù)表,存放在性能比較好的硬盤上或者單獨(dú)的硬盤中。此時訪問這些數(shù)據(jù),就不會與其它對象產(chǎn)生I/O沖突,操作起來速度就會比較快。而將不怎么用到的對象,存放在一起。由于他們不怎么被用到,所以即使存放在性能比較低的硬盤上,其對數(shù)據(jù)庫性能產(chǎn)生的負(fù)面影響也是非常有限的。在DB2數(shù)據(jù)庫里面如何更新執(zhí)行計(jì)劃 3、根據(jù)類別來存放數(shù)據(jù)庫對象。在倉庫中存放貨物的時候,還會對其進(jìn)行分類。然后根據(jù)類別來進(jìn)行存放。這有利于貨物的管理與檢索。其實(shí)在數(shù)據(jù)庫對象存儲空間設(shè)計(jì)時,也需要考慮這個因素。如現(xiàn)在應(yīng)用軟件在設(shè)計(jì)的時候,很多都是根據(jù)模塊來設(shè)計(jì)。那么在數(shù)據(jù)庫對象設(shè)計(jì)時,也需要根據(jù)這個模塊來設(shè)計(jì)存儲的空間。如將同一個模塊的數(shù)據(jù)庫對象存放在同一個表空間內(nèi)。不過這可能會跟上面的兩個建立相違背。此時**是在對象的命名上做文章。如可以根據(jù)模塊的不同,分別給數(shù)據(jù)庫對象取一個相同的前綴或者后綴。如即使同一塊模塊要用到多個表空間,此時就可以給表空間一個相同的前綴。如此在管理數(shù)據(jù)庫對象的時候,根據(jù)表空間的前綴就可以判斷其所屬的模塊了。如果再加上一個后綴來表示其數(shù)據(jù)庫對象的分類,那么就更合理了。為此在管理數(shù)據(jù)庫對象的時候,要執(zhí)行分類管理。不僅要從技術(shù)上對其進(jìn)行分類,如分為索引、數(shù)據(jù)表、關(guān)鍵字等等。還需要從功能上進(jìn)行分類,如按應(yīng)用程序的模塊來進(jìn)行分類等等。 三、設(shè)計(jì)好數(shù)據(jù)庫備份與還原的方案。 在數(shù)據(jù)庫交付生產(chǎn)使用之后,往往需要進(jìn)行大量的測試。但是在測試過程中往往又會產(chǎn)生很多的垃圾數(shù)據(jù)。可是交給企業(yè)應(yīng)用的,肯定是一個干凈的數(shù)據(jù)庫系統(tǒng)。為此在數(shù)據(jù)庫設(shè)計(jì)的時候,就需要想好如果減少測試過程中的垃圾數(shù)據(jù);蛘卟扇∈裁礃拥姆绞絹韺(shí)現(xiàn)在交互時自動清除垃圾數(shù)據(jù)的機(jī)制。 一般來說,想要一個數(shù)據(jù)庫備份與還原的方案,減少數(shù)據(jù)庫測試所產(chǎn)生的垃圾數(shù)據(jù)。如現(xiàn)在在給企業(yè)部署數(shù)據(jù)庫的時候,往往是先安裝一個干凈的數(shù)據(jù)庫系統(tǒng)。當(dāng)然字符集這些需要預(yù)先設(shè)置好。然后再利用數(shù)據(jù)庫還原功能將預(yù)先定義好的數(shù)據(jù)庫模型還原出來。 另外有些時候需要兩個方案互為補(bǔ)充。如在數(shù)據(jù)庫初始化的過程中,采用數(shù)據(jù)庫還原的方式來創(chuàng)建數(shù)據(jù)庫對象。但是在應(yīng)用軟件升級的時候,由于此時已經(jīng)有了用戶的數(shù)據(jù),為此不能夠在使用數(shù)據(jù)庫還原的方法。而是通過應(yīng)用程序來執(zhí)行某些SQL代碼,來調(diào)整或者增加部分?jǐn)?shù)據(jù)庫對象。無論采用哪一種方式,需要遵循的一個原則就是在給企業(yè)創(chuàng)建數(shù)據(jù)庫對象時要**限度的減少測試。而要做到這一點(diǎn),就是需要先在測試服務(wù)器上創(chuàng)建對象并測試對象可用。然后直接將相關(guān)的SQL代碼在投入使用的數(shù)據(jù)庫服務(wù)器上執(zhí)行。 |