SQL Server Express 2012 - 无法解释的持续磁盘活动

SQL Server Express 2012 - 无法解释的持续磁盘活动

我在 Windows 8.1 的台式机上安装了 Microsoft SQL Server Express 2012,以便自学 SQL(并最终处理一些数据)。我还在使用 SQL Server Management Studio。

SQL Server 总是毫无理由地占用我的磁盘空间。磁盘活动太多了,我不太愿意运行该程序,因为我不想耗尽我的驱动器。

以下是我可以肯定的事情:

1.如果我从命令行(net stop mssqlserver)停止 SQL Server,磁盘活动就会停止。

2.如果我从命令行(net start mssqlserver)重新启动 SQL Server 并且不在 SQL Server Management Studio 中,则磁盘活动不会恢复。

3.如果我打开 SQL Server Management Studio、连接到服务器(即桌面)并且不执行任何其他操作,则磁盘活动不会恢复。

4.我打开查询窗口(使用“新查询”)按钮后,磁盘活动就开始了,在我做其他任何事情之前。如果我不做任何事情就关闭窗口,磁盘活动将继续进行。

5.在 SSMS 中的活动监视器中,我看到一个进程正在运行:对 tempdb 执行 SELECT。但我没有运行任何查询。

知道可能发生了什么吗?我不想为了运行 SQL Server Express 而不做任何事情而不断无意义地磨损硬盘。

更新:除了 SSMS 中显示的“系统数据库”外,我只有三个数据库。一个是 Microsoft 的 AdventureWorks2012 数据库,用于培训。另一个是几乎没有数据的数据库,也是基于一本书。第三个是我加载到数据库中的两个文本文件。

我理解为什么这些信息通常是相关的,并且我也理解只要有数据库活动(更新、选择、插入),SQL Server 就会处于活动状态。

我想说的是,当我什么都不做的时候,SQL Server 会不断访问我的磁盘。我没有运行任何查询。我所做的就是启动 SQL Server、启动 SSMS 并打开一个新的查询窗口。然后就会发生持续的磁盘活动。

活动监视器显示一些“最近的昂贵查询”,这些查询必须是系统发起的,因为我没有发起任何查询,但由于我是新手,所以我无法发布屏幕截图。

我希望可以更改与 SQL Server 后台进程相关的某种全局设置。鉴于我根本没有运行任何查询,我认为持续的磁盘活动不是预期行为。

答案1

如果不知道您有多少个数据库等,我很难具体说明,但我会说 SQL Server 既占用大量内存又占用大量磁盘。

内存:SQL 喜欢将尽可能多的数据加载到内存中以获得更好的性能,因为内存比访问磁盘的速度更快。

磁盘 IO:SQL 几乎不断地写入事务日志。 记录事项列表包括:

  • 每笔交易的开始和结束。
  • 每次数据修改(插入、更新或删除)。这包括系统存储过程或数据定义语言 (DDL) 语句对任何表(包括系统表)所做的更改。
  • 每个范围和页面的分配或释放。
  • 创建或删除表或索引。

Brent Ozar 有一篇关于 SQL Server 如何存储数据的非常好的文章这里

至于 SQL Server Management Studio,当您通过 SSMS 连接到 SQL Server 时,它会查询服务器以生成数据库列表等。

简而言之,如果没有更多信息,我并不惊讶 SQL 正在使用您的硬盘。要获取有关正在运行的内容的更多信息,sp_WhoIsActive太棒了。如果真的有什么奇怪的事情发生,这可能会帮助你找到它。

相关内容