每一个实例或者每一个服务器设置一个单一的数据库能够使数据库管理更方便。然而,这样做很快将增加你的数据库解决方案的成本,因为你要对你希望托管的每一个数据库购买一台新的服务器或者新的SQL服务器许可证。为了应对这种价格昂贵的设置,人们一般在一个服
每一个实例或者每一个设置一个单一的能够使管理更方便。然而,这样做很快将增加你的数据库解决方案的成本,因为你要对你希望托管的每一个数据库购买一台新的或者新的SQL服务器许可证。为了应对这种价格昂贵的设置,人们一般在一个服务器或者实例上托管多个数据库(也就是多个应用程序)。虽然这将减少托管所有这些数据库的成本,但是,这增加了管理这些系统的复杂性,因为你现在要处理多个服务级协议和维护窗口。
当你决定在同一台服务器上托管多个数据库的时候,你要考虑的第一件事是这些系统是否有互补的维护窗口。如果一个系统不能在夜间放慢速度或者离线,另一个系统不能在白天放慢速度或者离线,这些系统就不适合共享一个服务器,因为你在需要为系统使用补丁或者处于其它原因要让系统离线的时候,你没有有效的维护时间窗。
你需要考察的下一个决定因素是这些系统的服务级协议。需要99%的开机时间的系统能够安排在一起,因为你可能会为这些系统(也许是集群解决方案)建立一个比非重要任务系统更强大的环境。这可以为你节省额外的成本,因为你现在不需要采购任何高端系统。具有更高的服务级协议的系统也可能会有同样的维护时间窗。因此,这些系统在一开始就是互补的。
数据库备份
备份是在一台服务器上托管多个数据库的时候需要解决的另一个关键问题。
每一个数据库都有自己的备份要求。备份数据库也许是能够在SQL服务器运行时执行的最繁重的任务。并不是因为这种备份需要占用大量的CPU和内存资源(这个任务占用的资源一般是很低的,除非你在备份的时候对数据库进行压缩),而是因为备份一个大型数据库需要占用大量的硬盘资源。
当进行全面备份的时候,整个数据库必须从硬盘读取。如果你的硬盘系统非常繁忙,这个备份会引起性能严重下降。这种备份的最佳解决方案是选择合适的时机。你还可以寻找能够在备份的同时允许对数据库备份进行压缩的第三方工具。由于这将增加SQL服务器上的CPU的工作量,它通常仅用很少的时间完成备份,因为需要写入备份设备中的数据很少。