資源描述:
《sql server數(shù)據(jù)庫設(shè)計(jì)優(yōu)化技術(shù)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、SQLSERVER數(shù)據(jù)庫設(shè)計(jì)優(yōu)化技術(shù)【摘要】SQLSERVER是占有市場份額較大的一個(gè)關(guān)系數(shù)據(jù)庫管理系統(tǒng),本文討論在數(shù)據(jù)庫設(shè)計(jì)階段的優(yōu)化技術(shù)——估算數(shù)據(jù)庫初始大小?!娟P(guān)鍵詞】數(shù)據(jù)庫SQLSERVEROptimizationsOnDataBaseDesignOfSQLSERVERYueLi【Abstract】SQLSERVERisakindofDBMSwhichispopularused,thepaperexplorestheoptimizationsondatabasedesign.——estimatingtheinitialsizeoftheDataBase【Keywords】Data
2、base;SQLSERVER一個(gè)數(shù)據(jù)庫實(shí)例能夠以最佳狀態(tài)運(yùn)行是以良好的設(shè)計(jì)為基礎(chǔ)并配合合理的硬件部署和軟件協(xié)助實(shí)現(xiàn)的。本文針對(duì)占有市場份額很大的數(shù)據(jù)庫產(chǎn)品SQLSERVER,從數(shù)據(jù)庫實(shí)例的設(shè)計(jì)階段估算數(shù)據(jù)庫初始大小來闡述優(yōu)化數(shù)據(jù)庫的關(guān)鍵技術(shù)。5根據(jù)概念結(jié)構(gòu)設(shè)計(jì)的結(jié)果我們可以得出數(shù)據(jù)庫的具體結(jié)構(gòu),從而進(jìn)行合理的部署。數(shù)據(jù)庫的初始大小就是一個(gè)關(guān)鍵問題。數(shù)據(jù)庫初始大小過大,會(huì)浪費(fèi)我們不必要的硬盤空間,數(shù)據(jù)庫初始大小過小,SQLServer會(huì)經(jīng)常根據(jù)需要進(jìn)行數(shù)據(jù)庫的擴(kuò)容,從而增加了系統(tǒng)運(yùn)行負(fù)擔(dān),因此數(shù)據(jù)庫的初始大小是優(yōu)化技術(shù)的另一個(gè)關(guān)鍵。那么數(shù)據(jù)庫的初始大小應(yīng)該設(shè)計(jì)為多大合適呢?SQLSERVE
3、R的數(shù)據(jù)庫存儲(chǔ)空間的大小由以下幾個(gè)因素決定:堆或者聚集索引的大小,非聚集索引的大小。本篇僅對(duì)堆進(jìn)行討論。1.估算堆的大?、俟浪惚碇袑⒋鎯?chǔ)的行數(shù):Num_Rows=表中的行數(shù)②指定固定長度和可變長度列的數(shù)量,并計(jì)算存儲(chǔ)所需的空間:計(jì)算每組列在數(shù)據(jù)行中所占據(jù)的空間。列的大小取決于數(shù)據(jù)類型和長度說明。Num_Cols=總列數(shù)(固定長度和可變長度)Fixed_Data_Size=所有固定長度列的總字節(jié)數(shù)Num_Variable_Cols=可變長度列的數(shù)量Max_Var_Size=所有可變長度列的最大字節(jié)數(shù)③保留行中稱為空位圖的部分以管理列的為空性。計(jì)算大?。篘ull_Bitmap=2+((Num
4、_Cols+7)/58)取整數(shù)部分④計(jì)算可變長度數(shù)據(jù)的大?。杭僭O(shè)所有可變長度列均百分之百充滿如果表中有可變長度列,確定在行中存儲(chǔ)這些列所用的空間:Variable_Data_Size=2+(Num_Variable_Colsx2)+Max_Var_Size如果預(yù)計(jì)可變長度列占用的存儲(chǔ)空間比例較低,可以按照該比例調(diào)整Max_Var_Size值,從而對(duì)整個(gè)表的大小得出一個(gè)更準(zhǔn)確的估計(jì)。如果沒有可變長度列,則Variable_Data_Size取值為0。⑤計(jì)算總的行大?。篟ow_Size=Fixed_Data_Size+Variable_Data_Size+Null_Bitmap+4其中的數(shù)值
5、4是數(shù)據(jù)行的行標(biāo)題開銷。⑥計(jì)算每頁的行數(shù)(每頁大小為8K,頁首的12個(gè)字節(jié)用于存儲(chǔ)頁的基本信息,因此有8096可用字節(jié)):Rows_Per_Page=8096/(Row_Size+2)由于行的存儲(chǔ)不能跨頁,因此每頁的行數(shù)應(yīng)向下舍入到最接近的整數(shù)。公式中的數(shù)值2是計(jì)算行數(shù)時(shí)引入的行大小余量。5⑦計(jì)算存儲(chǔ)所有行所需的頁數(shù):Num_Pages=Num_Rows/Rows_Per_Page估計(jì)的頁數(shù)應(yīng)向上舍入到最接近的整數(shù)。⑧計(jì)算在堆中存儲(chǔ)數(shù)據(jù)所需的空間量(每頁的總字節(jié)為8192):堆大?。ㄗ止?jié))=8192xNum_Pages2.下面以employees表為例,估算存儲(chǔ)該表所需的堆空間大小。表結(jié)
6、構(gòu)如下:CreatetableEmployees(EmployeeIDint,LastNamenvarchar(20),FirstNamenvarchar(10),Titlenvarchar(30),BirthdaydatatimeHireDatedatatimeAdressnvarchar(60),Citynvarchar(15),PostalCardnvarchar(10),HomePhonenvarchar(12),)5其中的固定長度列有EmployeeID,Birthday,HireDate共計(jì)3列。其中可變長度列有LastName,F(xiàn)irstName,Title,Adress,
7、City,PostalCard,HomePhone共計(jì)7列。固定長度列的總字節(jié)數(shù):Fixed_Data_Size=(int)4+(datetime)8+(datetime)8=20假設(shè)所有可變長度列均百分之百充滿,Max_Var_Size取表中的Address列的長度60,則可變長度列的總字節(jié)數(shù):Variable_Data_Size=2+(7x2)+60=76保留空位圖大小:Null_Bitmap=2+((10+7)/8)=3(下取