每一个实例或者每一个服务器设置一个单一的数据库能够使数据库管理更方便。然而,这样做很快将增加你的数据库解决方案的成本,因为你要对你希望托管的每一个数据库购买一台新的服务器或者新的SQL服务器许可证。
为了应对这种价格昂贵的设置,人们一般在一个服务器或者实例上托管多个数据库(也就是多个应用程序)。虽然这将减少托管所有这些数据库的成本,但是,这增加了管理这些系统的复杂性,因为你现在要处理多个服务级协议和维护窗口。
当你决定在同一台服务器上托管多个数据库的时候,你要考虑的第一件事是这些系统是否有互补的维护窗口。如果一个系统不能在夜间放慢速度或者离线,另一个系统不能在白天放慢速度或者离线,这些系统就不适合共享一个服务器,因为你在需要为系统使用补丁或者处于其它原因要让系统离线的时候,你没有有效的维护时间窗。
你需要考察的下一个决定因素是这些系统的服务级协议。需要99%的开机时间的系统能够安排在一起,因为你可能会为这些系统(也许是集群解决方案)建立一个比非重要任务系统更强大的环境。这可以为你节省额外的成本,因为你现在不需要采购任何高端系统。具有更高的服务级协议的系统也可能会有同样的维护时间窗。因此,这些系统在一开始就是互补的。
承担工作量
对托管多个数据库的SQL服务器进行维护的最大难题是时机。
当然,当把多个数据库集中在一个SQL服务器的时候需要考虑的最重要的问题是,是否有足够的CPU和内存资源处理这些客户程序添加到这个数据库服务器的工作量。如果单个服务器不能提供需要的CPU和内存资源,那么,把这些数据库都集中在那台服务器上就不是一个好的选择。
当你经过这个整个决策过程并且把这些数据库都放在同一台服务器上之后,你如何保持这些系统的健康和在高峰期仍能运行?与其它任何数据库解决方案一样,你仍需要处理自己的备份、索引碎片整理和重建、以及为操作系统和SQL服务器使用补丁。
处理托管多个数据库的SQL服务器的维护的最大难题是时机。你需要保证你的维护任务能够在这个SQL服务器托管的全部数据库计划的维护时间窗内完成。在任何数据库的维护时间窗之外进行维护工作都将引起数据库运行缓慢,因为硬盘和CPU资源现在被维护活动占用了,而不是处理正常的数据库查询。