SQL 服务器上的一个数据库实例与多个数据库实例

SQL 服务器上的一个数据库实例与多个数据库实例

如果我有两组系统使用的数据库表

  • 收集一些数据处理结果的表。大多数时候会进行大量的 INSERT 操作。
  • Web 应用程序用于生成页面和报告的表

对于这个问题,让我们假设表集是互斥的(也许存在一些定期将数据从第一组迁移到第二组的过程)。

以下两种设置之间是否会出现性能差异?

  • 两组表位于一个数据库中
  • 这两组表位于同一 SQL 服务器上的两个独立数据库中

答案1

我想说一个单一的数据库。您希望表集在备份/恢复状态、用户访问安全性、可用性等方面保持同步。单独的表还会给镜像和日志传送解决方案带来问题。

由于您预期 I/O 访问模式会有所不同,因此您应该将表放在不同的文件组中。然后,您可以将每个文件组部署到适合您的 I/O 模式的磁盘上。

如果两个表都位于同一个数据库中,那么某些争用点是共享的,例如日志写入。但对于您描述的情况,这并不是问题,因为只有应用程序的 OLTP 部分关心日志。

答案2

是的。您需要选项 B,这样操作系统就可以引用 2 个不同的磁盘文件。一个数据库可以针对写入进行优化,另一个可以针对读取进行优化。

或者,如果您将表分成单独的文件组/单独的文件,则可以在单个数据库中完成相同的操作。

答案3

以下两种设置之间是否会出现性能差异?

* The two sets of tables are in one DB
* The two sets of tables are in two separate DBs on the same SQL

服务器

不 - 除非你将数据库分开到不同的硬盘上(而且鉴于我们没有其他信息,这是否会影响性能也是有争议的)。

因此,请从你的设计考量清单中删除“性能”一词。这意味着问题是领域- “我应该将它们放在同一个数据库还是不同的数据库中”应该取决于它们之间的关系。

如果我有两组系统使用的数据库表

* Tables that collect results of some data processing. Most of the time

获得大量的 INSERT 操作。 * Web 应用程序用来生成页面和报告的表

对于这个问题,让我们假设表集是互斥的(也许存在一些定期将数据从第一组迁移到第二组的过程)。

我不明白您所说的“表组相互排斥”是什么意思。从描述来看,这些表似乎是相关的(我说的“相关”是指它们应该被分组到同一个数据库中),因为它们可能会定期在它们之间迁移数据。因此,我认为您可能需要一个数据库。

相关内容