亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

可以提高數據庫查詢性能的反規范設計

2024-07-21 02:42:46
字體:
來源:轉載
供稿:網友
數據的反規范

◆反規范的好處

是否規范化的程度越高越好?這要根據需要來決定,因為“分離”越深,產生的關系越多,關系過多,連接操作越頻繁,而連接操作是最費時間的,特別對以查詢為主的數據庫應用來說,頻繁的連接會影響查詢速度。所以,關系有時故意保留成非規范化的,或者規范化以后又反規范了,這樣做通常是為了改進性能。例如賬戶系統中的“賬戶”表B-TB01,它的列busi-balance(企業賬戶的總余額)就違反規范,其中的值可以通過下面的查詢獲得:

 

select busi-code,sum(acc-balance)   from B-TB06    group by busi-code

如果B-TB01中沒有該列,若想獲得busi-name(企業名稱)和企業賬戶的總余額,則需要做連接操作:

select busi-name,sum(acc-balance)    from B-TB01,B-TB06    where B-TB01.busi-code=B-TB06.busi-code    group by busi-code

  

如果經常做這種查詢,則就有必要在B-TB01中加入列busi-balance,相應的代價則是必須在表B-TB06上創建增、刪、改的觸發器來維護B-TB01表上busi-balance列的值。類似的情況在決策支持系統中經常發生。  

反規范的好處是降低連接操作的需求、降低外碼和索引的數目,還可能減少表的數目,相應帶來的問題是可能出現數據的完整性問題。加快查詢速度,但會降低修改速度。因此決定做反規范時,一定要權衡利弊,仔細分析應用的數據存取需求和實際的性能特點,好的索引和其它方法經常能夠解決性能問題,而不必采用反規范這種方法?! ?

◆常用的反規范技術

在進行反規范操作之前,要充分考慮數據的存取需求、常用表的大小、一些特殊的計算(例如合計)、數據的物理存儲位置等。常用的反規范技術有增加冗余列、增加派生列、重新組表和分割表。

◆增加冗余列

增加冗余列是指在多個表中具有相同的列,它常用來在查詢時避免連接操作。例如前面例子中,如果經常檢索一門課的任課教師姓名,則需要做class和teacher表的連接查詢:

select class-name,teacher-name    from class,teacher    where class.teacher-no=teacher.teacher-no

  

這樣的話就可以在class表中增加一列teacher-name就不需要連接操作了。

增加冗余列可以在查詢時避免連接操作,但它需要更多的磁盤空間,同時增加表維護的工作量。

◆增加派生列

增加派生列指增加的列來自其它表中的數據,由它們計算生成。它的作用是在查詢時減少連接操作,避免使用集函數。例如前面所講的賬戶系統中的表B-TB01的列busi-balance就是派生列。派生列也具有與冗余列同樣的缺點。

◆重新組表

重新組表指如果許多用戶需要查看兩個表連接出來的結果數據,則把這兩個表重新組成一個表來減少連接而提高性能。例如,用戶經常需要同時查看課程號,課程名稱,任課教師號,任課教師姓名,則可把表class(class-no,class-name,teacher-no)和表teacher(teacher-no,teacher-name)合并成一個表class(class-no,class-name,teacher-no,teacher-name)。這樣可提高性能,但需要更多的磁盤空間,同時也損失了數據在概念上的獨立性?! ?

◆分割表

有時對表做分割可以提高性能。表分割有兩種方式: 

1水平分割:根據一列或多列數據的值把數據行放到兩個獨立的表中。

水平分割通常在下面的情況下使用:A 表很大,分割后可以降低在查詢時需要讀的數據和索引的頁數,同時也降低了索引的層數,提高查詢速度。B 表中的數據本來就有獨立性,例如表中分別記錄各個地區的數據或不同時期的數據,特別是有些數據常用,而另外一些數據不常用。C需要把數據存放到多個介質上。

例如法規表law就可以分成兩個表active-law和inactive-law。activea-authors表中的內容是正生效的法規,是經常使用的,而inactive-law表則使已經作廢的法規,不常被查詢。水平分割會給應用增加復雜度,它通常在查詢時需要多個表名,查詢所有數據需要union操作。在許多數據庫應用中,這種復雜性會超過它帶來的優點,因為只要索引關鍵字不大,則在索引用于查詢時,表中增加兩到三倍數據量,查詢時也就增加讀一個索引層的磁盤次數。

2垂直分割:把主碼和一些列放到一個表,然后把主碼和另外的列放到另一個表中。如果一個表中某些列常用,而另外一些列不常用,則可以采用垂直分割,另外垂直分割可以使得數據行變小,一個數據頁就能存放更多的數據,在查詢時就會減少I/O次數。其缺點是需要管理冗余列,查詢所有數據需要join操作?! ?

反規范技術需要維護數據的完整性

無論使用何種反規范技術,都需要一定的管理來維護數據的完整性,常用的方法是批處理維護、應用邏輯和觸發器。批處理維護是指對復制列或派生列的修改積累一定的時間后,運行一批處理作業或存儲過程對復制或派生列進行修改,這只能在對實時性要求不高的情況下使用。數據的完整性也可由應用邏輯來實現,這就要求必須在同一事務中對所有涉及的表進行增、刪、改操作。用應用邏輯來實現數據的完整性風險較大,因為同一邏輯必須在所有的應用中使用和維護,容易遺漏,特別是在需求變化時,不易于維護。另一種方式就是使用觸發器,對數據的任何修改立即觸發對復制列或派生列的相應修改。觸發器是實時的,而且相應的處理邏輯只在一個地方出現,易于維護。一般來說,是解決這類問題的最好的辦法?! ?

結束語

