彩票走势图

使用SQL Monitor避免耗尽磁盘空间(中):监视数据库文件中的可用空间

翻译|使用教程|编辑:莫成敏|2019-12-31 13:53:14.673|阅读 273 次

概述:SQL Monitor不仅自动收集您需要的所有磁盘和数据库增长跟踪数据,而且还分析这些数据的趋势以准确预测何时磁盘卷会耗尽可用空间,或数据库文件何时需要增长。本文为第二部分内容——监视数据库文件中的可用空间。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

SQL Monitor是一个SQL Server监控工具。它可以监控SQL Servers的健康状况和活动,并通过电子邮件为您发送监测结果和建议。

点击下载SQL Monitor免费版

SQL Monitor不仅自动收集您需要的所有磁盘和数据库增长跟踪数据,而且还分析这些数据的趋势以准确预测何时磁盘卷会耗尽可用空间,或数据库文件何时需要增长。本教程内容较多,分为三个部分发布,这篇文章是第二部分——监视数据库文件中的可用空间


监视数据库文件中的可用空间
创建数据库时,我们将确定数据和日志文件的初始物理大小,以及自动文件增长增量。当然,最初文件中的大多数空间都是可用空间,但是随着时间的推移,它将用于(分配)存储数据,并且在事务日志中,记录了描述数据更改的记录。

当我们添加新数据时,数据文件中的空间将分配给存储该数据的表和索引。当数据文件已满时,它将需要增长。如果我们监视数据文件中空间的使用率以及剩余的可用空间,我们可以预测文件何时需要增长,并可以做出相应的计划,而不必依赖不可预测且昂贵的文件自动增长事件(稍后会有更多介绍)。

我们还可以监视事务日志文件中的可用空间,尽管这更为复杂,因为日志的行为更像是环形缓冲区。一旦填满,它将绕行并开始覆盖先前提交的事务的日志记录,除非有不能这样做的原因,在这种情况下日志需要增长。

随着时间的推移,通过跟踪数据库文件中的空间使用情况,我们将更好地了解每个数据库的增长特征,并能够更准确地调整文件大小,以适应将来的数据增长。

临时跟踪数据库文件中的空间使用情况

为了临时检查数据库如何使用磁盘空间,我们可以使用内置的SSMS报告。只需右键单击任何数据库,然后选择Reports | 标准报告。“磁盘使用情况”报告提供了为数据库保留的总空间的详细信息,并分别提供了数据和日志文件,然后提供了饼图,显示了文件中当前的空间使用情况。它还显示任何最近的文件自动增长事件。“按表排列的磁盘使用情况”报告将向您显示哪些表分配了最多的空间,因此也占用了最多的磁盘空间。

对于脚本检查,您可以查询sys.database_files视图以获取数据库的总大小(稍后介绍),以及有关每个数据库的单个数据和日志文件的大小,以及每个数据库中使用的空间的详细信息。您还可以使用sys.dm_db_file_space_usageDMV 细化当前分配给数据库对象的数据文件中的空间量(也用于SQL Monitor中数据库对象自定义度量标准使用的空间)。

如果数据库增长异常迅速,您需要知道数据库中分配给该对象(表和索引)的空间。您可以使用该sys.allocation_units视图查看数据库中所有对象的空间分配明细。或者,您可以使用sp_spaceused系统存储过程,并提供要调查的表的名称。

使用SQL Monitor监视数据文件中的空间使用

在任何受监视的SQL Server实例的SQL Monitor的“概述”页上的“数据库”部分中,我们可以看到实例上每个数据库的数据和日志文件的当前物理大小,以及直到文件满为止的预计时间,并且需要自动增长,或者磁盘本身已满。
使用SQL Monitor避免耗尽磁盘空间(中):监视数据库文件中的可用空间
图5

为了避免被“突然变满”的数据库文件吓到,我们可以在SQL Monitor中通过内置的数据库文件使用率指标来跟踪数据文件的使用。

