(转自 stackoverflow)
我已经设置了 SQL Server 镜像,使用 2 个 SQL Server 2005 标准版。当应用程序承受压力时,响应时间会增加 10 倍。我已将此归咎于镜像,因为暂停镜像会显示可接受的响应时间。
有哪些选项可以实现更好的性能?请注意,我使用的是标准版,因此无法使用出色的高性能模式。
服务器位于同一个机架中,连接到千兆交换机。
以下是用于创建端点的代码:
CREATE ENDPOINT [Mirroring]
AUTHORIZATION [sa]
STATE=STARTED
AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)
FOR DATA_MIRRORING (ROLE = PARTNER, AUTHENTICATION = WINDOWS NEGOTIATE
, ENCRYPTION = REQUIRED ALGORITHM RC4)
答案1
主服务器和镜像服务器之间的链路是否具有足够的带宽来应对主服务器的事务日志生成?
您的日志文件是否已优化?请参阅以下链接:
http://www.sqlskills.com/BLOGS/KIMBERLY/post/8-Steps-to-better-Transaction-Log-throughput.aspx
答案2
虽然暂停镜像有所帮助,但这可能不是导致问题的真正原因。根据我的经验,使用同步镜像只会使响应时间加倍。如果您发现响应时间在负载较高时变得更糟,则可能有其他问题。
有几件事值得思考和尝试:
- 检查服务器是否功率不足(CPU/内存)
- 检查网络是否是瓶颈(通过直接连接 2 个 SQL 服务器并强制镜像流量通过该直接链路)
- 检查 I/O 是否不是瓶颈(尽管在我看来这不太可能,因为只有启用镜像时响应时间才会增加 10 倍)。通常适用的东西:更好的硬件 RAID/缓存、单独的设备……
- 高性能模式是异步的。如果您同意,那么您可以使用复制而不是镜像。(我忘记了此功能的 MS 术语。)