欧美麻豆久久久久久中文_成年免费观看_男人天堂亚洲成人_中国一级片_动漫黄网站免费永久在线观看_国产精品自产av一区二区三区

中培偉業IT資訊頻道
您現在的位置:首頁 > IT資訊 > 數據庫 > Oracle數據庫設計提升性能的五大原則

Oracle數據庫設計提升性能的五大原則

2016-07-26 20:45:20 | 來源:中培企業IT培訓網

眾所周知,數據庫設計的好壞直接關系到數據庫運行的效率。中培偉業《Oracle數據庫管理與性能調優》課程培訓專家賈老師指出,對于提升數據庫性能來說,合理的數據庫設計,比升級服務器的硬件配置,還要來的有效。但是,賈老師無論是在跟同事合作,又或者是在論壇上跟相關同行交流的時候,總是會發現有些人有一些不好的數據庫設計習慣,影響了數據庫的性能,增加了數據庫管理員的工作量。

賈老師認為,為了提升數據庫的性能,在Oracle數據庫設計的時候,應該遵循以下五大原則。

  一:在小型表上不要建立索引

毋庸置疑,索引可以提高數據庫查詢的效率。但是,俗話說,過之則不及。索引也必須用在合時的地方。如果索引設置不當,不但不會提升數據庫的性能,反而會起到相反的作用。如在小型數據庫上設置索引,而且這些表用戶更改的比較頻繁。如員工基本信息表,就是簡單的不超過十個字段。這個表用戶需要經常的進行插入與刪除操作。當進行這些變更作業的時候,需要對索引進行維護。而這個維護的工作量可能比掃描表空間消耗更多的存儲空間。從而不但起步到改善數據庫性能的作用,反而是在拖后腿。

所以,在數據庫設計的時候,要做到的第一個戒條就是,不要再用戶經常更改的小型表上建立索引。否則的話,是得不償失的。

  二:不要用用戶的鍵

如我們在設計一個ERP系統數據庫的時候,有一張銷售訂單表。在這張表中,有一個銷售訂單號。那么我們能否利用這個單號作為關聯其他表的外鍵呢?如在銷售出貨單上,需要關聯到銷售訂單。這個時候,我們能否把銷售訂單單號作為跟出貨單關聯的關鍵字呢?

答案是可以的,但是不是最優選擇。我們可以看一下ERP的后臺數據庫。在銷售訂單表上,除了銷售訂單號這個唯一表示銷售訂單紀錄的字段外,還有一個字段就是銷售訂單ID。在前臺的出貨單界面上雖然顯示的是銷售訂單號碼,但是,在后臺卻存儲著的是銷售訂單ID。也就是說,數據庫不是以用戶的鍵作為主鍵,而是采用了數據庫自動維護的單據ID這個字段。

為什么要這么設計呢?這就是賈老師今天要談的第二個戒條,不要用用戶的鍵。通常情況下,不要選擇用戶可編輯的字段作為外鍵或者主鍵。因為這會增加我們額外的工作量。

如果我們把銷售訂單號作為外鍵的話,則在創建銷售訂單紀錄后還要對用戶編輯字段的行為施加限制,如判斷是否違反外鍵的強制性規則等等。有些系統把銷售訂單號設置為外鍵的話,則往往是把這個字段設置為系統自動編號,并且用戶不可更改。可是,在實際工作中,企業員工往往需要編輯這個字段。員工需要編輯這些不可編輯的字段時系統缺乏靈活性的缺陷就體現出來了。而且,當用戶輸入完數據保存的時候再提示紀錄不符合要求,則也不是很人性化的設計。

另外,我們還必須為此設計一些檢測和糾正鍵沖突的方法。如考慮這個外鍵的直是否在其他數據表中存在等等。雖然這通常只需要我們花點時間就可以搞定。但是從數據庫性能上來說,這個代價就比較大了。再則,如此的話,就不能夠很好的把系統的基本數據跟企業員工的數據實現很好的隔離。

  三:不要用商務規則來實現數據的完整性

數據的完整性有好幾種實現方法。如可以通過數據庫約束實現數據完整性;也可以通過前臺系統的商務規則來實現數據的完整性。不過,賈老師這里要建議的是,在一些大型的數據庫中,不要試圖通過商務規則來實現數據的完整性,而盡可能的通過數據庫的約束來實現。因為若通過商務規則來實現完整性,往往會出現一些莫名其妙的錯誤。

  四:在可能的情況下,不要讓前臺應用程序直接訪問數據表

