欢迎来到天天文库
浏览记录
ID:30565953
大小:108.00 KB
页数:6页
时间:2018-12-31
《在SQL SERVER中估算堆大小》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、在SQLSERVER中估算堆大小 摘要:SQLSERVER是占有市场份额较大的一个关系数据库管理系统,本文讨论在数据库设计阶段的一项优化技术,估算堆的大小。 关键词:数据库;SQLSERVER;计算 中图分类号:G250.74文献标志码:A文章编号:1674-9324(2013)22-0146-03 一个数据库实例能够以最佳状态运行是以良好的设计为基础并配合合理的硬件部署和软件协助实现的。本文针对占有市场份额很大的数据库产品SQLSERVER,讨论数据库实例设计方面的优化技术。在数据库的设计中,我们可以依据概念结构设计的
2、结果得出数据库的具体模式结构,从而进行合理的部署。数据库的初始大小是设计中的一个关键问题。数据库初始大小过大,会浪费我们不必要的硬盘空间,数据库初始大小过小,SQLServer会经常根据需要进行数据库的扩容,从而增加了系统运行负担,因此数据库的初始大小是优化技术的一个关键。那么数据库的初始大小应该设计为多大合适呢? SQLSERVER的数据库存储空间的大小由以下几个因素决定:堆或者聚集索引的大小,非聚集索引的大小。本篇仅对堆的大小估算进行讨论。 一、估算堆的大小的步骤 1.估算表中将存储的行数:Num_Rows=表中的行数
3、。6 2.指定固定长度和可变长度列的数量,并计算存储所需的空间:计算每组列在数据行中所占据的空间。列的大小取决于数据类型和长度说明。Num_Cols=总列数(固定长度和可变长度);Fixed_Data_Size=所有固定长度列的总字节数;Num_Variable_Cols=可变长度列的数量;Max_Var_Size=所有可变长度列的最大字节数。 3.保留行中称为空位图的部分以管理列的为空性。计算大小:Null_Bitmap=2+((Num_Cols+7)/8)取整数部分。 4.计算可变长度数据的大小:假设所有可变长度列均百
4、分之百充满。如果表中有可变长度列,确定在行中存储这些列所用的空间:Variable_Data_Size=2+(Num_Variable_Colsx2)+Max_Var_Size如果预计可变长度列占用的存储空间比例较低,可以按照该比例调整Max_Var_Size值,从而对整个表的大小得出一个更准确的估计。如果没有可变长度列,则Variable_Data_Size取值为0。 5.计算总的行大小:Row_Size=Fixed_Data_Size+Variable_Data_Size+Null_Bitmap+4其中的数值4是数据行的行
5、标题开销。 6.计算每页的行数(每页大小为8K,页首的12个字节用于存储页的基本信息,因此有8096可用字节):Rows_Per_Page=8096/(Row_Size+2),由于行的存储不能跨页,因此每页的行数应向下舍入到最接近的整数。公式中的数值2是计算行数时引入的行大小余量。 7.计算存储所有行所需的页数:Num_Pages=Num_Rows/Rows_Per_Page估计的页数应向上舍入到最接近的整数。6 8.计算在堆中存储数据所需的空间量(每页的总字节为8192):堆大小(字节)=8192xNum_Pages。
6、 二、下面以employees表为例,估算存储该表所需的堆空间大小 employees表结构如下: CreatetableEmployees (EmployeeIDint, LastNamenvarchar(20), FirstNamenvarchar(10), Titlenvarchar(30), Birthdaydatatime HireDatedatatime Adressnvarchar(60), Citynvarchar(15), PostalCardnvarchar(10), HomePhon
7、envarchar(12), ) 其中的固定长度列有EmployeeID,Birthday,HireDate共计3列。 其中可变长度列有LastName,FirstName,Title,Adress,City,PostalCard,HomePhone共计7列。 固定长度列的总字节数:Fixed_Data_Size=(int)4+(datetime)8+(datetime)8=206 假设所有可变长度列均100%充满,Max_Var_Size取表中的Address列的长度60,则可变长度列的总字节数:Variable_D
8、ata_Size=2+(7x2)+60=76 保留空位图大小:Null_Bitmap=2+((10+7)/8)=3(下取整) 行的总大小:Row_Size=20+76+3+4=103 每页的行数:Rows_Per_Page=8096/(103+2)=77
此文档下载收益归作者所有