管理数据库 -学习sql server2005 step by step(三)

3.1为了有效地实现数据库的管理工作,我们必须至少解8个方面的问题。

  1. 数据库文件的存储问题
  2. 数据库的大小问题
  3. 确定数据库运行时的行为特征
  4. 数据库的更改问题
  5. 数据库的扩大问题
  6. 数据库的收缩问题
  7. 如何兼顾数据库的事务处理效率和决策支持效率问题
  8. 数据库的性能优化问题等。

3.2数据库文件和文件组的基本特征

     数据库文件的类型、事务的概念、文件组的作用、估算数据库文件大小的方法等内容。 一个数据库至少有一个数据文件和一个事务日志文件 l数据文件又可以分成主数据文件和次数据文件两种形式 l事务就是一个单元的工作,该单元的工作要么全部完成,要么全部不完成。 文件组就是文件的逻辑集合。为了方便数据的管理和分配,文件组可以把一些指定的文件组合在一起。 在Microsoft SQL Server系统中,可管理的最小物理空间是以页为单位的,每一个页的大小是8KB

                             例子:SQL SERVER单页数据存储行数计算

应用示例:

-- 创建2个测试表
CREATE TABLE [dbo].[Table_2019]([Data] [nchar](2019) NOT NULL)
CREATE TABLE [dbo].[Table_2020]([Data] [nchar](2020) NOT NULL)
go
-- 填充数据
declare @i int
set @i = 0
while(@i < 20)
begin
    insert Table_2019(Data) values('')
    insert Table_2020(Data) values('')
    select @i = @i + 1
end
go
查看每个表所占用的空间,结果:
Table_2020 表数据占了 160kb ,Table_2019 表数据占了 80 kb

 

注意

SQL Server页定义:
在 SQL Server 中,页的大小为 8 KB。这意味着 SQL Server 数据库中每 MB 有 128 页。每页的开头是 96 字节的标头,用于存储有关页的系统信息

在 SQL Server 2005 中,行不能跨页,但是行的部分可以移出行所在的页,因此行实际可能非常大。页的单个行中的最大数据量和开销是 8,060 字节 (8 KB)。

在数据页上,数据行紧接着标头按顺序放置。页的末尾是行偏移表,对于页中的每一行,每个行偏移表都包含一个条目。每个条目记录对应行的第一个字节与页首的距离。行偏移表中的条目的顺序与页中行的顺序相反。
计算:

计算总的行大小:
Row_Size = Fixed_Data_Size + Variable_Data_Size + Null_Bitmap + 4
公式中的值 4 是数据行的行标题开销。

由于nchar是固定长度,所以Variable_Data_Size=0

保留行中称为 Null 位图的部分以管理列的为空性。计算其大小:
Null_Bitmap = 2 + ((Num_Cols + 7) / 8)
由于只有一列,所以Null_Bitmap = 3

由以上原则可以计算:
nchar(2019): 2019×2+0+3+4=4045
nchar(2020): 2020×2+0+3+4=4047

微软给出的每页容纳行数计算公式:


计算每页的行数(每页有 8096 个可用字节):
Rows_Per_Page = 8096 / (Row_Size + 2)
因为行不跨页,所以每页的行数应向下舍入到最接近的整数。公式中的数值 2 是计算行数时引入的行大小余量。

nchar(2019): 8096/(4045+2)=2.000494193229
nchar(2020): 8096/(4047+2)=1.999506050876

据以上计算,可以得出,一页可以存储只有一列nchar(2019)数据的行数为2行,而存储只有一列nchar(2020)数据的行数为1行。

3.3创建数据库

     创建数据库就是确定数据库名称、文件名称、数据文件大小、数据库的字符集、是否自动增长以及如何自动增长等信息的过程。在一个Microsoft SQL Server实例中,最多可以创建32767个数据库。数据库的名称必须满足系统的标识符规则。在命名数据库时,一定要使数据库名称简短和有一定的含义。 l具有CREATE DATABASE、CREATE ANY DATABASE或ALTER ANY DATABASE权限的用户才可以执行创建数据库的操作。 在Microsoft SQL Server系统中,既可以使用CREATE DATABASE语句创建数据库,也可以使用SQL Server Management Studio工具创建数据库。下面,主要介绍如何使用CREATE DATABASE语句创建数据库。

3.4 更改数据库名称

     数据库创建之后,一般情况下不要更改数据库的名称,因为许多应用程序都可能使用了该数据库的名称。数据库名称更改之后,需要修改相应的应用程序。但是,如果确实需要更改数据库名称,也可以使用ALTER DATABASE语句做到。 l使用ALTER DATABASE语句更改数据库名称的语法形式如下所示: –ALTER DATABASE database_name MODIFY NAME = new_database_name

 3.5扩大和收缩数据库

      在Microsoft SQL Server系统中,如果数据库的数据量不断膨胀,可以根据需要扩大数据库的尺寸。 有三种扩大数据库的方式。

  1. 第一种方式是设置数据库为自动增长方式,可以在创建数据库时设置。
  2. 第二种方式是直接修改数据库的数据文件或日志文件的大小
  3. 第三种方式是在数据库中增加新的次要数据文件或日志文件。

     如果数据库的设计尺寸过大了,或者删除了数据库中的大量数据,这时数据库会白白耗费大量的磁盘资源。根据用户的实际需要,可以收缩数据库的大小。 在Microsoft SQL Server系统中,有三种收缩数据库的方式。

  1. 第一种方式是设置数据库为自动收缩,这可以通过设置AUTO_SHRINK数据库选项实现。
  2. 第二种方式是收缩整个数据库的大小,这可以通过使用DBCC SHRINKDATABASE命令完成。
  3. 第三种方式是收缩指定的数据文件,这可以使用DBCC SHRIKNFILE命令实现。

除了这些命令方式之外,也可以使用SQL Server Management Studio工具来收缩数据库

 

打开压缩对话框之后弹出下列对话框,可以直接点击确定,也可以勾选复选框,进行比例压缩。

3.6其他相关操作

     除了前面讲述的数据库操作之外,数据库管理操作还包括

     分离数据库

     附加数据库

     删除数据库

相关学习可以看《SQL Server 2005数据库管理高级教程》csdn上的免费书吧。

 

posted on 2010-02-22 15:28  MR_ke  阅读(1259)  评论(0编辑  收藏  举报

导航