使用SQL Monitor避免耗尽磁盘空间(中):监视数据库文件中的可用空间

图6

这个指标背后的想法是在数据库文件需要增长时提前警告您。而不是简单地等待它自动增长,这可能是非常破坏性的,取决于自动增长发生的时间,您有时间来研究增长的趋势,任何异常增长的原因,并根据需要计划维护时间来增长文件。

当前,日志文件禁用此警报,因为基于历史增长无法预测日志文件的使用模式(在下一节中将对此进行更多介绍)。master model,msdb和tempdb数据库也禁用该功能。对于数据库的数据文件,您可以选择在三个不同阈值被突破时发出警报:

  • 剩余时间:这是默认时间,当数据文件填充之前的剩余时间少于指定时间时,将触发此值。剩余时间的计算方法是:使用数据文件的30天数据得出一条最适合的拟合线,并使用此线性回归来预测文件的当前大小。
  • 百分比已满:当数据文件中使用的空间超过指定百分比时引发。
  • 剩余空间:当可用空间小于固定量时引发。

因此,例如,您可以选择在文件已满的时间少于2周,或达到90%或少于500 MB的可用时间时接收警报。

您还可以配置此警报,以便在使用的空间增加时自动升级。例如,您可以在所使用的空间是70%时指定警报,然后在空间上升到85%时将其升级为中等警报,在空间超过95%时将其升级为警报。在警报内,您将看到一个显示文件使用历史的图表。

使用SQL Monitor避免耗尽磁盘空间(中):监视数据库文件中的可用空间

图7

这条淡蓝色的线和带阴影的蓝色区域显示了实际的文件大小,您可以看到文件增长的“跳转”。黑线表示文件内空间分配的增长,橙色虚线表示预计的文件使用情况

橙色和浅蓝色线相交的位置指示文件何时已满,因此将触发下一个文件自动增长事件(假设磁盘未满)。如果那段时间给您的业务带来不便,那么您可以计划一个时间来手动增加文件大小。

通过检查警报历史记录,警报的频率和时间,您可以评估数据文件的增长方式以及如何进行优化。与所有SQL Monitor警报一样,在激发警报时,您还会为主机提供许多其他有用的性能统计信息,例如处理器时间、平均磁盘队列长度、内存使用率、传输速度等。

如果数据文件中的空间使用异常迅速,则需要进行调查。如果您知道数据库中的某些表是数据增长的温床,那么您可以使用SQL Monitor(查询sp_spaceused)中的表大小(MB)自定义指标来跟踪它们随时间的增长。

使用SQL Monitor监视日志文件中的空间使用

跟踪日志文件中的空间使用情况(以预测何时需要自动增长)更加复杂。当我们修改数据(插入、删除或更新)或任何数据库对象时,SQL Server将描述每个更改的日志记录写入事务日志中。当日志文件已满时,SQL Server将通过覆盖旧的日志记录来重用日志中的空间,只要没有阻止它的行为,例如长时间运行的事务或缺少日志备份(对于使用FULL或BULK LOGGED恢复的数据库)模型)。

假定没有其他原因不能这样做,SQL Server将定期截断日志,以便可以在日志备份之后或在某个CHECKPOINT过程(对于SIMPLE恢复模型数据库)之后重用现有空间,等等。日志空间将以循环方式而不是线性方式重用。

但是,如果您知道给定数据库修改的频率以及日志备份的频率,则您希望某个特定数据库的日志文件得到多少填充,那么您可能希望使用SQL Monitor的已用日志空间自定义百分比来接收,如果警报超过特定阈值,则为警报。

本教程内容尚未完结,欢迎大家关注我们了解更多文章资讯~您也可以下载SQL Monitor试用版免费测评~

相关内容推荐:

使用SQL Monitor避免耗尽磁盘空间(上):监视磁盘上的可用空间


想要购买SQL Monitor正版授权,或了解更多产品信息请点击




标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn

文章转载自:

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP