题
在我工作的企业中,我们正在讨论减少主数据库读取负载的方法。
建议的一种选择是从主数据库到从数据库进行实时单向复制。然后,应用程序将从从数据库中读取数据并直接写入主数据库。所以...
- 应用程序从从机读取
- 应用程序写入主存储器
- 主库自动更新从库
这种方法的主要优点和缺点是什么?
解决方案
一些缺点:
- 2个故障点
- 应用程序逻辑必须考虑写入内容和读取内容之间的延迟,因为它无法立即从辅助数据库中获取
我使用的策略是每晚将关键报告数据发送到辅助数据库,并在途中对其进行非规范化,以便可以在该数据库上运行强大的查询,而不是锁定表并从 OLTP 服务器窃取资源。我没有使用任何正式的数据仓库或复制工具,而是识别没有最新数据的问题查询,并在辅助服务器上专门为这些查询创建数据结构。
“复制一切”方法肯定有优点:
- 您可以在辅助服务器上运行任何临时查询,因为它拥有您的所有数据
- 如果您的主服务器挂掉了,您可以快速重新调整辅助服务器的用途来接管
其他提示
我们使用单向复制,但不是来自同一应用程序。我们的应用程序正在对主数据库进行读写,数据同步到副本数据库,并且报告工具正在使用该副本。
我们不希望我们的应用程序从不同的数据库读取数据,因此在这种情况下,我建议在主数据库上使用文件组和分区。使用文件组(尤其是在不同的驱动器上)以及文件和索引分区可以极大地提高性能。
不隶属于 StackOverflow