SQL Server 负载平衡

SQL Server 负载平衡

设计不佳的 CRM/CMS/SCM/呼叫中心系统,使用 C#/ASP.NET/MS SQL Server 开发。

我遇到的问题是,客户正在生产中使用该系统,并且即将迎来一个非常繁忙的时期。业务是半季节性的,这意味着系统在这段时间内正常运行至关重要。上述所有内容都使用 SQL 服务器从一个核心数据库运行,由于 SQL 语句过于复杂/庞大,数据库服务器承受着巨大的压力。

服务器本身非常强大,拥有 16GB 内存和 16 核处理能力。目前这还勉强应付。所以在繁忙时期它会崩溃。基本上没有时间通过​​编程来纠正问题。我们需要用硬件来解决问题。

这让我想到一个问题,要实现 SQL 负载平衡,我是否需要完成一些开发工作,或者是否有一种无需进行任何开发即可实现负载平衡的方法?托管服务器的 ISP 建议我们需要进行一些开发。

答案1

任意数据库系统中最大的瓶颈始终是磁盘 I/O*。

16 个核心?噗。您也有 16 个磁盘在 raid-10 中运行吗?

如果没有,就去获取它们。

--
* 当然,您根本没有显示任何性能指标,所以如果您对我们可能给您的实际建议感到好奇,请开始收集性能数据并显示它们。

事实上,除非你这样做,否则你无法证明存在问题

答案2

不存在所谓的负载平衡持久存储。您可以对存储进行分区(分片),这仅适用于非常狭窄的特定问题域或从一开始就明确设计为横向扩展的应用程序,您可以使用可读备用(复制、日志传送、镜像+快照、AlwaysOn)横向扩展读取,这适用于具有可接受的回溯延迟的报告,甚至还有复杂的主-主复制方案,但这些方案都不起作用。

所以你的仅有的选项是修复应用程序或增强数据库。修复应用程序总是能产生最佳效果,但需要您拥有非常稀缺的资源(优秀的开发人员)和时间。另一种选择是增强数据库,但它的效果永远无法与修复应用程序相提并论。这需要您确定瓶颈所在。等待和排队 是一种非常好的方法,经证明,如果正确应用,会产生效果。如果您不知道如何操作,请联系信誉良好的专业人士并寻求帮助。

相关内容