SQL Server的性能和可扩展性的根基是硬件和存储子系统,而数据库实例则运行其上。要揭秘硬件和存储,你首先要好好理解工作负载。你需要知道你的数据库服务器是要仅仅运行SQL Server Database Engine,还是其他组件,如SSAS、SSIS或SSRS。理想的情况,你或许想在专有的服务器上分别运行它们,但是额外的硬件和许可费用或许会让你无法奢望。即便是仅仅运行数据库引擎,你也需要理解你要处理的工作负载种类。
工作负载类型
常见的SQL Server工作负载类型包括OLTP(online transaction processing)、DW(data warehousing)、关系报表(relatinal reporting)和OLAP(online analytical processing)。
OLTP工作负载
其特质是有大量的短持续时间的查询,以及高比例写活动的事务。具有更高基本时钟频率及涡轮转速的处理器会有较好的表现。每秒的I/O操作(IOPS)比同等的DW要多。
DW工作负载
它有长时间运行、复杂的查询,这些查询通常由查询优化器并行处理,这使得处理器要具有更高的物理内核数、更好的内存控制器,以便尽快执行查询。大内存对DW也很重要,这能保证你有足够的空间用于缓冲池。常规的操作下,DW有更多连续的读,和极少的写活动。
关系报表负载
许多组织维护了一个OLTP数据库的副本,用于报表。理想情况下,副本放在一台专用的服务器上,与主OLTP数据库服务器分离。这个“报表”数据库有很多额外的非聚集索引,可能还有额外的表,用于存放计算过的汇总数据。有时候,报表数据库是用OLTP数据库备份还原而来的,之后创建额外的非聚集索引及表,这期间I/O性能很重要。在投入使用时,整体的工作负载和DW很类似。列存储索引可以这这个时候使用,关于列存储索引,可以参考这里。在事务复制中,OLTP数据库充当Publisher,而报表数据库在充当Subscriber。
OLAP工作负载
OLAP工作负载有几个不同的组件,包括读取源数据初建或更新Cube、变更时处理Cube及运行OLAP查询给用户获取数据。具有更高物理内核数的处理器、更好的内存控制器及大内存容量对于OLAP工作负载而言都是非常有价值的。OLAP工作负载有大量随机I/O,因此,基于闪存的存储对于Cube文件是很有利的。基于闪存的存储包括固态硬盘和其他设备,如Fusion-io卡,它使用固态闪存做永久存储器。些类型的设备提供了非常高的随机I/O性能,这对于OLAP负载非常有用。
服务器选型
要为你的数据库服务器选择一个合适的服务器,你必须先确定使用Intel处理器还是AMD处理器(基准测试结果可以帮你做决定),接下来要决定使用一个单插槽、双插槽或四插槽数据库服务器,还是更大,因为这限制您的可用处理器选项。你还需要根据服务器机架单元的高度来确定是1U、2U、4U还是更大的服务器。几乎在所有情况下,2台双插槽要好于1台4插槽的机器。
为冗余选择和配置硬件
要考虑高可用方案,尽力避免硬件或配置级别的单点故障。RAID1(镜像)中2个驱动器可以为操作系统和SQL Server提供一个基本水平的冗余,如果一个驱动器发生故障,服务器也不会停止工作。为此,要试图使用至少146GB、15K 2.5"的驱动器(硬盘)。使用15K驱动器可以加快Windows Server的启动,以及SQL Server的加载。使用146GB(或更大)的硬盘提供更多的空间来容纳诸如Windows页文件、SQL Server错误日志文件、垃圾文件等,而不必担心硬盘空间。随着SSD的价格持续下跌,你或许想使用2块SSD来作为镜像启动硬盘。使用SSD能够满足你的恢复时间目标(RTO)。
要为你的数据库服务器提供双电源供给,接入各自的电源,同时接入不间断电源(uninterruptable power supply(UPS)),理想情况是为数据中心提供备用电源,如柴油发电机。服务器应该有多个网络端口,通过以太网(Ethernet)至少连接两种不同的网络交换机,这些网络交换机(也应该配备双电源)应该接入数据中心中的不同电路。多数机架式服务器至少有4个千兆位(10000Mbps)以太网端口嵌入在主板上。这种设计是为了防止由单网络端口或单网络交换机的故障引起中断。
你应该有多个RAID控制器卡(如果您使用的是直连或内部存储);多个主机总线适配器(HBA)(如果您使用的是光纤通道SAN)或多个PCIe千兆或更好的以太网卡与iSCSI SAN。这会给你更好的冗余性和更好的吞吐量,这取决于您的配置。同样,这里的想法也是要尽量避免因单个组件的故障带来中断。
永远不要让任何人,无论是SAN厂商,来至你的运营团队一个服务器管理员,还是你的老板,说服你不要做SQL Server备份以满足您的恢复点目标(RPO)和恢复时间目标(RTO)要求。老话说得好:“如果你没有备份,就没有一个数据库。”
对于一个独立的数据库服务器,降低总重启时间对高可用性有直接的影响。因此,进入BIOS禁用内存测试,以便服务器更快启动,把内存测试的工作交给硬件或系统监视软件。对BIOS设置时,还可以访问电源管理部分,要么禁用电源管理设置,要么将其设置为操作系统控制,否则它可以对性能产生非常显著的负面影响,因为一些处理器不能对增加的工作量产生足够快的反应。
最后,你应该根据RPO和RTO要求,计划并实施一些HADR(高可用性和灾难恢复)策略,其中包括Windows故障转移群集、数据库镜像、日志传送、事务复制和SQL Server2012 AlwaysOn可用性组等。
硬件比较工具
我们要坚定使用现成的基准工具和一些常识及分析,来作为比较不同的硬件类型和配置的手段。常用的基准测试工具有,TPC-E OLTP基准测试和软件Geekbench处理器和内存性能基准。