图9-3 使用者自订档案群组分散放置于数个RAID控制卡
要对数据文件进行 Stripping 时,SQL Server 会比较每一个档案的可用空间,然后再依比例将数据分别写入到每一个档案中(而非将所有数据写入第一个档案,等到写满之后,再写入下个档案)。数据表和索引的空间依 范围 (extend)配置。 范围 是配置空间给数据表与索引的基本单位,一个范围包含8个分页(page),每一分页为8KB,所以一个范围单位即有64KB。举例来说,如果档案F1有400 MB的可用空间;档案F2有100 MB的可用空间,如果要将5个范围依比例性填满策略写入档案,则4个范围分配给F1,1个范围分配给F2。如此一来,这两个档案将在大致相同的时间填满,使跨磁盘分配的I/O效能更好。无论F1和F2档案属于使用者自订档案群组,还是属于主要档案群组,都会依比例将数据分别写入。如果档案群组中的所有档案的开始尺寸都一样,当数据加载时,会平均配置到每一个档案。建议将档案群组内所有档案的开始尺寸设为相同,使数据跨磁盘平均配置,以达到I/O平均分配的目的。
档案群组的另一个好处是可依档案或档案群组为主进行数据库备份。如果您的数据库太大,不能一次备份全部内容,可径自备份数据库中的档案或档案群组,无需一次备份整个数据库。本书 第32章 会详细介绍如何利用档案群组作部分备份。
规则和建议
使用档案和档案群组时,记住以下的 SQL Server 2000 规则:
• 档案和档案群组只能用于一个数据库。
• 一个档案只能属于一个档案群组。
• 数据和交易记录文件数据不能在同一个档案中。记录文件空间和数据文件空间应分别管理。
• 交易记录文件档案不是档案群组的一部分。
• 数据库一旦建立了档案,此档案就不能移动到另一个档案群组中,除非您删除这个档案,并重新建立档案。
为了协助您设计数据库,下面是几个使用档案和档案群组时的建议:
• 大多数的数据库只需要一个数据文件和一个交易记录文件即可顺利运作。对于I/O不是特别密集的数据库,建议使用这种设计。
• 如 第5章 所述,记录档案与数据文件必须放置于不同的实体磁盘中。
• 如果需要使用多个数据文件,可设定主要数据文件用于储存系统数据表和对象,而使用者的数据和对象则另设一个或多个次要数据文件来储存。
• 为了得到最好的效能,尽可能将档案和档案群组跨多个实体磁盘建立,以利用到最多数量的平行磁盘I/O。
• 将经常存取的数据表和这些数据表所包含的非丛集索引,以档案群组的方式放在与数据表不同的实体磁盘内。若档案位于不同的磁盘中,则将藉由平行的I/O而改善效能。(索引将在 第17章 中讨论。)
• 如果可能的话,把同一个查询中使用的数据表存放在不同的实体磁盘上,这样当您搜索数据时,就能利用到平行磁盘I/O。
当一个系统大量的使用 RAID 及很多磁盘,最后两项建议不一定适用。如果您有许多磁盘,您应该尽可能地把索引和数据表分散到不同的磁盘上,以利用到最多数量的平行磁盘I/O。
自动档案成长
SQL Server 允许档案依需要自动成长。当建立档案时,您可以指定 SQL Server是否允许自动成长。建议将档案设为允许自动成长(默认值也是设定在允许自动成长),因为它能减少管理员手动监控和增加档案空间的负担。
档案建立时有一个起始的大小。当起始的空间大小填满时,SQL Server 将依指定的成长量增加档案空间,这个成长量称为 成长递增值 (growth increment),当新的空间填满,SQL Server 又会分配新的成长递增值。数据文件会依需要按指定的量成长,直到磁盘已满或达到最大档案尺寸为止(如果有指定的话)。
________________________________________
说明
档案自动成长不同于依比例写入的方式。档案自动成长是指当档案填满时,SQL Server 将自动增加档案空间;而按比例写入是指 SQL Server 根据档案的剩余空间,将数据依比例存放,而不增长档案的空间。
________________________________________
最大档案尺寸档案即为所能成长到的最大尺寸。这个值是档案建立时指定的,可使用 Enterprise Manager 或 ALTER DATABASE 命令更改最大档案尺寸的值。如果没有设定档案的最大尺寸,SQL Server 可让档案依需要成长,直到磁盘空间用完为止。为了避免磁盘驱动器出现磁盘空间不足,导致 SQL Server 错误,您应该为每一个档案设定最大尺寸。如果档案确实成长到最大尺寸,您还可以利用 ALTER DATABASE 陈述式重设最大档案尺寸、或是当磁盘还有空间时,在磁盘上新增另一个档案。如果档案允许无限制扩大(依预设),当磁盘空间用尽,您就必须将档案建立在另一个有剩余空间的磁盘上。
您应该使用档案自动成长和最大档案尺寸作为设计时的规则。当建立数据库时,将档案设定到可能会成长到的最大尺寸。虽然档案的成长可设成依需要自动成长,但仍建议您定期监控档案的成长,这样可帮助您预估档案未来的成长,并决定是否应修改数据库以增加更多档案。
系统数据库
当您安装 SQL Server 时,将会建立四个系统数据库:master、tempdb、model和msdb数据库。
• master 记录系统层级的信息、SQL Server 的安装信息和组态设定,并记录所有的登入账号、其它已经存在的数据库,以及所有使用者数据库主要档案的储存位置。您应当保存最新的master数据库的备份。
• tempdb 用来掌控临时的数据表和临时预存程序。此数据库也用于 SQL Server 的临时储存所需,例如对数据进行排序。每次 SQL Server 启动时,会根据 model 的预设尺寸重新建立一个tempdb数据库的干净副本。然后它会根据需要自动成长。如果您需要较大的 tempdb 数据库空间,您可以使用 ALTER DATABASE 命令来设定一个更大尺寸的默认值。在在线丛书搜寻 tempdb 数据库可获得更多信息。
• model 系统会建立其它数据库的模板,其中也包括 tempdb 数据库。当建立数据库时,第一部分是建立 model 数据库的备份。数据库的其余部分则由空白分页填充。系统中必须有 model 数据库,因为每次当 SQL Server 启动时,便需要使用 model 数据库来重建 tempdb 数据库。您也可以修改 model 数据库,使其包括使用者自订的数据型态、数据表等,以便您建立的每一个新数据库都包括这些属性。在在线丛书搜寻 model 数据库可获得更多信息。
• msdb SQL Server Agent 使用它来排定工作、警示和记录操作者信息。( 操作者 (Operator)是被指定负责工作和警示的人。)
每一个系统数据库都有自己的主要数据文件和记录档案。数据库储存在安装SQL Server 时为系统档案指定的目录中。
建立数据库
SQL Server 提供三种建立数据库的方法:使用 建立数据库精灵 、SQL Server Enterprise Manager 和 T-SQL 指令。T-SQL 指令能储存在档案中并作为指令码来执行。下面将讨论这三种方法:
使用 建立数据库精灵 要注意它的一些限制。如果您使用精灵来建立数据库,所建立的数据文件都会放在您指定的单一磁盘中,因为精灵建立数据库的过程中不会有让您指定档案在其它位置的步骤(也就是说除了刚开始指定的位置,在精灵的安装过程中,所有建立的数据文件都会指定到相同的磁盘和档案内)。记录文件可以放在和数据文件不同的磁盘或档案内,不过也只能存放在单一磁盘中。使用者自订群组是不能被指定的,而且其中的档案将继承同样的增长选项。碍于这些限制,当数据库中只需要一个主要数据文件和交易记录档案时,才建议使用 建立数据库精灵 。
如果您想把次要数据文件放在与主要档案数据不同的磁盘中,或是您想增加使用者自订的档案群组,或者您需要替每个档案指定增长选项,就必须使用 Enterprise Manager 或 T-SQL 指令码来建立数据库。
使用建立数据库精灵
如果您是建立数据库的新手,您可以使用 建立数据库精灵 来建立数据库。以下是使用精灵的步骤:
1. 开启 SQL Server Enterprise Manager,选择一个服务器来建立数据库(先按一下在 Microsoft SQL Servers 这个数据夹名称旁边的加号展开资料夹,再展开 SQL Server 群组数据夹,就可以看到已注册的服务器)。选取一个服务器后,选取菜单上的 工具/精灵 进入 选择精灵 对话框,展开 数据库 ,如图9-4所示。
图9-4 「选择精灵」画面
2. 按两下 建立数据库精灵 开启 欢迎使用建立数据库精灵 对话框,如图9-5所示。
图9-5 「欢迎使用建立数据库精灵」对话框
3. 按一下 下一步 到 为数据库命名并指定其位置 (如9-6所示),输入数据库名称、数据库档案及交易记录文件的存放路径。如果您选择 ... 则可以浏览档案。路径指定后按 下一步 继续下一个步骤。
图9-6 「为数据库命名并指定其位置」画面
________________________________________
说明
本节的图将会从头显示如何建立一个叫做MyDB的数据库,这个数据库的主要数据文件放在C:\mssql2k\MSSQL\data,记录文件放在D:\mssql2k\MSSQL\data。
________________________________________
4. 图9-7是 为数据库档案命名 的画面。您可以设定每一个数据库的文件名称和起始大小。主要数据文件会自动使用数据库名称作为前置字,您可以接受或自行输入名称,扩展名为 .MDF。如果您知道数据库档案的大小,可直接输入起始大小值,否则建议您保留默认值,将来可利用 Enterprise Manger 或 ALTER DATABASE 指令来变更。除了一开始设定的主要档案,其它建立的档案是次要档案,并自动给予档案 .NDF这个扩展名。这些档案将存放在与主要档案位置相同的目录中。按一下 下一步 继续。当使用 建立数据库精灵 时就没有 使用者自订档案群组 这个选项。
在范例中,我们保存原预设的主要档案(MyDB_Data),新增一个次要档案并命名为MyDB_Data2。两个档案会同时放在步骤3所指定的位置。如果所指定的档案夹或档案群组是放在您