我能否获得该问题的优点和缺点列表,或者正确使用的列表。
如果一家公司有大约 6 个网站,每个网站都有 SQL Server 数据库,那么这些数据库应该位于自己的服务器和 SQL Server 实例上,还是它们都可以存在于一个服务器上的不同数据库下的一个 SQL Server 实例下?
答案1
它取决于每个数据库所需的负载。如果每个数据库的 IO、内存和 CPU 负载最小,那么它们都可以放在一个 SQL Server 实例上。随着需求的增加,您需要将实例移动到不同的 SQL Server。
将数据库放在不同实例上的主要原因是实例具有不同的、相互冲突的安全要求。另一个原因是因为您想要控制一个数据库的缓冲池和过程缓存的大小,所以您会将其放在不同的实例上。否则将所有内容放在一个实例中就可以了。
答案2
我看不出任何理由(至少在没有更多信息的情况下)说明为什么它们不能位于同一个 SQL 实例下。我们使用合并的 SQL 实例模型(即多个应用程序位于 1 个 SQL 服务器上),并且运行良好。
我认为的缺点是:
- 解决性能问题稍微困难一些
- 把鸡蛋放在一个篮子里(除非你集群/镜像/日志船)
- 从 CPU/内存角度来看,一个站点的数据库使用情况“可能”会影响其他站点。
我看到的优点是:
- 更易于管理(例如备份只需要配置一次)
- 需要管理的 SQL 服务器更少(与 1 相关)
据我所知,1 个应用程序对 1 个 SQL 服务器的模型有点过时了。我有偏见,而且我个人非常喜欢将多个应用程序连接到一个 SQL 服务器。只是不要吝惜 SQL 服务器的资源。这并不是说你需要过度规范,要了解网站需要什么样的性能。另外,仅供参考,我们所有的 SQL 服务器都是虚拟的,以防有人试图向你提出这个问题,我们不会遇到任何问题。一切都取决于适当的大小。
答案3
我们为“应用程序”数据(例如 Drupal、WP、Mediawiki)运行一个数据库实例,为业务数据运行一个单独的实例。这样,两者之间就不会出现潜在的争用/升级问题。如果您真的担心应用程序之间的干扰,我认为 MySQL 不会为您提供所需的资源分离级别。