其實,在數據庫基礎表與前臺應用程序之間,還有一個很好的“中間人”,那就是視圖。試圖是數據庫基礎表的一個抽象。他除了可以保障數據的質量外,還可以有效的訪問前臺應用程序對于數據的非法訪問。所以,一些安全性級別比較高的數據庫系統,在數據庫設計的時候,往往會在數據庫和前臺應用程序代碼之間提供“視圖”這個中間人,讓其作為基礎表的“新聞發言人”。如此,前臺應用程序在沒有必要的情況下,可以不直接訪問數據表,而是通過視圖來對表實現間接的訪問。

如在進行數據導入程序設計的時候,通過視圖來實現則是一個很理想的方法。如用戶現在要導入產品信息,包括產品基本信息、供應商信息、價格信息等等。這些信息在數據庫中往往包含在三種表中,分別為產品基本信息表、供應商信息表、產品價格信息表。若前臺應用程序直接訪問基礎表的話,就需要分別訪問這三張基礎表。這不但效率比較低,而且也不容易實現數據的完整性。此時,我們就可以利用視圖,把一些必須要填入的字段組合在一張可更新視圖中。如此,前臺應用程序只需要訪問一個數據庫對象即可。

再者,在數據庫報表設計上,更是要通過視圖來實現。而不要通過傳遞一段SQL代碼來查詢基礎表。這對于數據的安全性會帶來比較大的威脅。

所以,第四條法則就是,在可能的情況下,不要讓前臺應用程序直接訪問數據表。

  五:不要一直讓用戶輸入數據

有些字段其實不一定要讓用戶輸入,只需要用戶選擇即可。如在人事管理系統中,企業員工所屬的民族、職位、省份等等就沒有必要讓用戶手工輸入。而可以通過列表的形式讓員工來進行選擇。這種手段,是提高數據完整性的最佳方式之一。若能夠給用戶提供一個詳細的列表供其選擇,這樣將減少鍵入代碼的錯誤,同時提高數據庫的一致性;也可以提高用戶界面的友好性。

所以,在數據庫設計的時候,盡量使用列表字段來供用戶選擇。若連省份等等字段都要用戶手工輸入的話,則我們在數據庫完整性所花費的時間,就要很多。如在數據保存的時候,都要去判斷用戶輸入的數據是否合乎完整性的規則。這顯然工作量要比設計一個列表字段多得多。

故數據庫設計的第五條法則就是不要老是讓用戶手工輸入數據。提供列表讓用戶進行選擇,用戶不僅可以提高效率,我們也可以省事,同時,也能夠保障數據的準確率。

標簽: Oracle
主站蜘蛛池模板: 玩丰满女领导对白露脸视频 | 亚洲午夜精品A片一区二区三区 | 国产女厕偷窥系列在线视频 | 无码精品不卡一区二区三区 | 精品国产一区二区三区四区五区 | 中文字幕乱码亚洲影视 | 精品久久无码中文字幕 | 亚洲欧美中文字幕日韩一区二区 | 2017最新高清无码网站 | 中文字幕けのぁ一般男女 | 亚欧中文字幕 | 欧洲亚洲精品视频 | 久久免费看少妇高潮a片特黄 | 97久久超碰精品视觉盛宴 | 邻居少妇人妻互换 | 无码中文字幕免费一区二区三区 | 国无码精品一区二区三区在线蜜臀 | 无码性按摩AV在线观看 | 巨波霸乳在线永久免费视频 | 不卡的av网站在线观看 | 国产在线观看av黑料在线不打烊 | 老头玩小嫩奶陈晴晴老刘 | 亚洲AV成人无码网站天堂网久久 | 玩偶姐姐免费观看 | 欧美人与动牲交视频在线观看 | 欧美阿v不卡资源在线 | 久久国产精品亚洲婷婷a片 深夜福利备好纸巾18禁止 | 尤物国精品午夜福利视频 | 中文字幕久久精品无码 | 国产粗话肉麻对白在线播放 | 欧美深性狂猛ⅹxxx深喉 | 亚洲精品国产成人AV | 亚洲亚洲人成网站网址 | 天天噜日日噜狠狠噜免费 | 天天躁夜夜躁狠狠久久 | 欧美熟妇另类久久久久久多毛 | 人妻系列无码专区AV在线 | 国产精品爽黄69天堂a | 2021亚洲卡一卡二新区入口 | 亚洲伊人久久大香线蕉AV | 秋霞午夜无码鲁丝片午夜精品 |