在我工作的企业中,我们正在讨论减少主数据库读取负载的方法。

建议的一种选择是从主数据库到从数据库进行实时单向复制。然后,应用程序将从从数据库中读取数据并直接写入主数据库。所以...

  • 应用程序从从机读取
  • 应用程序写入主存储器
  • 主库自动更新从库

这种方法的主要优点和缺点是什么?

有帮助吗?

解决方案

一些缺点:

  • 2个故障点
  • 应用程序逻辑必须考虑写入内容和读取内容之间的延迟,因为它无法立即从辅助数据库中获取

我使用的策略是每晚将关键报告数据发送到辅助数据库,并在途中对其进行非规范化,以便可以在该数据库上运行强大的查询,而不是锁定表并从 OLTP 服务器窃取资源。我没有使用任何正式的数据仓库或复制工具,而是识别没有最新数据的问题查询,并在辅助服务器上专门为这些查询创建数据结构。

“复制一切”方法肯定有优点:

  • 您可以在辅助服务器上运行任何临时查询,因为它拥有您的所有数据
  • 如果您的主服务器挂掉了,您可以快速重新调整辅助服务器的用途来接管

其他提示

我们使用单向复制,但不是来自同一应用程序。我们的应用程序正在对主数据库进行读写,数据同步到副本数据库,并且报告工具正在使用该副本。

我们不希望我们的应用程序从不同的数据库读取数据,因此在这种情况下,我建议在主数据库上使用文件组和分区。使用文件组(尤其是在不同的驱动器上)以及文件和索引分区可以极大地提高性能。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top