我正在寻找适合 ASP.NET MVC 应用程序的托管环境。我的一个选择是租用 Hyper-V 服务器并在其上安装我的 SQL Server 2008 许可证。我对共享托管有点谨慎,因为到目前为止我尝试过的那个似乎没有非常稳定的性能。
一个潜在的问题是,我对 SQL Server 管理不太了解,所以我不确定这是否是一个好的选择。我已经运行了两个 Linux 专用服务器的故障转移群集超过 5 年,MySQL 从未给我带来任何麻烦。但那是 Linux,Windows 系统可能会有所不同。
运行效率一般的 MS SQL Server 2008 是否困难?是否需要任何深入的管理知识?或者可能需要反复进行管理工作(例如让服务器保持最新补丁)?或者它更像是一种类似于 MySQL 的“安装后就忘”的体验?
答案1
SQL Server 易于管理,但仍需要管理。这至少包括:
- 定期备份。您需要该模型(或其他模型)来清理日志文件(否则它们会不断积累,永远不会被删除)。
- 定期修补。每 2 个月进行一次累积更新。
最重要的是,在 SQL Server 中设置一些自动维护(例如每周数据库检查等)。
在所有数据库中,SQL Server 是管理起来最好的数据库。
话虽如此,但你可能走上了一条糟糕的道路:
- 互联网上的 SQL 许可证必须是 SPLA(服务提供商许可协议)。不是购买,而是按月租用。比购买更便宜。您的许可证根本不包括服务提供。
- IO 性能可能很差。Hyper-V 标准服务器不是为 SQL 托管而设计的。与任何数据库一样,SQL 在变得更加繁忙时具有非常具体的 IO 需求 - 磁盘布局通常是为数据库规划的,而不仅仅是“将一些磁盘放入盒子”的事情。它在 Hyper-V 上也运行良好(我在 Hyper-V 上运行我的主要 SQL Server),但您不会想要一个“正常”的 Hyper-V 设置,因为它一开始的 IO 值很可能非常糟糕。
IO问题示例:
根据您如何将 Hyper-V 作为主机运行,您可能拥有一台“中型服务器”(8-12 个处理器核心,基本上是双处理器 Opteron 平台),配备 32-64GB RAM,您可使用 VM 加载。磁盘 - hm - 可能是 RAID 中的几个大型 1TB 磁盘。可能是 2x1TB 到 2x2TB 镜像,或者 RAID 5 中的三个(便宜)。性能?对于大多数情况来说已经足够好了。数据库方面?愚蠢的低 IO。您不会单独为 SQL Serve 这样做,但在这里它在所有 hyper-v 实例之间共享……而且会有很多。
我自己的设置(仅作为比较):
- Hyper-V 服务器 2 个机架单元,2x4 核 Opteron 64GB RAM。到目前为止相同。
- 4x10k rpm velociraptor 驱动器作为 RAID 10,用于操作系统和虚拟机。
已经好多了,也贵多了。但事情还没完。
- 对于 SQL 服务器,另外 12 个 (!) velociraptor 驱动器位于 2 个 raid 组 (日志、数据) 中,直接映射到 hyper-v 实例。 (是的,驱动器盒有 24 个硬盘插槽)。
因此:我拥有我需要的所有 IO 性能(而且我需要它)。虽然这不是典型的低成本 Hyper-V 虚拟服务器设置。
请谨慎考虑您的需求以及 Hyper-V 服务器的性能。大多数产品提供的数据库服务器都很糟糕。不过,对于小型服务器来说,这并不重要。
答案2
如果您认为 MYSQL 是一种“安装后就忘掉”的体验,那么 SQL 2008 相对而言应该是一件轻而易举的事。虽然有补丁,但大多数 DBA 都会在预定的时间安装它们(如果他们认为需要它们的话)。
答案3
运行效率不高的 MS SQL Server 2008 困难吗?
就一个?在我看来,不是真的。
它是否需要深入的管理知识?
如果您掌握了 MySql,那么您就理解了数据库概念等,您只需学习 Windows/SQL Server 的工作原理(有时这可能是一项任务)。但这并不复杂,而且那里有大量的信息。
或者可能需要重复进行管理工作(例如让服务器保持最新补丁)?
如果您想让操作系统保持最新状态,您需要修补操作系统,就像任何操作系统以及 SQL Server 一样。可以将其设置为在指定的时间自动完成,也可以手动完成。维护计划也可以在数据库方面自动完成很多事情。
我具有全部的 Windows/SQL Server 经验,因此我无法说出它与您过去的解决方案相比有多困难,但我可以告诉您,多年来,SQL Server 并不是我服务器环境中最大的麻烦。
答案4
我认为这是一个很难回答的问题,因为它非常主观。
我安装了 sql express,除了补丁之外我从来没有碰过,已经安装了好几年了。
我经常使用 SQL 2000 和 SQL 2005。我为它们创建 DTS/SSIS 包。我经常运行查询、检查备份等。不过这些都是高容量事务数据库...
如果您不提供更具体的信息,我不太确定能否回答您的问题。