數據庫的反規范設計可以提高查詢性能。常用的反規范技術有增加冗余列、增加派生列、重新組表和分割表。但反規范技術需要維護數據的完整性。因此在做反規范時,一定要權衡利弊,仔細分析應用的數據存取需求和實際的性能特點。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人91久久精品| 成人国产精品久久久久久亚洲| 色777狠狠综合秋免鲁丝| 精品国内自产拍在线观看| 久久综合88中文色鬼| 国产精品高潮呻吟久久av野狼| 欧美在线观看日本一区| 日韩风俗一区 二区| 日韩欧美一区二区在线| 国产精品极品美女粉嫩高清在线| 日韩久久精品成人| 国产精品免费网站| 亚洲自拍高清视频网站| 欧美一级淫片丝袜脚交| 日韩精品视频在线免费观看| 91精品国产九九九久久久亚洲| 色狠狠av一区二区三区香蕉蜜桃| 久久久久久久91| 青青a在线精品免费观看| 日韩在线中文字幕| 国产精品视频在线播放| 亚洲香蕉成人av网站在线观看| 亚洲毛片在线观看.| 中文字幕日韩有码| 久久精品这里热有精品| 丝袜一区二区三区| 亚洲wwwav| 国产精品偷伦免费视频观看的| 正在播放亚洲1区| 欧美国产欧美亚洲国产日韩mv天天看完整| 亚洲片av在线| 久久影院模特热| 奇门遁甲1982国语版免费观看高清| 亚洲老头同性xxxxx| 国产婷婷色综合av蜜臀av| 国产精品久久久久久久久久久不卡| 色偷偷av一区二区三区| 久久av中文字幕| 97精品视频在线| 国产成人啪精品视频免费网| 欧美黑人一区二区三区| 欧美日韩综合视频| 国产日韩换脸av一区在线观看| 亚洲日本中文字幕| 欧美高清在线视频观看不卡| 国产成人福利网站| 欧美激情亚洲激情| 视频一区视频二区国产精品| 亚洲综合在线做性| 国产精品第10页| 亚洲三级黄色在线观看| 国产不卡一区二区在线播放| 欧美成人午夜免费视在线看片| 久久久久久久爱| 亚洲一区二区在线播放| 九九热这里只有精品免费看| 91社影院在线观看| 亚洲精品视频网上网址在线观看| 久久这里只有精品视频首页| 久久精品夜夜夜夜夜久久| 日韩成人免费视频| 欧美国产亚洲视频| 亚洲第一福利在线观看| 精品国产一区二区三区久久久| 青青草成人在线| 这里只有精品视频| 亚洲色图激情小说| 蜜臀久久99精品久久久无需会员| 麻豆一区二区在线观看| 日韩福利在线播放| 久久久久久亚洲精品不卡| 欧美日韩成人在线播放| 亚洲欧美激情一区| 亚洲天堂精品在线| 国产精品电影观看| 91av免费观看91av精品在线| 91精品综合久久久久久五月天| 亚洲综合精品一区二区| 中文字幕亚洲欧美日韩2019| 日韩高清有码在线| 欧美精品videos性欧美| 欧美猛少妇色xxxxx| 97视频在线观看播放| 丝袜美腿亚洲一区二区| 亚洲国产日韩欧美综合久久| 亚洲国产精品悠悠久久琪琪| 欧美性高潮床叫视频| 中文字幕精品—区二区| 爱福利视频一区| 日本久久久久久久久| 久久久国产一区| 亚洲成人av中文字幕| 亚洲一区久久久| 久久亚洲欧美日韩精品专区| 黄色成人av网| 亚洲男人天堂视频| 亚洲白虎美女被爆操| 日韩av片电影专区| 久久久久久九九九| 日韩电影中文 亚洲精品乱码| 亚洲人成啪啪网站| 国产亚洲精品久久久久动| 亚洲福利在线观看| 国产精品美女在线| 俺去啦;欧美日韩| 国产精品永久免费在线| 国产精品综合不卡av| 欧美黑人巨大精品一区二区| 欧美巨大黑人极品精男| 欧美精品videossex88| 欧美床上激情在线观看| 成人黄色在线免费| 久久久久亚洲精品| 91极品女神在线| 正在播放国产一区| 亚洲午夜久久久影院| 成人欧美一区二区三区黑人| 18性欧美xxxⅹ性满足| 欧美高清一级大片| 精品中文字幕在线2019| 亚洲自拍高清视频网站| 欧美老女人bb| 久久国产精品视频| 91高清在线免费观看| 日韩免费观看在线观看| 日韩精品在线观看一区| 久久精品美女视频网站| 懂色aⅴ精品一区二区三区蜜月| 国产精品露脸自拍| 欧美与欧洲交xxxx免费观看| 日韩视频一区在线| 中文国产成人精品久久一| 欧美性猛交xxxx久久久| 国产精品专区h在线观看| 欧美极品少妇xxxxⅹ喷水| 亚洲国产精品久久91精品| 亚洲精品v欧美精品v日韩精品| 欧美日韩精品国产| 欧美另类在线播放| 成人黄色免费看| 国产成人综合av| 欧美激情久久久| 亚洲第一页在线| 国产精品69久久久久| 久久天堂电影网| 欧美成人精品一区二区三区| 欧美精品在线第一页| 欧美日韩爱爱视频| 亚洲色图激情小说| 国产偷国产偷亚洲清高网站| 这里只有精品在线观看| 日本中文字幕不卡免费| 日韩免费高清在线观看| 精品国产美女在线| 日韩专区在线播放| 97香蕉久久超级碰碰高清版| 久久久999精品免费| 欧美激情一区二区三区高清视频| 精品国产乱码久久久久酒店| 久久精品视频在线观看| 国产精品小说在线| 日本中文字幕不卡免费| 久久成人精品电影| 欧美国产日产韩国视频|