通常我们每周的完整备份在大约 35 分钟内完成,每日差异备份在大约 5 分钟内完成。从星期二开始,每天的日常工作需要将近 4 个小时才能完成,远远超出了应有的要求。巧合的是,这在我们获得新的 SAN/磁盘配置后立即开始发生。
请注意,服务器正在生产中运行,我们没有整体问题,它运行平稳 - 除了主要表现在备份性能中的 IO 问题。
在备份期间查看 dm_exec_requests,备份一直在等待 ASYNC_IO_COMPLETION。啊哈,所以我们有磁盘争用!
但是,MDF(日志存储在本地磁盘上)和备份驱动器都没有任何活动(IOPS ~= 0 - 我们有足够的内存)。磁盘队列长度 ~= 0 也是如此。CPU 徘徊在 2-3% 左右,也没有问题。
SAN 是 Dell MD3220i,LUN 由 6x10k SAS 驱动器组成。服务器通过两条物理路径连接到 SAN,每条路径都通过一个单独的交换机与 SAN 的冗余连接 - 总共有四个路径,其中两个随时处于活动状态。我可以通过任务管理器验证两个连接是否都处于活动状态 - 完美均匀地分配负载。两个连接都运行 1G 全双工。
我们曾经使用巨型帧,但我已禁用它们以排除此处的任何问题 - 没有变化。我们有另一台服务器(相同的操作系统 + 配置,2008 R2)连接到其他 LUN,它没有显示任何问题。然而,它没有运行 SQL Server,而只是在它们之上共享 CIFS。但是,它的 LUN 首选路径之一与麻烦的 LUN 位于同一 SAN 控制器上 - 所以我也排除了这一点。
尽管存在以下问题,但运行几个 SQLIO 测试(10G 测试文件)似乎表明 IO 是不错的:
sqlio -kR -t8 -o8 -s30 -frandom -b8 -BN -LS -Fparam.txt
IOs/sec: 3582.20 …Run Code Online (Sandbox Code Playgroud) 当从同一 LAN 中不同服务器上的 .NET 4 客户端应用程序连接到 SQL Server 2008 R2 时,可以设置三种不同的网络协议:
什么是最佳实践?选择什么?
附加信息:在服务器和客户端上都启用了 TCP 和命名管道。应用程序正在使用数据库镜像。客户端和服务器通过快速 LAN 进行通信。
我们正在对此进行调查,因为我们有罕见的虚假连接和超时问题。(但无论如何,我想知道最佳实践)。
MSDN 上有一篇关于这个主题的文章,但它非常笼统和模糊。它不建议或推荐任何有用的东西。
如果我通过高延迟网络对 SQL Server 数据库进行一次调用,是否会由于该延迟而发生表锁定?假设我查询表 A 中的某些记录,并且 SQL Server 必须通过慢速网络返回该数据 - 当服务器通过网络发送响应时,表 A 上是否存在读取锁定,或者 SQL Server 在发送之前是否释放锁定响应?
此外,答案是否会根据响应的大小而有所不同?如果它只需要返回几 KB 与几百 MB,那会有什么不同吗?
创建显式事务、运行查询和关闭事务显然会导致表锁定,因为事务的持续时间与我的延迟相关。
我最近对 100,000 条记录执行了更新查询。我意识到我在查询运行时犯了一个错误,并迅速拔掉了网络电缆。
是否更新查询
我有一个与断开网络连接会停止查询的相反问题吗?. 我想启动查询并断开连接而不等待结果,但我不希望查询停止。是否可以?
我们即将在不同的国家设置 SQL Server。我们需要链接它们,但我们不必有直接链接(如在链接服务器中)。换句话说,它们可以松散耦合。
是通过 VPN 连接它们并将它们作为链接服务器,还是通过 Web 服务使用松散耦合更好?
“更好”,我指的是稳定性。
在我们的环境中,网络存储空间不足。同时,我想确保我们每 15 分钟进行一次事务日志备份,而不是每 6 小时一次。我的问题是将日志备份间隔从 6 小时更改为每 15 分钟会消耗更多磁盘空间吗?
他们确实说没有“愚蠢的问题”这样的东西,所以这里是:
我了解 SQL Server透明数据加密(TDE) 对静态数据进行加密,因此如果有人闯入您的存储并窃取这些文件,您的数据库文件 (.mdf) 和备份文件 (.bak) 将被加密。我也知道从磁盘读取数据时会解密数据,因此它在内存中未加密(在运动中)。因此,运行远程查询(select * from SensitiveData)的用户请求的数据在通过网络传输时将是未加密的,因此容易被拦截。
因此,假设以上所有内容都是正确的,这是我的愚蠢问题:如果我的 SQL Server 实例在计算机 A 上并且我的 TDE 数据库备份被注销到远程计算机 B 上的存储,备份操作数据是否在传输时加密?计算机 A 要写入计算机 B 的磁盘吗?我认为它必须是(因为我认为加密操作首先发生在计算机 A 上),但我无法在任何 Microsoft 文档或博客中找到对此的确认。同样,在还原操作期间——是否有人拦截了从计算机 B 上的磁盘传输的数据以还原计算机 A 上的数据库——他们会发现移动中的数据是加密的吗?
我很好奇 Windows 2012 R2 上的默认 NUMAStatic RSS 配置文件是否可以/应该更改为具有 NUMA 设置的 SQL Server。有没有人使用 NUMA 或保守设置对高负载 SQL Server 进行性能基准测试?
我正在阅读有关使用 PostgreSQL 进行网络压缩的内容,以查看是否有任何东西可以提供允许大结果集通过网络传输到远程 Web 服务器的内容。似乎没有这种东西。有没有解决方案可以做到这一点,这不是 SSL?
似乎有一个涉及 SSL 的解决方案。阅读了与此相关的线程后,似乎该解决方案不再可取,因为它使系统容易受到CRIME worldwide错误的影响。
尽管不可取,但您似乎至少可以在当前重新启用 SSL 压缩,OPENSSL_DEFAULT_ZLIB但将来它将被删除,并且当前在 openssl 中的编译时被禁用。
no-zlib [default]
no-zlib-dynamic [default]
Run Code Online (Sandbox Code Playgroud) network ×10
sql-server ×7
backup ×2
compression ×1
disk-space ×1
encryption ×1
locking ×1
numa ×1
performance ×1
postgresql ×1
san ×1