鐘靜
【摘要】數據庫性能的影響因素是綜合性的,當中包括DBMS的自身性能,以及數據庫的邏輯設計,查詢設計和數據庫運行環境等等,本文簡單探討了影響數據庫性能的幾個方面,同時提出了一些建設性意見。
【關鍵詞】大型數據庫;系統;設計;功效
大型數據庫執行情況長期以來都對于系統用戶有著重大的影響。在設計軟件項目時,測試用例數據量比較小,執行效率中很多問題都沒有顯現出來。當大型數據系統交付后,客戶運行軟件一段時間后,數據量執行效率中存在的問題就會突顯出來。而軟件設計者可能因為已過服務期,就不會花多余時間與興趣來解決這個性能問題。執行效率與數據庫系統的硬件參數配置,以及網絡的參數配置都有較大關聯,邏輯設計與各種數據庫工具應用也會影響數據庫的執行效率。大型數據庫系統設計較好,也能夠有效避免數據流峰值,以及瓶頸等部分的不利影響。
一、大型數據庫的選型
當下數據庫產品種類繁多,選擇合適的數據庫產品與數據庫技術一樣重要。數據庫的廠商往往會將產品最佳面表現在性能清單以及技術基準表上,對數據庫產品的缺點避而不談,這樣就會導致客戶選擇時走進誤區。數據庫選型通常要考慮五個主要因素,包括開發需求和數據庫性能及成本,數據庫的運行與管理、是否可以升級、總體的擁有成本。
二、大型數據庫的設計
(一)數據模式的設計
在數據庫的邏輯設計中,為確保數據庫一致性與完整性,數據庫應該依照關系數據庫規范化要求來完成設計。在這些條件下完成的數據模式設計可以規避冗余、插入以及更新的問題。在實際操作過程中,常需執行查詢以及匯總,按照規范化的理論來進行設計則增加其表連接,但是卻降低了系統的運行。這時,應該根據實際情況適當降低數據庫規范化理論要求,來達到實際操作中的需求。因此,合理有效的使用冗余,可以為查詢帶來較大的幫助。
(二)數據庫的索引設計
所謂索引通常是指根據表數據的索引要求而產生的有序數據副本,使得查詢能夠在有序表進行,提升了查詢數據速度,有效改善了系統的性能。但是如果使用索引會耗費一定的磁盤內存,開銷增多,操作執行效率降低。所以,索引設計時應該選擇確實有用索引,既能達到提升查詢速度目的,還能節省一定量的存儲空間。數據庫的服務器對數據訪問通常有以下兩種方式:一是索引掃描,運用索引來訪問數據,當對表查詢時,如返回行數占據全表的百分之十至十五時,運用索引掃描可以優化查詢性能;二是表掃描,讀表中所有頁,當查詢超過全表的百分之四十及以上時,表掃描效率則較高。還應該結合實際數據庫以及用戶需求來確定如何選擇。
盡管索引可以提高檢索的性能,但不科學合理的索引也會造成系統低效。因為每在表中添加一個索引,數據庫就需要做更多工作,而過多索引甚至可能導致索引碎片。因此,我們應該合理使用索引體系,尤其是創建索引時,盡量做到精益求精,確保數據庫性能更好發揮。
創建的索引種類可以按照查詢業務分為兩類,單一列索引與聯合索引。前者是在某一列上完成的索引創建,所以所占的空間較小,創建耗費時間較短,對程序影響相對較低;而后者是在多列上聯合創建的,所以在多條件查詢時,其運行效率較高。需要強調的是,對于使用頻繁、實際數據量較大的數據庫需要采用索引優化器來進行索引優化。
(三)數據庫的查詢設計
據統計,查詢操作時各種大型數據庫實際操作中所占比重最大的內容,不少軟件程序員開發數據庫的應用程序時,側重于用戶界面華麗,而忽略了查詢語句效率問題,造成很多數據庫的應用系統效率較低。所以,設計高校合理查詢語句相當重要。
首先,需要正確使用索引。學會正確使用索引,有助于提高查詢效率,條件自居中應該盡可能考慮使用有用的索引。比如說,在書籍查詢表中,如果創建書本縮寫或是編號的單列索引,就應該在查詢語句的WHERE子句中使用字母縮寫或是編號索引,讓其成為有用索引其次,避免模糊匹配。LIKE關鍵字支持通配符匹配,技術上也被稱作正則表達式。但是這種匹配常常耗費時間較多,所以應該盡量避免使用模糊匹配。第三,注意合并子查詢。合并子查詢是指將某些特定子查詢重寫為等價多個表連接操作。合并子查詢的目的是為了減少查詢語句層次,提高查詢效率。最后,合理使用臨時表來優化查詢。在涉及到有關查詢的特定情境下,可以通過構造臨時關系來提高查詢效率。
三、大型數據庫的系統配置
(一)硬件系統的配置
數據庫的服務器中比較重要的配置參數包括內存、網卡以及CPU。這當中影響較大的是內存,應該將數據放入內存中,比臨時從硬盤中調數據要快很多。如果因為內存過小,就會導致數據在內存和硬盤問不斷調動,當其占用率超過一半時,應該做好擴大準備。
(二)功能模塊的配置
數據信息系統的處理時間通常有三個部分:數據庫服務器的處理時間、網絡傳輸的時間、客戶端的信息處理時間。而解決系統性能關鍵點是盡量將三個時間總和降到最少。在大型數據庫的系統中,數據庫服務器配置與性能通常最高。但其工作量也最大、最繁重,需要同時滿足多個用戶的操作請求。除此之外,可以發現有部分系統工作還可以放在客戶端來進行處理,也可以由數據庫服務器處理,但要根據實際系統的各組成部分性能,進行科學合理安排。
四、數據庫的性能測試
現下國內常用來檢測數據庫性能的工具是TPC-C。如果數據庫系統性能出現下降,應該及時分析下降狀況以及產生這個狀況的原因。通常性能下降有以下幾種情況:第一,系統漸漸變慢;第二,有部分系統客戶端較慢;第三,系統工作高峰時較慢;第四,之前工作正常,突然變慢。應該運用計算機性能的檢測工具觀察計算機的性能,像是內存、CPU的使用率,分析研究后確定是硬件原因還是系統設計存在問題,從而對癥下藥,找到科學的解決措施。
目前國內已經有很多領域需要使用到大型數據庫,像是超市、圖書館、學校資料室等等。只有通過不斷優化完善設計,來提高數據庫的運行效率,從而提高工作效率,達到大型數據庫系統運用的功效。