我在设置 MSSQL 数据库时遇到了速度问题。以下是我的场景。
大约 100M 行 平均:每秒 1k 次更新 硬盘:RAID 10 SSD MDF
--活动时间:0
日志驱动器:1 SSD LDF - 简单恢复
--活动时间 99.9
--队列:8
我不需要备份日志,因此将其设置为简单恢复,但我的瓶颈仍然在我的日志中。我的 WAITLOG 时间很长,因此无法更快地更新。我无法进行批量更新/事务,每次更新都需要一次一个。
提高日志驱动器写入性能的唯一选择是添加 RAID 驱动器吗?有没有关于提高性能的建议?
答案1
处理大型表时,您会遇到性能瓶颈,因为索引或类似内容无法放入 RAM 中,或者根据服务器配置分配的资源不足。另一种更复杂但非常有效的方法是找到一种方法将表分区或分片为较小的表。您可以先尝试添加更多 RAM 并优化服务器设置。RAID 10 ssd 是可行的方法,不确定在 RAID 中添加更多内容是否会带来很大不同。
答案2
如果您的瓶颈是日志文件,那么您可以从几个方面着手提高日志吞吐量。我首先要介绍 Kimberly Tripp 的这篇博客文章:http://www.sqlskills.com/blogs/kimberly/8-steps-to-better-transaction-log-throughput/
我会确保您的磁盘已正确格式化,分配单元大小为 64KB,并且虚拟日志文件的数量不会过多(如上面的日志文章所示)。另外,请确保没有防病毒软件主动扫描 LDF 文件。
可能值得使用 SQLIO(或其他磁盘压力测试工具)之类的工具来查看日志驱动器的理论顺序写入性能。然后,您可以在繁重的工作负荷期间将其与 perfmon 进行比较,以查看是否达到了日志驱动器的极限。如果是,那么我想是时候考虑更快的驱动器设置了。