什么是用于处理大量写入的优秀SQL Server 2008解决方案,以便它们不会减慢数据库用户的读取速度?

Pau*_*oza 1 database sql-server performance

我们有大型SQL Server 2008数据库.我们经常需要在数据库中运行大量数据,这需要花费几个小时.在此期间,其他人的阅读和小写速度都减慢了一吨.

我正在寻找一个解决方案,我们可能会设置一个用于批量写入的数据库服务器,然后设置两个其他数据库服务器,这些服务器设置为可读,并且可能对它们进行少量写入.目标是在批量更改运行时保持快速的小读取和写入.

有没有人知道使用SQL Server 2008实现这一目标的好方法?

Bre*_*zar 5

保罗.你的问题有两个部分.

首先,为什么写入速度慢?

当你说你有大型数据库时,你可能想用一些数字来澄清.微软团队在不到一个小时的时间内就展示了数TB的负载,但当然他们正在使用高端设备和专门的数据仓库技术.我参与了数据仓库团队,这些团队经常在一夜之间加载大量数据,事务日志驱动器必须超过1TB才能处理快速爆发,但不是每小时太字节.

要找出写入速度慢的原因,您需要将加载方法与数据仓库技术进行比较.例如,您是否尝试过使用临时表?表分区?不同阵列上的数据和日志文件?如果你不确定从哪里开始,请查看我的Perfmon教程,以测量你的系统寻找瓶颈:

http://www.brentozar.com/archive/2006/12/dba-101-using-perfmon-for-sql-performance-tuning/

第二,你如何扩展?

您询问了如何设置多个数据库服务器,以便处理批量加载,而其他服务器处理读取和一些写入.我会非常谨慎地反对采用多服务器写入方法,因为它会快速复杂化,但使用多个服务器进行读取并不少见.

最简单的方法是使用日志传送:每隔X分钟,主服务器进行事务日志备份,然后将该日志备份应用于只读报告服务器.有一些问题 - 数据稍微落后,恢复过程必须将所有连接从数据库中踢出来应用恢复.对于像数据仓库这样的东西来说,这是一个完全可以接受的解决方案,最终用户希望在新一天的数据加载时继续运行自己的报告.在加载数据仓库时,您根本不能执行事务日志恢复,并且用户可以始终保持连接.

要帮助找出适合您的解决方案,请考虑在您的问题中添加以下内容:

  • 数据库的大小(GB/TB大小,最大表中有数百万行的写入数)
  • 服务器和存储的大小(包含10个驱动器的盒子提供的解决方案与连接到SAN的盒子不同)
  • 加载数据的方法(是单记录插入,你使用批量加载,你使用表分区,等等)