论文部分内容阅读
摘要:SQL SERVER是占有市场份额较大的一个关系数据库管理系统,本文讨论在数据库设计阶段的一项优化技术,估算堆的大小。
关键词:数据库;SQL SERVER;计算
中图分类号:G250.74 文献标志码:A 文章编号:1674-9324(2013)22-0146-03
一个数据库实例能够以最佳状态运行是以良好的设计为基础并配合合理的硬件部署和软件协助实现的。本文针对占有市场份额很大的数据库产品SQL SERVER,讨论数据库实例设计方面的优化技术。在数据库的设计中,我们可以依据概念结构设计的结果得出数据库的具体模式结构,从而进行合理的部署。数据库的初始大小是设计中的一个关键问题。数据库初始大小过大,会浪费我们不必要的硬盘空间,数据库初始大小过小,SQL Server会经常根据需要进行数据库的扩容,从而增加了系统运行负担,因此数据库的初始大小是优化技术的一个关键。那么数据库的初始大小应该设计为多大合适呢?
SQL SERVER的数据库存储空间的大小由以下几个因素决定:堆或者聚集索引的大小,非聚集索引的大小。本篇仅对堆的大小估算进行讨论。
一、估算堆的大小的步骤
1.估算表中将存储的行数:Num_Rows=表中的行数。
2.指定固定长度和可变长度列的数量,并计算存储所需的空间:计算每组列在数据行中所占据的空间。列的大小取决于数据类型和长度说明。Num_Cols=总列数(固定长度和可变长度);Fixed_Data_Size=所有固定长度列的总字节数;Num_Variable_Cols=可变长度列的数量;Max_Var_Size=所有可变长度列的最大字节数。
3.保留行中称为空位图的部分以管理列的为空性。计算大小:Null_Bitmap=2 ((Num_Cols 7)/8)取整数部分。
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是数据行的行标题开销。
6.计算每页的行数(每页大小为8K,页首的12个字节用于存储页的基本信息,因此有8096可用字节):Rows_Per_Page=8096/(Row_Size 2),由于行的存储不能跨页,因此每页的行数应向下舍入到最接近的整数。公式中的数值2是计算行数时引入的行大小余量。
7.计算存储所有行所需的页数:Num_Pages=Num_Rows/Rows_Per_Page估计的页数应向上舍入到最接近的整数。
8.计算在堆中存储数据所需的空间量(每页的总字节为8192):堆大小(字节)=8192xNum_Pages。
二、下面以employees表为例,估算存储该表所需的堆空间大小
employees表结构如下:
Create table Employees
(EmployeeID int,
LastName nvarchar(20),
FirstName nvarchar(10),
Title nvarchar(30),
Birthday datatime
HireDate datatime
Adress nvarchar(60),
City nvarchar(15),
PostalCard nvarchar(10),
HomePhone nvarchar(12),
)
其中的固定长度列有EmployeeID,Birthday,HireDate共计3列。
其中可变长度列有LastName,FirstName,Title,Adress,City,PostalCard,HomePhone共计7列。
固定长度列的总字节数:Fixed_Data_Size=(int)4 (datetime)8 (datetime)8=20
假设所有可变长度列均100%充满,Max_Var_Size取表中的Address列的长度60,则可变长度列的总字节数:Variable_Data_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
假定该表将存储1000条记录,则存储所有行所需的页数:
Num_Pages=1000/77=13(上取整)
该表存储所需的空间量:8K*13=104K。估算出数据库中所有表(堆)的大小求总和就得到数据库的初始大小。假定数据库EMP中还有5张表,每张表的堆大小估算结果分别为,220K,171K,128K,350K,760K。则数据库的初始大小为=104K 220K 171K 128K 350K 760K=1733K,约2M(上取整)。
定义数据库的物理结构 CREATE DATABASE EMP
ON
(name=’EMP_DAT’,
Filename’d:MPfileEMP_DAT.MDF’,
Sieze=2M,
Maxsize=5M,
Filegrowth=1M
)
LOG ON
(name=’EMP_log’,
Filename’d:EMPfileEMP_LOG.LDF’,
Sieze=1M,
Maxsize=3M,
Filegrowth=1M
)
三、总结
讨论数据库的初始大小,对于某些实例非常有效。比如数据增加不大的一类管理系统,一旦数据录入结束,后期运行维护时产生的数据非常小,这样数据库基本无扩容,只要确定好数据库的初始大小即可。在确定物理数据库的各文件属性时,SIZE属性就是本文讨论的主要问题。另外,数据库文件的部署(FILENAME属性),数据库的增长方式(Filegrowth属性)也影响数据库实例的运行效率。数据库的增长方式有两种,按M字节增长和按百分比增长,一般情况下,我们将数据库的增长方式设置为按M字节增长较优。如果考虑到数据库的安全性,可以将数据库文件同RAID磁盘阵列技术结合,合理部署数据库文件的fliename属性。将文件部署于不同的磁盘上,既加快了数据库的读写速度,又提高的数据的安全性。合理设计、恰当部署是数据库在设计阶段进行优化的起点,SQL Server的数据库优化技术还体现在诸多方面,比如索引的设计优化、查询的优化等。因篇幅有限,在此不多讨论。
参考文献:
[1]明日科技.SQL SERVER 2005开发技术大全[M].北京:人民邮电出版社,2007.
[2]粘新育.SQL Server 2005数据库应用技术[M].北京:中国铁道出版社,2011.
[3]岳莉,刘凌,江军.Study of Real-time Database Based on Common Information Model.International Conference on Intelligent Systems Design and Engineering Application,(ISDEA2013)
作者简介:岳莉(1977-),女,硕士,讲师,现为山东职业学院信息工程系教师,主要从事计算机应用、计算机软件等方向的教学及应用研究工作。
关键词:数据库;SQL SERVER;计算
中图分类号:G250.74 文献标志码:A 文章编号:1674-9324(2013)22-0146-03
一个数据库实例能够以最佳状态运行是以良好的设计为基础并配合合理的硬件部署和软件协助实现的。本文针对占有市场份额很大的数据库产品SQL SERVER,讨论数据库实例设计方面的优化技术。在数据库的设计中,我们可以依据概念结构设计的结果得出数据库的具体模式结构,从而进行合理的部署。数据库的初始大小是设计中的一个关键问题。数据库初始大小过大,会浪费我们不必要的硬盘空间,数据库初始大小过小,SQL Server会经常根据需要进行数据库的扩容,从而增加了系统运行负担,因此数据库的初始大小是优化技术的一个关键。那么数据库的初始大小应该设计为多大合适呢?
SQL SERVER的数据库存储空间的大小由以下几个因素决定:堆或者聚集索引的大小,非聚集索引的大小。本篇仅对堆的大小估算进行讨论。
一、估算堆的大小的步骤
1.估算表中将存储的行数:Num_Rows=表中的行数。
2.指定固定长度和可变长度列的数量,并计算存储所需的空间:计算每组列在数据行中所占据的空间。列的大小取决于数据类型和长度说明。Num_Cols=总列数(固定长度和可变长度);Fixed_Data_Size=所有固定长度列的总字节数;Num_Variable_Cols=可变长度列的数量;Max_Var_Size=所有可变长度列的最大字节数。
3.保留行中称为空位图的部分以管理列的为空性。计算大小:Null_Bitmap=2 ((Num_Cols 7)/8)取整数部分。
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是数据行的行标题开销。
6.计算每页的行数(每页大小为8K,页首的12个字节用于存储页的基本信息,因此有8096可用字节):Rows_Per_Page=8096/(Row_Size 2),由于行的存储不能跨页,因此每页的行数应向下舍入到最接近的整数。公式中的数值2是计算行数时引入的行大小余量。
7.计算存储所有行所需的页数:Num_Pages=Num_Rows/Rows_Per_Page估计的页数应向上舍入到最接近的整数。
8.计算在堆中存储数据所需的空间量(每页的总字节为8192):堆大小(字节)=8192xNum_Pages。
二、下面以employees表为例,估算存储该表所需的堆空间大小
employees表结构如下:
Create table Employees
(EmployeeID int,
LastName nvarchar(20),
FirstName nvarchar(10),
Title nvarchar(30),
Birthday datatime
HireDate datatime
Adress nvarchar(60),
City nvarchar(15),
PostalCard nvarchar(10),
HomePhone nvarchar(12),
)
其中的固定长度列有EmployeeID,Birthday,HireDate共计3列。
其中可变长度列有LastName,FirstName,Title,Adress,City,PostalCard,HomePhone共计7列。
固定长度列的总字节数:Fixed_Data_Size=(int)4 (datetime)8 (datetime)8=20
假设所有可变长度列均100%充满,Max_Var_Size取表中的Address列的长度60,则可变长度列的总字节数:Variable_Data_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
假定该表将存储1000条记录,则存储所有行所需的页数:
Num_Pages=1000/77=13(上取整)
该表存储所需的空间量:8K*13=104K。估算出数据库中所有表(堆)的大小求总和就得到数据库的初始大小。假定数据库EMP中还有5张表,每张表的堆大小估算结果分别为,220K,171K,128K,350K,760K。则数据库的初始大小为=104K 220K 171K 128K 350K 760K=1733K,约2M(上取整)。
定义数据库的物理结构 CREATE DATABASE EMP
ON
(name=’EMP_DAT’,
Filename’d:MPfileEMP_DAT.MDF’,
Sieze=2M,
Maxsize=5M,
Filegrowth=1M
)
LOG ON
(name=’EMP_log’,
Filename’d:EMPfileEMP_LOG.LDF’,
Sieze=1M,
Maxsize=3M,
Filegrowth=1M
)
三、总结
讨论数据库的初始大小,对于某些实例非常有效。比如数据增加不大的一类管理系统,一旦数据录入结束,后期运行维护时产生的数据非常小,这样数据库基本无扩容,只要确定好数据库的初始大小即可。在确定物理数据库的各文件属性时,SIZE属性就是本文讨论的主要问题。另外,数据库文件的部署(FILENAME属性),数据库的增长方式(Filegrowth属性)也影响数据库实例的运行效率。数据库的增长方式有两种,按M字节增长和按百分比增长,一般情况下,我们将数据库的增长方式设置为按M字节增长较优。如果考虑到数据库的安全性,可以将数据库文件同RAID磁盘阵列技术结合,合理部署数据库文件的fliename属性。将文件部署于不同的磁盘上,既加快了数据库的读写速度,又提高的数据的安全性。合理设计、恰当部署是数据库在设计阶段进行优化的起点,SQL Server的数据库优化技术还体现在诸多方面,比如索引的设计优化、查询的优化等。因篇幅有限,在此不多讨论。
参考文献:
[1]明日科技.SQL SERVER 2005开发技术大全[M].北京:人民邮电出版社,2007.
[2]粘新育.SQL Server 2005数据库应用技术[M].北京:中国铁道出版社,2011.
[3]岳莉,刘凌,江军.Study of Real-time Database Based on Common Information Model.International Conference on Intelligent Systems Design and Engineering Application,(ISDEA2013)
作者简介:岳莉(1977-),女,硕士,讲师,现为山东职业学院信息工程系教师,主要从事计算机应用、计算机软件等方向的教学及应用研究工作。