如果我有两组系统使用的数据库表
- 收集一些数据处理结果的表。大多数时候会进行大量的 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 应用程序用来生成页面和报告的表
对于这个问题,让我们假设表集是互斥的(也许存在一些定期将数据从第一组迁移到第二组的过程)。
我不明白您所说的“表组相互排斥”是什么意思。从描述来看,这些表似乎是相关的(我说的“相关”是指它们应该被分组到同一个数据库中),因为它们可能会定期在它们之间迁移数据。因此,我认为您可能需要一个数据库。