麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > 綜合 > 正文

大數據量高并發訪問數據庫結構的設計

2024-07-21 02:52:03
字體:
來源:轉載
供稿:網友
如果不能設計一個合理的數據庫模型,不僅會增加客戶端和服務器段程序的編程和維護的難度,而且將會影響系統實際運行的性能。所以,在一個系統開始實施之前,完備的數據庫模型的設計是必須的。    在一個系統分析、設計階段,因為數據量較小,負荷較低。我們往往只注意到功能的實現,而很難注意到性能的薄弱之處,等到系統投入實際運行一段時間后,才發現系統的性能在降低,這時再來考慮提高系統性能則要花費更多的人力物力,而整個系統也不可避免的形成了一個打補丁工程。    所以在考慮整個系統的流程的時候,我們必須要考慮,在高并發大數據量的訪問情況下,我們的系統會不會出現極端的情況。(例如:對外統計系統在7月16日出現的數據異常的情況,并發大數據量的的訪問造成,數據庫的響應時間不能跟上數據刷新的速度造成。具體情況是:在日期臨界時(00:00:00),判斷數據庫中是否有當前日期的記錄,沒有則插入一條當前日期的記錄。在低并發訪問的情況下,不會發生問題,但是當日期臨界時的訪問量相當大的時候,在做這一判斷的時候,會出現多次條件成立,則數據庫里會被插入多條當前日期的記錄,從而造成數據錯誤。),數據庫的模型確定下來之后,我們有必要做一個系統內數據流向圖,分析可能出現的瓶頸。    為了保證數據庫的一致性和完整性,在邏輯設計的時候往往會設計過多的表間關聯,盡可能的降低數據的冗余。(例如用戶表的地區,我們可以把地區另外存放到一個地區表中)如果數據冗余低,數據的完整性容易得到保證,提高了數據吞吐速度,保證了數據的完整性,清楚地表達數據元素之間的關系。而對于多表之間的關聯查詢(尤其是大數據表)時,其性能將會降低,同時也提高了客戶端程序的編程難度,因此,物理設計需折衷考慮,根據業務規則,確定對關聯表的數據量大小、數據項的訪問頻度,對此類數據表頻繁的關聯查詢應適當提高數據冗余設計但增加了表間連接查詢的操作,也使得程序的變得復雜,為了提高系統的響應時間,合理的數據冗余也是必要的。設計人員在設計階段應根據系統操作的類型、頻度加以均衡考慮。   另外,最好不要用自增屬性字段作為主鍵與子表關聯。不便于系統的遷移和數據恢復。對外統計系統映射關系丟失(******************)。    原來的表格必須可以通過由它分離出去的表格重新構建。使用這個規定的好處是,你可以確保不會在分離的表格中引入多余的列,所有你創建的表格結構都與它們的實際需要一樣大。應用這條規定是一個好習慣,不過除非你要處理一個非常大型的數據,否則你將不需要用到它。(例如一個通行證系統,我可以將USERID,USERNAME,USERPASSWord,單獨出來作個表,再把USERID作為其他表的外鍵)表的設計具體注意的問題:1、數據行的長度不要超過8020字節,如果超過這個長度的話在物理頁中這條數據會占用兩行從而造成存儲碎片,降低查詢效率。2、能夠用數字類型的字段盡量選擇數字類型而不用字符串類型的(電話號碼),這會降低查詢和連接的性能,并會增加存儲開銷。這是因為引擎在處理查詢和連接回逐個比較字符串中每一個字符,而對于數字型而言只需要比較一次就夠了。3、對于不可變字符類型char和可變字符類型varchar 都是8000字節,char查詢快,但是耗存儲空間,varchar查詢相對慢一些但是節省存儲空間。在設計字段的時候可以靈活選擇,例如用戶名、密碼等長度變化不大的字段可以選擇CHAR,對于評論等長度變化大的字段可以選擇VARCHAR。

4、字段的長度在最大限度的滿足可能的需要的前提下,應該盡可能的設得短一些,這樣可以提高查詢的效率,而且在建立索引的時候也可以減少資源的消耗。

