在一个实例下运行多个数据库

在一个实例下运行多个数据库

最好有一个具有多个数据库的单个实例还是将数据库分布在几个实例上?

答案1

我建议在同一台机器上只使用一个实例,而不是多个实例,除非您要解决非常专业的问题。这样可以更轻松地管理服务器,并且占用更少的资源。

系统管理的一个非常好的规则与编程中适用的规则相同,或者说我以前仍然这样做:为了正确解决问题,让事情变得尽可能复杂,不多也不少。多个实例通常会使事情比具有多个数据库的一个实例更复杂。

如果您需要分离一些东西来保护它们,那么我建议安装多台服务器(您可以在这里虚拟化到一个物理盒子上),因为我不确定我是否会将一个盒子上的不同实例视为安全边界。

答案2

假设是 SQL Server,因为这是我所知道的......

我建议将它们保存在单个实例中。

这样可以提高跨数据库访问数据的性能(例如,您需要从数据库 A 中检索数据库 B 中的某些内容)。如果它们是单独的实例,则需要通过链接服务器、使用命名管道等进行通信。在单个实例中,您可以直接访问所有数据库(受安全限制)。

将它们全部放在一起可能会出现单点故障,但我发现 SQL Server 本身非常可靠。整个机器可能会发生故障(关闭所有实例),但我还没有见过这种故障,使得单实例安排以这种方式更可取。

由于您可以管理文件级别的存储,因此分成多个实例并没有帮助。

您可能会考虑安全隐患,如果您以某种方式遭受 SQL 注入攻击(对此没有任何借口,因为它很容易预防!)。但如果您在实例之间有链接服务器,那么您实际上并没有获得更多保护。

答案3

无论我们讨论的是哪种 SQL 服务器,出于其他人已经提到的所有原因,作为一般原则,我会尽可能在一个实例下运行所有​​数据库。此外,如果您发现一个实例无法很好地处理负载,那么是时候添加另一台机器,而不是另一个实例了。我能想到的唯一例外是只能使用自己的实例运行的应用程序。当然,最好避免使用此类软件,或者如果可能的话,将其放在不同的机器上。

答案4

从内存的角度来看(再次假设是 MS SQL Server),单个实例内的多个数据库通常会带来更高效的使用。

当现成的应用程序需要时,我们会运行多个实例。对于我们开发的东西,我们将其全部放在一个实例中。

相关内容