亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網絡,我們將竭誠為您提供優質的服務! 誠征網絡推廣 | 網站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業務咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當前位置:首頁 >> 技術文章 >> 文章瀏覽
技術文章

SQL Server數據庫性能優化技術

添加時間:2013-10-21 17:24:54  添加: 思海網絡 

    設計1個應用系統似乎并不難,但是要想使系統達到最優化的性能并不是一件容易的事。在開發工具、數據庫設計、應用程序的結構、查詢設計、接口選擇等方面有多種選擇,這取決于特定的應用需求以及開發隊伍的技能。本文以SQL Server為例,從后臺數據庫的角度討論應用程序性能優化技巧,并且給出了一些有益的建議。
  
  1 數據庫設計
    要在良好的SQL Server方案中實現最優的性能,最關鍵的是要有1個很好的數據庫設計方案。在實際工作中,許多SQL Server方案往往是由于數據庫設計得不好導致性能很差。所以,要實現良好的數據庫設計就必須考慮這些問題。
  1.1 邏輯庫規范化問題
    一般來說,邏輯數據庫設計會滿足規范化的前3級標準:
    1.第1規范:沒有重復的組或多值的列。
    2.第2規范:每個非關鍵字段必須依賴于主關鍵字,不能依賴于1個組合式主關鍵字的某些組成部分。
    3.第3規范:1個非關鍵字段不能依賴于另1個非關鍵字段。
    遵守這些規則的設計會產生較少的列和更多的表,因而也就減少了數據冗余,也減少了用于存儲數據的頁。但表關系也許需要通過復雜的合并來處理,這樣會降低系統的性能。某種程度上的非規范化可以改善系統的性能,非規范化過程可以根據性能方面不同的考慮用多種不同的方法進行,但以下方法經實踐驗證往往能提高性能。
    1.如果規范化設計產生了許多4路或更多路合并關系,就可以考慮在數據庫實體(表)中加入重復屬性(列)。
    2.常用的計算字段(如總計、最大值等)可以考慮存儲到數據庫實體中。
    比如某一個項目的計劃管理系統中有計劃表,其字段為:項目編號、年初計劃、二次計劃、調整計劃、補列計劃…,而計劃總數(年初計劃+二次計劃+調整計劃+補列計劃)是用戶經常需要在查詢和報表中用到的,在表的記錄量很大時,有必要把計劃總數作為1個獨立的字段加入到表中。這里可以采用觸發器以在客戶端保持數據的一致性。
    3.重新定義實體以減少外部屬性數據或行數據的開支。相應的非規范化類型是:
    (1)把1個實體(表)分割成2個表(把所有的屬性分成2組)。這樣就把頻繁被訪問的數據同較少被訪問的數據分開了。這種方法要求在每個表中復制首要關鍵字。這樣產生的設計有利于并行處理,并將產生列數較少的表。
    (2)把1個實體(表)分割成2個表(把所有的行分成2組)。這種方法適用于那些將包含大量數據的實體(表)。在應用中常要保留歷史記錄,但是歷史記錄很少用到。因此可以把頻繁被訪問的數據同較少被訪問的歷史數據分開。而且如果數據行是作為子集被邏輯工作組(部門、銷售分區、地理區域等)訪問的,那么這種方法也是很有好處的。
  1.2 生成物理數據庫
    要想正確選擇基本物理實現策略,必須懂得數據庫訪問格式和硬件資源的操作特點,主要是內存和磁盤子系統I/O。這是一個范圍廣泛的話題,但以下的準則可能會有所幫助。
    1.與每個表列相關的數據類型應該反映數據所需的最小存儲空間,特別是對于被索引的列更是如此。比如能使用smallint類型就不要用integer類型,這樣索引字段可以被更快地讀取,而且可以在1個數據頁上放置更多的數據行,因而也就減少了I/O操作。
    2.把1個表放在某個物理設備上,再通過SQL Server段把它的不分簇索引放在1個不同的物理設備上,這樣能提高性能。尤其是系統采用了多個智能型磁盤控制器和數據分離技術的情況下,這樣做的好處更加明顯。
    3.用SQL Server段把一個頻繁使用的大表分割開,并放在2個單獨的智能型磁盤控制器的數據庫設備上,這樣也可以提高性能。因為有多個磁頭在查找,所以數據分離也能提高性能。
    4.用SQL Server段把文本或圖像列的數據存放在1個單獨的物理設備上可以提高性能。1個專用的智能型的控制器能進一步提高性能。
  
  2 與SQL Server相關的硬件系統
    與SQL Server有關的硬件設計包括系統處理器、內存、磁盤子系統和網絡,這4個部分基本上構成了硬件平臺,Windows NT和SQL Server運行于其上。
  2.1 系統處理器(CPU)
    根據自己的具體需要確定CPU結構的過程就是估計在硬件平臺上占用CPU的工作量的過程。從以往的經驗看,CPU配置最少應是1個 80586/100處理器。如果只有2~3個用戶,這就足夠了,但如果打算支持更多的用戶和關鍵應用,推薦采用Pentium Pro或PⅡ級CPU。
  
  2.2 內存(RAM)
    為SQL Server方案確定合適的內存設置對于實現良好的性能是至關重要的。SQL Server用內存做過程緩存、數據和索引項緩存、靜態服務器開支和設置開支。SQL Server最多能利用2GB虛擬內存,這也是最大的設置值。還有一點必須考慮的是Windows NT和它的所有相關的服務也要占用內存。
    Windows NT為每個WIN32應用程序提供了4GB的虛擬地址空間。這個虛擬地址空間由Windows NT虛擬內存管理器(VMM)映射到物理內存上,在某些硬件平臺上可以達到4GB。SQL Server應用程序只知道虛擬地址,所以不能直接訪問物理內存,這個訪問是由VMM控制的。Windows NT允許產生超出可用的物理內存的虛擬地址空間,這樣當給SQL Server分配的虛擬內存多于可用的物理內存時,會降低SQL Server的性能。
    這些地址空間是專門為SQL Server系統設置的,所以如果在同一硬件平臺上還有其它軟件(如文件和打印共享,應用程序服務等)在運行,那么應該考慮到它們也占用一部分內存。一般來說硬件平臺至少要配置32MB的內存,其中,Windows NT至少要占用16MB。1個簡單的法則是,給每一個并發的用戶增加100KB的內存。例如,如果有100個并發的用戶,則至少需要32MB+100用戶*100KB=42MB內存,實際的使用數量還需要根據運行的實際情況調整。可以說,提高內存是提高系統性能的最經濟的途徑。
  2.3 磁盤子系統
    設計1個好的磁盤I/O系統是實現良好的SQL Server方案的一個很重要的方面。這里討論的磁盤子系統至少有1個磁盤控制設備和1個或多個硬盤單元,還有對磁盤設置和文件系統的考慮。智能型SCSI-2磁盤控制器或磁盤組控制器是不錯的選擇,其特點如下:
    (1)控制器高速緩存。
    (2)總線主板上有處理器,可以減少對系統CPU的中斷。
    (3)異步讀寫支持。
    (4)32位RAID支持。
    (5)快速SCSI—2驅動。
    (6)超前讀高速緩存(至少1個磁道)。
  3 檢索策略
    在精心選擇了硬件平臺,又實現了1個良好的數據庫方案,并且具備了用戶需求和應用方面的知識后,現在應該設計查詢和索引了。有2個方面對于在SQL Server上取得良好的查詢和索引性能是十分重要的,第1是根據SQL Server優化器方面的知識生成查詢和索引;第2是利用SQL Server的性能特點,加強數據訪問操作。
  3.1 SQL Server優化器
    Microsoft SQL Server數據庫內核用1個基于費用的查詢優化器自動優化向SQL提交的數據查詢操作。數據操作查詢是指支持SQL關鍵字WHERE或HAVING的查詢,如SELECT、DELETE和UPDATE。基于費用的查詢優化器根據統計信息產生子句的費用估算。
    了解優化器數據處理過程的簡單方法是檢測SHOWPLAN命令的輸出結果。如果用基于字符的工具(例如isql),可以通過鍵入SHOW SHOWPLAN ON來得到SHOWPLAN命令的輸出。如果使用圖形化查詢,比如SQL Enterprise Manager中的查詢工具或isql/w,可以設定配置選項來提供這一信息。
    SQL Server的優化通過3個階段完成:查詢分析、索引選擇、合并選擇。
    1.查詢分析
    在查詢分析階段,SQL Server優化器查看每一個由正規查詢樹代表的子句,并判斷它是否能被優化。SQL Server一般會盡量優化那些限制掃描的子句。例如,搜索和/或合并子句。但是不是所有合法的SQL語法都可以分成可優化的子句,如含有SQL不等關系符“<>”的子句。因為“<>”是1個排斥性的操作符,而不是1個包括性的操作符,所在掃描整個表之前無法確定子句的選擇范圍會有多大。當1個關系型查詢中含有不可優化的子句時,執行計劃用表掃描來訪問查詢的這個部分,對于查詢樹中可優化的SQL Server子句,則由優化器執行索引選擇。
    2.索引選擇
    對于每個可優化的子句,優化器都查看數據庫系統表,以確定是否有相關的索引能用于訪問數據。只有當索引中的列的1個前綴與查詢子句中的列完全匹配時,這個索引才被認為是有用的。因為索引是根據列的順序構造的,所以要求匹配是精確的匹配。對于分簇索引,原來的數據也是根據索引列順序排序的。想用索引的次要列訪問數據,就像想在電話本中查找所有姓為某個姓氏的條目一樣,排序基本上沒有什么用,因為你還是得查看每一行以確定它是否符合條件。如果1個子句有可用的索引,那么優化器就會為它確定選擇性。
    所以在設計過程中,要根據查詢設計準則仔細檢查所有的查詢,以查詢的優化特點為基礎設計索引。
    (1)比較窄的索引具有比較高的效率。對于比較窄的索引來說,每頁上能存放較多的索引行,而且索引的級別也較少。所以,緩存中能放置更多的索引頁,這樣也減少了I/O操作。
    (2)SQL Server優化器能分析大量的索引和合并可能性。所以與較少的寬索引相比,較多的窄索引能向優化器提供更多的選擇。但是不要保留不必要的索引,因為它們將增加存儲和維護的開支。對于復合索引、組合索引或多列索引,SQL Server優化器只保留最重要的列的分布統計信息,這樣,索引的第1列應該有很大的選擇性。
    (3)表上的索引過多會影響UPDATE、INSERT和DELETE的性能,因為所有的索引都必須做相應的調整。另外,所有的分頁。

關鍵字:SQL Server、數據庫、控制器

分享到:

頂部 】 【 關閉
版權所有:佛山思海電腦網絡有限公司 ©1998-2024 All Rights Reserved.
聯系電話:(0757)22630313、22633833
中華人民共和國增值電信業務經營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網安 舉報有獎  警警  手機打開網站