5、基本表及其字段之間的關系, 應盡量滿足第三范式。但是,滿足第三范式的數據庫設計,往往不是最好的設計。為了提高數據庫的運行效率,常常需要降低范式標準:適當增加冗余,達到以空間換時間的目的。

6、若兩個實體之間存在多對多的關系,則應消除這種關系。消除的辦法是,在兩者之間增加第三個實體。這樣,原來一個多對多的關系,現在變為兩個一對多的關系。要將原來兩個實體的屬性合理地分配到三個實體中去。這里的第三個實體,實質上是一個較復雜的關系,它對應一張基本表。一般來講,數據庫設計工具不能識別多對多的關系,但能處理多對多的關系。

7、主鍵PK的取值方法,PK是供程序員使用的表間連接工具,可以是一無物理意義的數字串, 由程序自動加1來實現。也可以是有物理意義的字段名或字段名的組合。不過前者比后者好。當PK是字段名的組合時,建議字段的個數不要太多,多了不但索引占用空間大,而且速度也慢。

8、主鍵與外鍵在多表中的重復出現, 不屬于數據冗余,這個概念必須清楚,事實上有許多人還不清楚。非鍵字段的重復出現, 才是數據冗余!而且是一種低級冗余,即重復性的冗余。高級冗余不是字段的重復出現,而是字段的派生出現。

  〖例4〗:商品中的“單價、數量、金額”三個字段,“金額”就是由“單價”乘以“數量”派生出來的,它就是冗余,而且是一種高級冗余。冗余的目的是為了提高處理速度。只有低級冗余才會增加數據的不一致性,因為同一數據,可能從不同時間、地點、角色上多次錄入。因此,我們提倡高級冗余(派

生性冗余),反對低級冗余(重復性冗余)。

9、中間表是存放統計數據的表,它是為數據倉庫、輸出報表或查詢結果而設計的,有時它沒有主鍵與外鍵(數據倉庫除外)。臨時表是程序員個人設計的,存放臨時記錄,為個人所用。基表和中間表由DBA維護,臨時表由程序員自己用程序自動維護。

10、防止數據庫設計打補丁的方法是“三少原則”

   (1) 一個數據庫中表的個數越少越好。只有表的個數少了,才能說明系統的E--R圖少而精,去掉了重復的多余的實體,形成了對客觀世界的高度抽象,進行了系統的數據集成,防止了打補丁式的設計;

   (2) 一個表中組合主鍵的字段個數越少越好。因為主鍵的作用,一是建主鍵索引,二是做為子表的外鍵,所以組合主鍵的字段個數少了,不僅節省了運行時間,而且節省了索引存儲空間;

   (3) 一個表中的字段個數越少越好。只有字段的個數少了,才能說明在系統中不存在數據重復,且很少有數據冗余,更重要的是督促讀者學會“列變行”,這樣就防止了將子表中的字段拉入到主表中去,在主表中留下許多空余的字段。所謂“列變行”,就是將主表中的一部分內容拉出去,另外單獨建一個子表。這個方法很簡單,有的人就是不習慣、不采納、不執行。

  數據庫設計的實用原則是:在數據冗余和處理速度之間找到合適的平衡點。“三少”是一個整體概念,綜合觀點,不能孤立某一個原則。該原則是相對的,不是絕對的。“三多”原則肯定是錯誤的。試想:若覆蓋系統同樣的功能,一百個實體(共一千個屬性) 的E--R圖,肯定比二百個實體(共二千個屬性)的E--R圖,要好得多。

  提倡“三少”原則,是叫讀者學會利用數據庫設計技術進行系統的數據集成。數據集成的步驟是將文件系統集成為應用數據庫,將應用數據庫集成為主題數據庫,將主題數據庫集成為全局綜合數據庫。集成的程度越高,數據共享性就越強,信息孤島現象就越少,整個企業信息系統的全局E—R圖中實體的個數、主鍵的個數、屬性的個數就會越少。

  提倡“三少”原則的目的,是防止讀者利用打補丁技術,不斷地對數據庫進行增刪改,使企業數據庫變成了隨意設計數據庫表的“垃圾堆”,或數據庫表的“大雜院”,最后造成數據庫中的基本表、代碼表、中間表、臨時表雜亂無章,不計其數,導致企事業單位的信息系統無法維護而癱瘓。

   “三多”原則任何人都可以做到,該原則是“打補丁方法”設計數據庫的歪理學說。“三少”原則是少而精的原則,它要求有較高的數據庫設計技巧與藝術,不是任何人都能做到的,因為該原則是杜絕用“打補丁方法”設計數據庫的理論依據。

