【文档说明】SQLServer数据库结构和管理课件.ppt,共(56)页,1.274 MB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-92296.html
以下为本文档部分文字说明:
优秀精品课件文档资料SQLServer第3章SQLServer数据库结构和管理第3章SQLServer数据库结构和管理3.1数据库物理存储结构3.2数据库的逻辑组织3.3数据库创建与管理3.4数据库选项设置3.1数据库物理存储结构3.1.1数据库文件和文件组3.1.2数据文件
的使用分配3.1.3事务日志文件结构3.1.1数据库文件和文件组1.主数据库文件(PrimaryDatabaseFile):是数据库的起点,可以指向数据库中文件的其它部分。每个数据库都有一个主数据库文件。文件扩展名
一般是.mdf。2.次数据库文件(SecondaryDatabaseFile):有些数据库可能没有次数据文件,而有的数据库则有多个次数据文件。文件扩展名多是.ndf。3.事务日志文件:日志文件包含恢复数据库所需的所有日志
信息。每个数据库必须至少有一个日志文件,但可以不止一个。推荐的文件扩展名是.ldf。一个数据库文件组织的例子数据库文件组为了便于分配和管理,SQLServer允许将多个文件归纳为同一组,并赋予此组一个名称,这就是文件组。文件组能够控制各个文件的存放位置,其中的每个文件常建立在不同的硬
盘驱动器上,这样可以减轻单个磁盘驱动器的存储负载,提高数据库的存储效率,从而达到提高系统性能的目的。数据库文件组的好处在存储数据时,SQLServer采用按比例填充策略使用文件组内每个文件所提供的存储空间。例如,如果一个服务器上有4个可供数据库使用的硬盘,他们提供给数据库的
最大存储空间分别为100M,200M,300M和100M,我们可以在前面3个硬盘上建立一个数据文件组,包含三个文件,每个硬盘上分配一个文件,在第4个硬盘上建立数据库的日志文件,当发生数据库的读写操作时,日志数据写入第4个硬盘,而数据库数据写入前3个硬盘。在写入数据时,SQLServer
根据文件组内每个数据文件中剩余的空间大小按比例分配写入其中的数据量,即1:2:3,这样不仅保证文件组内每个文件的空间基本上同时用完,而且将一次磁盘操作同时分配给多个磁盘控制器,可以减轻每个磁盘的负载,从而提高写入速度。建立数据文件和文件组时,应注意以下两点:
每个数据文件或文件组只能属于一个数据库,每个数据文件也只能成为一个文件组的成员。也就是说,数据文件不能跨文件组使用,数据文件和文件组不能跨数据库使用。日志文件是独立的,它不能作为其他数据文件组的成员。即数据
库内的数据和日志不能存入相同的文件或文件组。主文件组和次文件组1.主文件组:包含主数据文件和所有没有被包含在其它文件组里的文件。在创建数据库时,如果未指定其他数据文件所属文件组,这些文件将归属于主文件组。数据库的系统表都包含在主文件组里,所以,当主文件组的空间用完后,将无法向系统表中添加新的目录
信息。2.次文件组:也称用户自定义文件组,包括所有使用数据库创建语句(CREATEDATABASES)或数据库修改语句(ALTERDATABASES)时使用FILEGROUP关键字进行指定的文件。3.默认文件组:任何时候,只能有一个文件组是默认文件组。默认情况下,主文
件组被认为是默认文件组。使用数据文件和文件组的建议:1.创建数据库时,允许数据文件能够自动增长,但要设置一个上限,否则有可能充满磁盘。2.主文件组要足够大以容纳所有的系统表。否则新的信息就无法添加到系统表,数据库也就无法追加修改。3.建议把频繁查询的文件和频繁修改的文件分放在不同的文
件组。4.把索引、大型的文本文件、图象文件放到专门的文件组里。3.1.2数据文件的使用分配在SQLServer中,数据文件存储的基本单位是页。在SQLServer中,页的大小是8KB。这意味着SQLServer数据库每兆字节有1
28页。每页的开始部分是96字节的页首,用于存储系统信息,如页的类型、页的可用空间量、页对象ID等。根据页面所存储的不同信息,可以将它划分为8种页类型。1.基本知识2.数据页面存储格式(1)数据页面数据页包含数据行中除text、nte
xt和image数据外的所有数据,页首占用每个数据页的前96个字节,剩余的8096字节用于数据和行偏移数组。2.数据页面存储格式(2)数据行紧跟着页头的就是存储表的真正数据行区域。单个数据行的最大长度是8060字节。数据行不能跨页存储(文本和图像例外)
。页内数据行的多少依赖于表的结构和要存储的数据。如果一个表的所有列都是定长,那么该表在每一页上存储相同数目的行。如果一个表里有变长列,那么该表总是在每一页上存储尽可能多的行。数据行越短,每一页存储的行数就越多。2.数据页面存储格式(3)行偏移数组当单行数据长度为最大80
60字节时,行偏移数组占用8096-8060=36个字节。但实际中一个数据行大多不是8060字节,往往比这个小,所以数据行占用的总字节数目和行偏移数组占用的总字节数是系统动态调整,数据行字节越少,偏移数组字节越多
,反之,数据行字节越多,偏移数组字节越少,但不能少于36个字节。每两个字节构成一个条目块,每个条目表示页中相关数据行开始的偏移量。注意:行偏移数组表示的是页中数据行的逻辑顺序,不是物理顺序。真正的物理顺序与聚集索引有关。2.数据页面存
储格式(4)页面链接每个表或索引视图的数据行一般都分开存储在多个8KB数据页中。如上面所述,每个数据页都有一个96字节的页头,其中包含拥有该页的表的标识符(ID)这样的系统信息,也包含指向下一页及前面用过的页的指针。3.空间使用分配管理SQLServer
向表或索引分配空间的基本单位为区域,一个区域长度为8个连续的页面,也就是64KB。区域分为以下两种类型:•统一区域:区域中的8个页面只能存储同一种数据库对象。•混合区域:区域中不同页面可以存储不同的数据库对象。但由于每个页面只能存储同一种数据库对象,所以一个混合区域最
多可存储8种数据库对象。3.空间使用分配管理•全局分配映射(GlobalAllocationMap,简称GAM)页面:GAM页面中的每一位记录一个区域的分配情况,当位值为1时,说明区域为空闲区域;当位值为0时,表示区域已经被分配使用。由于每个页面大小为8KB,所以一个GAM页
面能够覆盖64000个区域,即4GB。•共享全局分配映射(SharedGlobalAllocationMap,简称SGAM)页面:SGAM页面用于记录有空闲页面的混合区域。每个SGAM页面覆盖64000个区域。当位值为1时,说明区域为混合区域,并且其中
有空闲页面;当位值为0时,说明相应的盘区没有被用作混合区域,或者它是一个没有空闲页可分配的混合区域。4.索引分配映射管理SQLServer使用索引分配映射(IAM)页面管理堆或索引所分配区域的使用情况。每个IAM页面的页面头记录该IAM页面所映射区域范围的起始区域
,其映射区中的每一位说明一个区域的使用状态,其中第一位代表IAM页面所映射区域范围内的第一个区域,第二位代表第二个区域等等。当映射区中某位为0时,说明该位所映射区域仍未分配给拥有该IAM页面的对象使用;当其值为1时,说明该位所映射区域已经分配给
拥有该IAM页面的对象使用。5.页面自由空间管理当一个区域分配给某个数据库对象时,SQLServer使用PFS(PageFreeSpace)页面记录区域内的单个页面是否分配使用,以及页面中的空间使用情况:即全部空闲、1%~50%满、51%~80%满、81%~95%满
,还是96%~100%满。当SQLServer需要分配新的页面,或者查找有自由空间页面时,它使用PFS页面中所记录的这些信息。3.1.3事务日志文件结构1.事务日志SQLServer在内存中建立了一个缓冲区,在检索
数据时,它将数据读入该缓冲区中,而在修改数据时,它并不是直接修改磁盘中的数据,而是先在缓冲区中建立修改数据副本,之后在页面刷新时再将它们写入磁盘。这样做可以提高数据处理速度,减少磁盘读写次数。在缓冲区中被修改后而没有写入磁盘的页面称作“脏页”,“脏页”由SQLSe
rver迟写进程定期写入磁盘,这一操作叫做“页面刷新”。每当对缓冲区中的数据页面进行修改时,SQLServer自动在日志缓存中构造该操作的日志记录。3.1.3事务日志文件结构2.事务日志的物理存储一个
数据库事务日志可以对应一个或多个物理文件,SQLServer在内部又将每个物理日志文件分成许多个虚拟日志文件。虚拟日志文件没有固定大小,且物理日志文件所包含的虚拟日志文件数不固定。3.1.3事务日志文件结构事务日志是回绕的日志
文件。例如,假设有一个数据库,它包含一个分成5个虚拟日志文件的物理日志文件。当创建数据库时,逻辑日志文件从物理日志文件的始端开始。在逻辑日志的末端添加新的日志记录,逻辑日志就向物理日志末端增长。截断操作发生时,删除最小恢复日志序号(MinLSN)之前的虚拟日志内
的记录,这部分日志记录所占用的空间即可被重复使用。3.1.3事务日志文件结构当逻辑日志的末端到达物理日志文件的末端时,新的日志记录绕回物理日志文件的始端,如图所示。这个循环不断重复,只要逻辑日志的末端不到达逻辑日志的始端。如果经常
截断旧的日志记录,使得总能为下一个检查点创建的所有新日志记录保留足够的空间,那么日志永远不会填满。3.2数据库的逻辑组织3.2.1数据库构架3.2.2系统数据库3.2.3用户数据库3.2.1数据库构架数据库存储是按物理方式在磁盘上作为两个或更多的文件实现。用户使用数据库时使用的主要是逻
辑组件,例如表。3.2.1数据库构架每个SQLServer实例有四个系统数据库(master、model、tempdb和msdb)以及一个或多个用户数据库。3.2.2系统数据库数据库文件物理文件名默认大小典型安装master主数据Master.mdf11.0MBmaster日
志Mastlog.ldf1.25MBtempdb主数据Tempdb.mdf8.0MBtempdb日志Templog.ldf.5MBmodel主数据Model.mdf.75MBmodel日志Modellog.ldf.
75MBmsdb主数据Msdbdata.mdf12.0MBmsdb日志Msdblog.ldf2.25MB1.master数据库master数据库由系统表组成,记录了安装以及随后创建的所有数据库的信息。包括数据库所用磁盘空间、文件分配、空间使
用率、系统级的配置设置、登录帐户密码、存储位置等。master数据库是系统的关键,不允许任何人对它进行修改。必须经常保留一份它的当前备份的拷贝。2.tempdb数据库tempdb数据库记录了用户创建的所有临时表、临时数据和临时的存储过程。该数据库是一个全局
资源,允许所有可以连接上的SQL服务器访问。注意,每次SQLServer重新启动,该数据库被重新创建而不是恢复,所以以前用户创建的任何临时对象(表、数据、存储过程等)都将丢失。也就是说,每次SQLServer重启,tempdb数据库都是空的。3.model数据库
model数据库是建立新数据库的模板。每当创建一个新的数据库时(比如用SSMS去创建,或用CREATEDATABASE创建),SQLServer就会根据model数据库的内容来形成新数据库结构的基础,把后面初始化为空,以准备放数据;同时将系统
表复制到刚创建的数据库中去。严格禁止删除model数据库,否则SQLServer系统将无法使用。4.msdb数据库msdb数据库是由SQLServerAgent服务使用的数据库。由于SQLServerAgent
主要执行一些事先安排好的任务,所以该数据库多用于进行复制、作业调度以及管理报警等活动。如果不使用代理服务功能,我们可以忽略这个数据库。两个示例数据库Pubs数据库:是一个图书出版公司的数据库模型,包含了大量的样本表和样本数据,以及表表间的关系,是供用户学习使用。
Northwind数据库:是一个贸易公司的数据库模型。该公司就叫“Northwind”。该数据库比pubs数据库要复杂些,也大一些。3.2.3用户数据库在SQLServer中,一个用户数据库是由用户定义的、用来永久存储像表和索引这样的数据库对象的磁盘空间构成,这些空间被分配在一个
或多个操作系统文件上。用户数据库和系统数据库一样,也被划分成许多逻辑页(每个逻辑页的大小是8KB),在每个数据库文件中页是从0到X连续编号,上限值X是由文件的大小决定的。通过指定数据库ID、文件ID和页号,可以引用任何一页。当扩大文件时,新空
间被追加到文件的末尾。用户数据库在sys.databases视图中的记录使用CREATEDATABASE语句创建一个新的用户数据库,该数据库就被赋予一个惟一的数据库ID,或者说database_id,同时在master数据库中的sys.databases视图中就会插入一个新行。3.3数据库
创建与管理3.3.1创建数据库3.3.2管理数据库3.3.1创建数据库1.准备创建数据库(1)确定数据库的名称、所有者(创建数据库的用户)(2)确定存储该数据库的数据文件的初始大小及文件空间增长方式、日志、备份和系统存储参数等配置。数据库:教学管理数据文件逻辑名称
:教学管理_data;日志文件逻辑名称:教学管理_log。数据文件存储:D:\server\MSSQL\Data\教学管理_data.mdf,初始大小3MB,最大空间20MB,增加量2MB,主文件中包含数据
库的系统表。日志文件存储:D:\server\MSSQL\Data\教学管理_data.ldf,初始大小2MB,最大空间20MB,增加量2MB。2.创建数据库实例分析方法一:使用SSMS创建数据库实例3-1创建教学管理数据库。(1)在SSMS
中,在数据库文件夹下数据库图标上单击右键,选择新建数据库选项,就会出现下图所示的下拉菜单。(2)在常规页框中,要求用户输入数据库名称。输入新建数据库名称:教学管理方法二:使用Transact-SQL命令创建数据库语法如
下:CREATEDATABASE数据库名[ON[PRIMARY][<数据库逻辑名>[,…n][,<文件组名>[,…n]]][LOGON{<LOG_NAME>[,…n]}]FILENAME='数据库物理文件名'[,SIZ
E=size][,MAXSIZE={max_size|UNLIMITED}][,FILEGROWTH=growth_increment])[,…n]参数说明:(1)PRIMARY:该选项是一个关键字,指定主数据库文件,若没有给出这个关键字,则默认文件序列第一个是主数据文件。(2)LOGO
N:指明事务日志文件的明确定义。数据库逻辑名称:这是在SQLServer系统中使用的名称,是数据库在SQLServer中的标识符。(3)FILENAME:指定数据库所在文件的操作系统文件名称和路径,该操作系统文件名和NAME
的逻辑名称一一对应。(4)SIZE:指定数据库的初始容量大小。(5)MAXSIZE:指定操作系统文件可以增长到的最大尺寸。(6)FILEGROWTH:指定文件每次增加容量的大小,当指定数据为0时,表示文件不增长。
实例3-2:指定文件组,创建一个多数据文件和日志文件的数据库该数据库名称为“教学练习”,其中数据文件“教学练习_data”分配20MB,属于文件组PRIMARY,“教学练习_data1”和“教学练习_data2”各分配
10MB,属于文件组stugroup。有1个10MB的事务日志文件。命令的程序清单createdatabase教学练习--数据库名称:教学练习onprimary--下面主文件属于主文件组(name=教学练习_data
,--对应数据库第一个逻辑文件名filename='d:\server\mssql\data\教学练习_data.mdf',--对应的主文件名和存储位置size=20,--初始分配的空间maxsize=15
0,--指出最大空间为150MBfilegrowth=10%),--空间增长按10%增长FILEGROUPstugroup--指定新的文件组,--下面文件属于stugroup文件组命令的程序清单(续)(name=教学练习_data1,--对应数据库第二个逻辑文件名filenam
e='d:\server\mssql\data\教学练习_data1.ndf',--对应的第一个次文件名和存储位置size=10,--初始分配的空间maxsize=100,--指出最大空间为100MBfilegr
owth=1),--空间增长按1MB增长(name=教学练习_data2,--对应数据库第三个逻辑文件名filename='d:\server\mssql\data\教学练习_data2.ndf',--对应的第二个次文件名和存储位置size=10,--初始分配的空间maxsize
=100,--指出最大空间为100MBfilegrowth=1)--空间增长按1MB增长命令的程序清单(续)logon--日志文件(name=教学练习_log,filename='d:\server\mssql\data\教学练习_log.ldf',si
ze=10,maxsize=50,filegrowth=1)3.3.2管理数据库1.修改数据库数据库创建后,主数据文件和日志文件的物理地址就不允许被改变和删除。但数据文件和日志文件的大小、增长方式等属性可以改变,可以增加或删除次数据文件、次日志文件、文件组。修改数据库
的方法有使用SSMS和使用SQL命令两种。使用SQL命令修改数据库语法格式:ALTERDATABASE数据库名{ADDFILE<filespec>[,...n][TOFILEGROUP文件组名]|ADDLOGFILE<filespec>[,...n]|REMOVEFI
LE数据库逻辑名|ADDFILEGROUP文件组名|REMOVEFILEGROUP文件组名|MODIFYFILE<filespec>|MODIFYNAME=数据库名|MODIFYFILEGROUP文件组名{NAME=新文件组名}参数说明:(1)filespec参数定义
如下:(NAME=数据库逻辑名[,NEWNAME=新数据库逻辑名][,FILENAME='数据库物理文件名'][,SIZE=size][,MAXSIZE={max_size|UNLIMITED}][,FILEG
ROWTH=growth_increment])(2)ADDFILE:指定要添加文件。(3)TOFILEGROUP:指定要将指定文件添加到的文件组。(4)ADDLOGFILE:指定要将日志文件添加到指定的数据库。REMOVEFILE:从数据
库系统表中删除文件描述并删除物理文件。只有在文件为空时才能删除。参数说明:(5)ADDFILEGROUP:指定要添加文件组。(6)REMOVEFILEGROUP:从数据库中删除文件组并删除该文件组中的所有文件。只有在文件组为空时才能删除。(7)MODIFYFILE:指定要更改给定的文件,更
改选项包括FILENAME、SIZE、FILEGROWTH和MAXSIZE。一次只能更改这些属性中的一种。必须在<filespec>中指定数据库逻辑名,以标识要更改的文件。(8)SIZE:指定数据库的初始容量大小。(9)MAX
SIZE:指定操作系统文件可以增长到的最大尺寸。(10)FILEGROWTH:指定文件每次增加容量的大小,当指定数据为0时,表示文件不增长。例3-3修改“教学练习”数据库方法一:使用SSMS其主数据文件的最大文件大小为文件增长不受限制。增加次数据文件教学练习_add,分配空间5MB,不允许自动增
长空间。删除教学练习_data1次数据文件。方法二:使用Transact-SQL命令修改教学练习数据库的程序清单:Alterdatabase教学练习--修改教学练习数据库modifyfile(--修改数据文件教学练习_dataname='教学练习_d
ata',maxsize=UNLIMITED)修改教学练习数据库的程序清单:Alterdatabase教学练习addfile(--增加数据文件教学练习_addname='教学练习_add',Filename='d:\server\mssql\data\教学练习_add.m
df',Size=5,Filegrowth=0--不允许自动增长)修改教学练习数据库的程序清单:Alterdatabase教学练习Removefile教学练习_data2--删除次数据文件教学练习_data2GOAlterdatabase教学练习
Addlogfile(--增加日志文件教学练习_addlogname='教学练习_addlog',Filename='d:\server\mssql\data\教学练习_addlog.ldf',Size=1,Maxsize=10,Filegrowth=1)2.删除数据库例3-6
删除数据库教学练习(为了后面还要使用该数据库,先不要真正删除)。方法一:使用SSMS。操作步骤如下:①在SSMS的“教学练习”数据库节点上,单击右键,在出现的快捷菜单中选择“删除”。②在弹出的对话框中选“是”按钮。方法二:使用使用Tran
sact-SQL命令利用Drop语句删除数据库Drop语句可以从SQLServer中一次删除一个或多个数据库。其语法如下:Dropdatabasedatabase_name[,…n]删除创建的数据库
教学练习。语句如下:dropdatabase教学练习--教学练习中所包含的文件都被删除