劉霜
【摘要】 數(shù)據(jù)庫設(shè)計是影響SQL Server數(shù)據(jù)庫性能的主要因素之一,本文對數(shù)據(jù)庫的設(shè)計對數(shù)據(jù)庫性能的影響進(jìn)行了分析,包括數(shù)據(jù)邏輯設(shè)計對數(shù)據(jù)庫性能的影響,數(shù)據(jù)庫物理設(shè)計對數(shù)據(jù)庫性能的影響,并針對邏輯設(shè)計過程和物理設(shè)計過程都提出了相應(yīng)的措施來改善和優(yōu)化數(shù)據(jù)庫系統(tǒng)的性能。為數(shù)據(jù)庫性能的優(yōu)化提供可行性的借鑒。
【關(guān)鍵詞】 數(shù)據(jù)庫 邏輯設(shè)計 物理設(shè)計 性能優(yōu)化
一、引言
SQL Server數(shù)據(jù)庫的性能受到多種因素的制約,比如數(shù)據(jù)庫的結(jié)構(gòu)、數(shù)據(jù)庫的載體操作系統(tǒng)、硬件水平等等。在上述諸多因素中,有些情況必須要改變客觀的情況才能夠優(yōu)化數(shù)據(jù)庫性能,這些因素基本包括數(shù)據(jù)庫本身因素之外的其他因素。而有些因素僅與數(shù)據(jù)庫系統(tǒng)本身有關(guān)。本文對數(shù)據(jù)庫結(jié)構(gòu)對數(shù)據(jù)庫性能的影響進(jìn)行了研究,并針對數(shù)據(jù)庫設(shè)計的改進(jìn)來對數(shù)據(jù)庫的性能進(jìn)行優(yōu)化。數(shù)據(jù)庫的設(shè)計總是和實際應(yīng)用緊密相結(jié)合的是面向客戶的基本需求的,因而數(shù)據(jù)庫的設(shè)計應(yīng)該從客戶的需求來出發(fā)進(jìn)行設(shè)計。數(shù)據(jù)庫的設(shè)計首先是為了滿足客戶的需求并且具備較好的性能,因而可以看到優(yōu)化數(shù)據(jù)庫的性能是數(shù)據(jù)庫設(shè)計最為基本的要求之一,由于數(shù)據(jù)庫的優(yōu)化與數(shù)據(jù)庫的設(shè)計二者緊密相關(guān),而數(shù)據(jù)庫的設(shè)計一般包括數(shù)據(jù)庫的邏輯設(shè)計、數(shù)據(jù)庫的物理設(shè)計以及事物日志設(shè)計等。
二、結(jié)構(gòu)設(shè)計要點
要通過對數(shù)據(jù)庫的設(shè)計來實現(xiàn)對數(shù)據(jù)庫的優(yōu)化,首要的是熟悉數(shù)據(jù)庫的基本結(jié)構(gòu),這是通過結(jié)構(gòu)設(shè)計進(jìn)行數(shù)據(jù)庫優(yōu)化的基礎(chǔ)。數(shù)據(jù)庫一般包括一個主數(shù)據(jù)文件以及一個多人事務(wù)日志文件,此外在有些數(shù)據(jù)庫中還有輔助數(shù)據(jù)文件等。一般講主數(shù)據(jù)文件看做是整個數(shù)據(jù)庫的起點。該主數(shù)據(jù)文件會指向數(shù)據(jù)庫中其他的文件。主數(shù)據(jù)文件中一般會包含數(shù)據(jù)庫文件的啟動相關(guān)信息,主要用于存儲數(shù)據(jù),主數(shù)據(jù)文件是每個數(shù)據(jù)庫所必須的。事務(wù)日志文件一般包括恢復(fù)整個數(shù)據(jù)庫所需要的日志文件信息。作為數(shù)據(jù)庫來說日志文件也是必須具備的,數(shù)據(jù)庫可以通過數(shù)據(jù)庫的日志文件來恢復(fù)數(shù)據(jù)庫。輔助數(shù)據(jù)文件是相對于主數(shù)據(jù)文件來講的,主數(shù)據(jù)文件主要是指除外主數(shù)據(jù)文件以外的全部的數(shù)據(jù)文件。因而如果主數(shù)據(jù)文件包含所有的數(shù)據(jù)文件時就不需要輔助數(shù)據(jù)文件,而實際可能的情況是由于數(shù)據(jù)庫比較大而會存在多個的輔助數(shù)據(jù)文件。系統(tǒng)表中的model數(shù)據(jù)庫會在數(shù)據(jù)庫創(chuàng)建的過程中被轉(zhuǎn)移到數(shù)據(jù)庫當(dāng)中。在數(shù)據(jù)庫中最小的存儲單位為頁,其中每頁為8kb的磁盤空間。在數(shù)據(jù)庫中行不能夠跨頁,擴(kuò)展是數(shù)據(jù)庫的又一基本單元,可以將空間分配相應(yīng)的表或者是索引。事物的日志文件含有可以恢復(fù)數(shù)據(jù)庫的重要的信息,這在數(shù)據(jù)庫發(fā)生故障或者是崩潰的時候尤為重要。了解數(shù)據(jù)庫結(jié)構(gòu)設(shè)計要點對于在數(shù)據(jù)庫設(shè)計的過程中對數(shù)據(jù)庫進(jìn)行優(yōu)化以及規(guī)范具有十分重要的意義。可以通過對數(shù)據(jù)庫文件以及事物日志映射的方式來進(jìn)行管理,就能夠?qū)崿F(xiàn)優(yōu)化數(shù)據(jù)庫的目標(biāo)并能夠具有較好的系統(tǒng)容錯性。
三、數(shù)據(jù)庫邏輯設(shè)計
數(shù)據(jù)庫的邏輯設(shè)計主要是根據(jù)實際的業(yè)務(wù)需求和所需的數(shù)據(jù)建立數(shù)據(jù)模型。主要是對表與表之間的關(guān)系進(jìn)行規(guī)范和設(shè)計,這是數(shù)據(jù)庫優(yōu)化的重要核心問題。從數(shù)據(jù)庫結(jié)構(gòu)設(shè)計對系統(tǒng)性能優(yōu)化的整個影響機制來看,數(shù)據(jù)庫的邏輯設(shè)計是對整個數(shù)據(jù)庫進(jìn)行性能優(yōu)化的基礎(chǔ)環(huán)節(jié)也是最為重要的環(huán)節(jié)。而數(shù)據(jù)庫邏輯設(shè)計優(yōu)化的過程也就是使用規(guī)范、簡潔的關(guān)系來代替原來關(guān)系的一個過程。如果一個關(guān)系所有的字段都已經(jīng)不再可分,那么這種關(guān)系就是規(guī)范化的邏輯關(guān)系。該關(guān)系滿足數(shù)據(jù)庫邏輯設(shè)計的第一范式,在此基礎(chǔ)上進(jìn)一步將屬性和關(guān)鍵字之間進(jìn)行消除可以得到第二范式,進(jìn)一步消除屬性與關(guān)鍵字之間的傳遞函數(shù)關(guān)系就可進(jìn)一步得到第三范式,這種關(guān)系規(guī)范化的過程就是對關(guān)系進(jìn)行分解的過程,因而在數(shù)據(jù)庫的邏輯設(shè)計過程中必須要滿足第三范式。實際上邏輯設(shè)計就是將數(shù)據(jù)分布到各個表的技術(shù),使用規(guī)范化的設(shè)計技術(shù)能夠有效的消除數(shù)據(jù)的冗余,將數(shù)據(jù)之間的層次關(guān)系理清楚,有效的保證數(shù)據(jù)庫的完整,使得數(shù)據(jù)庫的穩(wěn)定性較好能夠較為智能的解決刪除時的異常。數(shù)據(jù)插入異常,也就是相關(guān)數(shù)據(jù)信息未插入到數(shù)據(jù)庫當(dāng)中以及更新問題等。
數(shù)據(jù)庫的規(guī)范化在一定程度上降低了冗余的數(shù)據(jù),數(shù)據(jù)庫冗余數(shù)據(jù)的減少使得其在數(shù)據(jù)庫中數(shù)據(jù)量有效的減少了,進(jìn)而能夠減少存儲數(shù)據(jù)的頁,這對系統(tǒng)查詢性能具有一定程度的提升,有效的避免了數(shù)據(jù)庫中多個位置有一個數(shù)據(jù)的情況。能夠顯著提升應(yīng)用程序的效率并且能夠減少數(shù)據(jù)庫使用過程中所出現(xiàn)的錯誤。
但是規(guī)范化的設(shè)計有時候也會對系統(tǒng)的性能產(chǎn)生一定程度的影響,規(guī)范化實際上是將二維表分解為最小組分的表,所以對于一些查詢運算可能就需要完成較為復(fù)雜的聯(lián)結(jié)運算,復(fù)雜的聯(lián)結(jié)運算會導(dǎo)致計算機運行的時間、空間以及效率的損失,且使得客戶端的編程難度也極大的增加會導(dǎo)致較為明顯的性能的下降。所以必須要對其規(guī)范化進(jìn)行平衡,使用反規(guī)范化來相應(yīng)的提高系統(tǒng)查詢的速度。
四、物理設(shè)計
數(shù)據(jù)庫物理設(shè)計的過程是將邏輯設(shè)計映射到物理設(shè)備上的一個過程,使用相應(yīng)的軟件功能可以較為方面的實現(xiàn)對數(shù)據(jù)庫進(jìn)行物理訪問,數(shù)據(jù)庫使用I/O接口函數(shù)來實現(xiàn)對數(shù)據(jù)的讀寫,其中磁盤設(shè)備往往會成為影響數(shù)據(jù)庫性能的主要方面,在這種情況下用戶可以將數(shù)據(jù)最大限度的分解到多個磁盤上,在這種情況下可以采取并行訪問的方案來提高文件訪問的速度,可以將每個物理磁盤創(chuàng)建為一個文件并設(shè)置相應(yīng)的文件分組,在這過程中可以使用RAID技術(shù)來實現(xiàn)對數(shù)據(jù)庫性能的優(yōu)化。該設(shè)備允許對多個磁盤進(jìn)行條帶化,可以便于使用更多的磁盤進(jìn)行同時進(jìn)行數(shù)據(jù)的讀寫,然后進(jìn)行查詢,可以有效的提高數(shù)據(jù)查詢的效率。
五、結(jié)語
通過對數(shù)據(jù)設(shè)計對數(shù)據(jù)庫性能的影響分析可以看到數(shù)據(jù)的邏輯設(shè)計過程中使用規(guī)范化的設(shè)計能夠在一定程度上減少數(shù)據(jù)冗余進(jìn)而提高數(shù)據(jù)庫系統(tǒng)的性能,但是邏輯規(guī)范化的設(shè)計也會存在著一定的問題可以通過反規(guī)范化設(shè)計進(jìn)行均衡。物理設(shè)計過程中對數(shù)據(jù)庫性能影響較大的因素為物理磁盤設(shè)備,可以使用RAID技術(shù)來對物理結(jié)構(gòu)進(jìn)行優(yōu)化設(shè)計從而允許對多個磁盤的讀寫提高數(shù)據(jù)庫查詢的效率。
參 考 文 獻(xiàn)
[1] 任巍. 鐵路巡檢作業(yè)信息實時管理系統(tǒng)的數(shù)據(jù)庫設(shè)計[J]. 信息與電腦(理論版). 2015(02)
[2] 譚嶠. SQL Server數(shù)據(jù)庫性能優(yōu)化研究[J]. 硅谷. 2014(08)
[3] 林元彥. SQL Server數(shù)據(jù)庫性能分析與優(yōu)化[J]. 電子技術(shù)與軟件工程. 2013(17)