數(shù)據(jù)庫開發(fā)常識
?
1 ? ? ? 命名規(guī)范
不同的數(shù)據(jù)庫產(chǎn)品對對象的命名有不同的要求,因此,數(shù)據(jù)庫中的各種對象的命名、后臺程序的代碼編寫應采用大小寫敏感的形式,所有的命名受到oracle命名長度18個字符的約束限制,這樣便于應用系統(tǒng)適應不同的數(shù)據(jù)庫。
2 ? ? ? ?游標
游標提供了對特定集合中逐行掃描的手段,一般使用游標逐行遍歷數(shù)據(jù),根據(jù)取出的數(shù)據(jù)不同條件進行不同的操作。尤其對多表和大表定義的游標(大的數(shù)據(jù)集合)循環(huán)很容易使程序進入一個漫長的等特甚至死機。
在有些場合,有時也非得使用游標,此時也可考慮將符合條件的數(shù)據(jù)行轉(zhuǎn)入臨時表中,再對臨時表定義游標進行操作,可時性能得到明顯提高。
3 ? ? ? ? 索引使用
創(chuàng)建索引一般有以下兩個目的:維護被索引列的唯一性和提供快速訪問表中數(shù)據(jù)的策略。大型數(shù)據(jù)庫有兩種索引即簇索引和非簇索引,一個沒有簇索引的表是按堆結(jié)構(gòu)存儲數(shù)據(jù),所有的數(shù)據(jù)均添加在表的尾部,而建立了簇索引的表,其數(shù)據(jù)在物理上會按照簇索引鍵的順序存儲,一個表只允許有一個簇索引,因此,根據(jù)B樹結(jié)構(gòu),可以理解添加任何一種索引均能提高按索引列查詢的速度,但會降低插入、更新、刪除操作的性能,尤其是當填充因子(Fill Factor)較大時。所以對索引較多的表進行頻繁的插入、更新、刪除操作,建表和索引時因設(shè)置較小的填充因子,以便在各數(shù)據(jù)頁中留下較多的自由空間,減少頁分割及重新組織的工作。
為了保證數(shù)據(jù)庫的一致性和完整性,設(shè)計人員往往會設(shè)計過多的表間關(guān)聯(lián)(Relation),盡可能的降低數(shù)據(jù)的冗余。表間關(guān)聯(lián)是一種強制性措施,建立后,對父表(Parent Table)和子表(Child Table)的插入、更新、刪除操作均要占用系統(tǒng)的開銷,另外,最好不要用Identify 屬性字段作為主鍵與子表關(guān)聯(lián)。如果數(shù)據(jù)冗余低,數(shù)據(jù)的完整性容易得到保證,但增加了表間連接查詢的操作,為了提高系統(tǒng)的響應時間,合理的數(shù)據(jù)冗余也是必要的。使用規(guī)則(Rule)和約束(Check)來防止系統(tǒng)操作人員誤輸入造成數(shù)據(jù)的錯誤是設(shè)計人員的另一種常用手段,但是,不必要的規(guī)則和約束也會占用系統(tǒng)的不必要開銷,需要注意的是,約束對數(shù)據(jù)的有效性驗證要比規(guī)則快。
在計算機硬件配置和網(wǎng)絡(luò)設(shè)計確定的情況下,影響到應用系統(tǒng)性能的因素不外乎為數(shù)據(jù)庫性能和客戶端程序設(shè)計。而大多數(shù)數(shù)據(jù)庫設(shè)計員采用兩步法進行數(shù)據(jù)庫設(shè)計:首先進行邏輯設(shè)計,而后進行物理設(shè)計。數(shù)據(jù)庫邏輯設(shè)計去除了所有冗余數(shù)據(jù),提高了數(shù)據(jù)吞吐速度,保證了數(shù)據(jù)的完整性,清楚地表達數(shù)據(jù)元素之間的關(guān)系。而對于多表之間的關(guān)聯(lián)查詢(尤其是大數(shù)據(jù)表)時,其性能將會降低,同時也提高了客戶端程序的編程難度,因此,物理設(shè)計需折衷考慮,根據(jù)業(yè)務(wù)規(guī)則,確定對關(guān)聯(lián)表的數(shù)據(jù)量大小、數(shù)據(jù)項的訪問頻度,對此類數(shù)據(jù)表頻繁的關(guān)聯(lián)查詢應適當提高數(shù)據(jù)冗余設(shè)計。
Identify字段不要作為表的主鍵與其它表關(guān)聯(lián),這將會影響到該表的數(shù)據(jù)遷移。
Text 和Image字段屬指針型數(shù)據(jù),主要用來存放二進制大型對象(BLOB)。這類數(shù)據(jù)的操作相比其它數(shù)據(jù)類型較慢,因此要避開使用。
日期型字段的優(yōu)點是有眾多的日期函數(shù)支持,因此,在日期的大小比較、加減操作上非常簡單。但是,在按照日期作為條件的查詢操作也要用函數(shù),相比其它數(shù)據(jù)類型速度上就慢許多,因為用函數(shù)作為查詢的條件時,服務(wù)器無法用先進的性能策略來優(yōu)化查詢而只能進行表掃描遍歷每行。
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
