如何将系统资源保留到特定的SQL Server 2005数据库?

是否可以指定SQL Server 2005服务器内每个数据库实例可用的最小/最大数量的系统资源(磁盘IO,内存,CPU周期/秒)?

这将是SQL Server的QoS设置的类比。

不,他们都使用SQL Server实例的sqlservr.exe进程。

如果您需要pipe理数据库级资源,那么您需要一个单独的实例

一般来说,我发现同一个实例上的多个数据库通常是平衡的。 每个数据库都有它自己的使用模式,加载模式,用户数量等,而SQL Server在这个负载的基础上很好地pipe理缓冲池,计划caching,内存等。

如果你有一个数据库有一些不好的代码或猪资源,那么我build议它是自己的硬件或至less是实例。

里卡多 – 你的问题有点误导。 有两种方法来阅读它。

如果你指的是SQL Server实例中的数据库 ,那么你不能用SQL Server 2005做到这一点。SQL Server 2008引入了资源调控器,它实现了你所追求的目标,但并不完全。 它可以调节内存和CPU,但不是磁盘IO。

如果你的意思是在同一台计算机上有不同的SQL Server实例 ,那么你可以这样做。 每个实例都有自己的最小和最大内存设置。 在SQL Server Management Studio中,右键单击对象资源pipe理器中的实例名称,然后单击属性。 从那里你可以设置每个实例的最小和最大内存。 您也可以设置CPU关联掩码,这将允许您select一个实例可以使用的CPU。 如果你有一个双插槽的四核服务器(共8个核心),你可以分配一个实例到两个特定的核心,另一个实例分配到六个核心。 不幸的是,如果其中一个实例空闲,另一个实例将无法利用这些空闲内核。

在实例之间分离磁盘IO变得更加复杂。 如果您愿意将大量时间用于存储devise和path,则可以使用存储多path来分隔实例之间的stream量。 您可以将一个实例的数据和日志文件分配给特定的arrays,然后只通过特定的主机总线适配器(HBA)设置到该arrays的path。 如果这对你没有意义,那么让你的存储pipe理员参与进来,如果你没有SANpipe理员,那么你的工作(和金钱)就比你想要解决的要多。

使用SQL Server的命名实例(即多于一个sqlservr.exe进程),可以通过使用处理器关联性将实例的SQL Server调度器绑定到特定的CPU来限制CPU。 还有一个最大服务器内存设置,也是每个SQL Server实例指定的。

我不认为可以使用磁盘设置任何服务器范围的设置,但是至less您可以为您的数据库创build单独的LUN来驻留和分区负载。

在SQL Server 2008中有资源pipe理器 ,它允许您为工作负载设置非常复杂的规则,以及可以为每个数据库使用的资源数量。 也许升级是为了?

你可以通过使用虚拟机而不是实例来做一些这样的事情。 在每个虚拟机中放置一个单独的实例,因为虚拟机pipe理程序往往有更好的工具来pipe理资源。

资源总监是一个好的开始,但迄今为止这是一个总体限制。 正如Brent所说,这是一个很好的开始,但它不包括I / O。 鉴于预读algorithm,我不太清楚如何让这个人很容易pipe理。