数据库文件和文件组
在初始部署阶段、在ONTAP上正确放置SQL Server数据库文件至关重要。这样可以确保最佳性能、空间管理、备份和还原时间、并可根据您的业务需求进行配置。
从理论上讲、SQL Server (64位)支持每个实例32、767个数据库以及524、272 TB的数据库大小、尽管典型安装通常包含多个数据库。但是、SQL Server可以处理的数据库数量取决于负载和硬件。SQL Server实例托管数十个、数百个甚至数千个小型数据库的情况并不少见。
每个数据库由一个或多个数据文件和一个或多个事务日志文件组成。事务日志存储有关数据库事务以及每个会话所做的所有数据修改的信息。每次修改数据时、SQL Server都会在事务日志中存储足够的信息、以便撤消(回滚)或重做(重放)操作。SQL Server事务日志是SQL Server在数据完整性和稳定性方面声誉的重要组成部分。事务日志对于SQL Server的运行异常、一致性、隔离和持久性(ACID)功能至关重要。一旦对数据页面进行任何更改、SQL Server就会写入事务日志。每个数据操作语言(DML)语句(例如SELECT、INSERT、UPDATE-DELETE)都是一个完整的事务、事务日志可确保执行整个基于集合的操作、从而确保事务的正常运行。
每个数据库都有一个主数据文件、默认情况下、该文件的扩展名为.mdf。此外、每个数据库都可以具有二级数据库文件。默认情况下、这些文件的扩展名为.NDF。
所有数据库文件都分组到文件组中。文件组是逻辑单元、可简化数据库管理。它们允许在逻辑对象放置和物理数据库文件之间进行隔离。创建数据库对象表时、您可以指定应将其放置在哪个文件组中、而不必担心基础数据文件配置。
通过将多个数据文件放在文件组中、您可以将负载分布在不同的存储设备上、这有助于提高系统的I/O性能。相反、事务日志不会从多个文件中受益、因为SQL Server会按顺序写入事务日志。
通过将文件组中的逻辑对象放置与物理数据库文件分隔开、您可以微调数据库文件布局、从而最大程度地利用存储子系统。支持指定工作负载的数据文件数量可以根据需要进行更改、以支持I/O要求和预期容量、而不会影响应用程序。数据库布局中的这些变化对于应用程序开发人员来说是透明的、他们将数据库对象放在文件组中、而不是数据库文件中。
* NetApp建议*避免将主文件组用于除系统对象之外的任何其他对象。为用户对象创建单独的文件组或一组文件组可简化数据库管理和灾难恢复、尤其是在大型数据库的情况下。 |
您可以在创建数据库或向现有数据库添加新文件时指定初始文件大小和自动增长参数。SQL Server在选择应将数据写入哪个数据文件时使用比例填充算法。它会将大量数据按比例写入文件中的可用空间。文件中的可用空间越多、它处理的写入就越多。
* NetApp建议*单个文件组中的所有文件都具有相同的初始大小和自动增长参数,并且增长大小以MB而不是百分比为单位定义。这有助于比例填充算法均匀地平衡数据文件之间的写入活动。 |
每当SQL Server增加文件大小时、它都会用零填充新分配的空间。该进程会阻止所有需要写入相应文件的会话、或者在事务日志增长时生成事务日志记录。
SQL Server始终将事务日志零、并且此行为无法更改。但是、您可以通过启用或禁用即时文件初始化来控制数据文件是否置零。启用即时文件初始化有助于加快数据文件增长速度、并减少创建或还原数据库所需的时间。
即时文件初始化会带来较小的安全风险。启用此选项后、数据文件的未分配部分可能包含先前删除的操作系统文件中的信息。数据库管理员可以检查此类数据。
您可以通过向SQL Server启动帐户添加SA_Manage_volume_name权限(也称为"执行卷维护任务")来启用即时文件初始化。您可以在本地安全策略管理应用程序(secpol.msc)下执行此操作、如下图所示。打开"Perform volume Maintenance Task (执行卷维护任务)"权限的属性、并将SQL Server启动帐户添加到其中的用户列表中。
要检查权限是否已启用、您可以使用以下示例中的代码。此代码设置了两个跟踪标志、用于强制SQL Server将追加信息写入错误日志、创建小型数据库以及读取日志内容。
DBCC TRACEON(3004,3605,-1) GO CREATE DATABASE DelMe GO EXECUTE sp_readerrorlog GO DROP DATABASE DelMe GO DBCC TRACEOFF(3004,3605,-1) GO
如果未启用即时文件初始化、则SQL Server错误日志会显示、除了将ldf日志文件置零之外、SQL Server还会将MDF数据文件置零、如以下示例所示。启用即时文件初始化后、它仅显示日志文件置零。
在SQL Server 2016中、执行卷维护任务得到了简化、稍后在安装过程中作为一个选项提供。此图显示了为SQL Server数据库引擎服务授予执行卷维护任务权限的选项。
控制数据库文件大小的另一个重要数据库选项是自动缩放。启用此选项后、SQL Server会定期缩减数据库文件、减小其大小并向操作系统释放空间。此操作会占用大量资源、并且很少有用、因为新数据进入系统一段时间后、数据库文件会再次增长。不应在数据库上启用自动缩放。