11、在給定的系統硬件和系統軟件條件下,提高數據庫系統的運行效率的辦法是:

   (1) 在數據庫物理設計時,降低范式,增加冗余, 少用觸發器, 多用存儲過程。   (2) 當計算非常復雜、而且記錄條數非常巨大時(例如一千萬條),復雜計算要先在數據庫外面,以文件系統方式用編程語言計算處理完成之后,最后才入庫追加到表中去。

   (3) 發現某個表的記錄太多,例如超過一千萬條,則要對該表進行水平分割。水平分割的做法是,以該表主鍵PK的某個值為界線,將該表的記錄水平分割為兩個表。若發現某個表的字段太多,例如超過八十個,則垂直分割該表,將原來的一個表分解為兩個表。

   (4) 對數據庫管理系統DBMS進行系統優化,即優化各種系統參數,如緩沖區個數。   (5) 在使用面向數據的SQL語言進行程序設計時,盡量采取優化算法。  總之,要提高數據庫的運行效率,必須從數據庫系統級優化、數據庫設計級優化、程序實現級優化,這三個層次上同時下功夫。

主鍵設計:1、不建議用多個字段做主鍵,單個表還可以,但是關聯關系就會有問題,主鍵自增是高性能的。

2、一般情況下,如果有兩個外鍵,不建議采用兩個外鍵作為聯合住建,另建一個字段作為主鍵。除非這條記錄沒有邏輯刪除標志,且該表永遠只有一條此聯合主鍵的記錄。

3、一般而言,一個實體不能既無主鍵又無外鍵。在E—R 圖中, 處于葉子部位的實體, 可以定義主鍵,也可以不定義主鍵(因為它無子孫), 但必須要有外鍵(因為它有父親)。主鍵與外鍵的設計,在全局數據庫的設計中,占有重要地位。當全局數據庫的設計完成以后,有個美國數據庫設計專家說:“鍵,到處都是鍵,除了鍵之外,什么也沒有”,這就是他的數據庫設計經驗之談,也反映了他對信息系統核心(數據模型)的高度抽象思想。因為:主鍵是實體的高度抽象,主鍵與、外鍵的配對,表示實體之間的連接。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久精品国产99久久久古代 | 日日噜噜噜噜久久久精品毛片 | 免费观看一区二区三区视频 | 日本xxxx色视频在线观看免费, | 国产91精品欧美 | 日本一区视频在线观看 | 国产一级一级片 | wwwxxx视频| 日韩精品dvd| 免费一级欧美大片视频在线 | 中文字幕在线观看免费视频 | 亚洲免费视频一区 | 免费在线观看成人av | 免费在线观看成人av | 免费国产一级特黄久久 | 午夜小影院 | 国产乱淫av | 精品国产一区二区三区久久久蜜月 | 国产毛片在线高清视频 | 玩偶姐姐在线观看免费 | 欧美高清第一页 | 国产成人av免费 | 国产91在线免费 | 久久久久久久久久91 | 欧美性生活久久久 | 免费在线观看中文字幕 | 成人毛片100部| 成人免费电影在线观看 | 一级黄色在线观看 | 国产精品99久久久久久宅女 | 日本欧美一区二区三区在线播 | 91精品久久久久久 | 欧美一级黄色录像片 | 久久久久久久久久久一区 | 欧美一级一区二区三区 | 精品不卡| 欧美自拍 | 久久中文字幕在线观看 | 羞羞羞羞视频 | 久久久久久久一区二区 | 国产精品入口夜色视频大尺度 |