Sql Server数据库优化技术方案
2016-03-13天地常州自动化股份有限公司马汝超
天地(常州)自动化股份有限公司 马汝超
Sql Server数据库优化技术方案
天地(常州)自动化股份有限公司 马汝超
【摘要】本文主要探讨了提高SQL Server数据库性能用到的一些数据库优化技术,其中包括物理布局、处理器关联、内存匹配、表和索引分区和数据压缩等。
【关键词】SQL Server;性能;优化
0 引言
随着全球信息体系和网络智能化的发展,信息资源日益成为重要的生产要素,而快速处理这些日益递增的庞大数据,必然要充分运用数据库技术。SQL Server作为企业级数据库在实际应用中发挥着重要作用。但数据库的响应速度在其使用过程中影响着整个数据库系统乃至其上层应用系统的性能,这对数据库有了更高的性能要求。因此如何运行数据库优化技术来提高其性能是一个重要的课题。
1 物理布局
数据库文件的物理布局直接影响到数据库管理系统的I/O性能。在数据库使用过程中,往往遇到计算机CPU占用率低但数据库性能差的情况发生,此问题主要原因往往来源于磁盘I/O瓶颈。因为CPU处理速度远远高于磁盘I/O的速度,当进行大量数据查询等操作时,处理器要从负载过重的物理磁盘中读取数据,此时要排队等待磁盘子系统中未决数据请求响应,从而引起上述低性能情况的发生。因此合理安排数据库文件的物理布局至关重要。
Sql Server数据库由主数据文件(.mdf)、辅助文件(.ndf)以及事务日志文件(.ldf)组成,并存储在物理磁盘或磁盘阵列逻辑单元(LUN)中。为了使系统能更快的运行,应将数据文件和日志文件放到单独或专用的物理LUN上,将很少使用的数据保存在较慢的物理LUN上。另外Tempdb作为速度最快的动态数据库,应将其主数据文件和日志文件放置在专用或快速I/O子系统中以得到好的性能。
2 处理器关联
处理器关联将数据库线程运行在指定的处理器上,通过消除重新加载不同处理器之间的线程迁移活动,来提高数据库系统性能。关于处理器关联Sql Server提供了关联掩码和关联I/O掩码两种配置选项,其主要目的是为了将数据库实例限制在处理器子集上运行。关联掩码选项用于动态控制CPU关联,可以按需启动和关闭用于在数据库中绑定进程线程的CPU计划程序。但当服务器运行条件改变时,可能需要重新调整关联掩码配置。关联I/O掩码选项将数据库磁盘 I/O与指定的CPU子集绑定。在高端数据库联机事务处理环境中,此扩展可以提高数据库线程执行I/O的性能。如果数据库在专用服务器上运行,建议允许数据库使用所有处理器以确保获得最佳性能。
3 内存匹配
由于访问内存数据的速度比磁盘I/O子系统的速度快很多,高效使用内存资源将对数据库系统性能产生很大影响。由于系统内存资源有限,过高占用内存必然会导致操作系统和其他关键应用服务内存不足的现象发生。过少占用内存,将导致操作系统开始将页面错误移动到物理磁盘,从而增加磁盘I/O以及CPU资源的开销。
SQL Server提供了最小服务器内存和最大服务器内存选项来控制数据库内存使用许可。数据库服务进程从启动开始其运行内存根据需要逐步增长,一旦内存使用量超过最小内存设定值,数据库将不会释放任何低于该量的内存。最大服务器内存则设置内存上限,它会阻止数据库占用过多内存。数据库用户在配置相关内存时,需要考虑操作系统和其他关键应用服务要有足够的内存。在满足这一前提下,让数据库使用尽可能多的内存,并保证内存使用数量的稳定性。
4 表和索引分区
通常我们建立数据库表时,往往将表数据存放在一个文件里。但当这些表或数据库达到一定规模时,就难以进行数据库维护、备份还原等操作。为了解决超大表的使用与维护问题,数据库引入了分区技术。分区是一种物理数据库设计技术,主要是将大型的对象分成更小的块,其主要目的是为了在特定的SQL操作中减少数据读写的总量以缩减响应时间。
分区的基本单位是行,但必须在单个数据库内进行操作。使用分区时,一张表的数据会被拆分成多个小文件,并按照指定的规则分放到不同的文件组单元中,还可以把这些小文件放在不同的磁盘中供多个处理器并行处理。当对分区表数据进行查询等操作时,分区表将被视为单个逻辑实体,对数据库用户来讲和访问普通表没什么差别。
5 数据压缩
Sql Server数据库提供了数据压缩功能,并且启用数据压缩时无须修改应用程序。数据压缩可有效减少数据的占用空间和读写相同数据花费的I/O等,以有效缓解I/O压力。但由于数据在读写时需要压缩和解压缩,因此会消耗一定的CPU资源,但不代表在相同负载下,启用数据压缩会导致CPU使用率变高,某些操作会因为数据页数量的减少而降低CPU的消耗。
Sql Server数据库可压缩对象有:存储为堆的整个表、存储为聚集索引的整个表、整个非聚集索引、整个索引视图、已分区表和已分区索引等。对于已分区表或索引,可为每个分区配置压缩选项。
6 结语
提高SQL Server数据库性能,需要考虑多种因素。合理安排数据库文件物理布局,可以有效减轻磁盘I/O子系统的负担,建议将数据库主数据文件放在由快速磁盘构成的物理LUN上,Tempdb文件放在快速I/O子系统中。合理设置或调整处理器关联以及内存匹配,但要避免产生负面影响。对数据库中大型对象应创建分区,有助于数据库维护以及实现多处理器并行处理。数据压缩可以用来提高I/O性能,但不要过度的增加处理器负担。
参考文献
[1]Ann Bachrach, Daniel Yu, Darmadi Komo,等. SQL Server 2012新功能简介白皮书,2012.
[2][美]Adam Jorgensen Steven Wort.等.SQL Server 2012管理高级教程[M].宋沄剑,曹仰杰,译.北京:清华大学出版社,2013.
[3]卫琳.SQL Server2012数据库应用与开发教程[M].北京:清华大学出版社,2014.
[4][美]Paul Atkinson Robert Vieira.SQL Server2012编程入门经典[M].王军,牛志玲,译.北京:清华大学出版社,2013.
马汝超(1985-),男,河南商丘人,中国矿业大学本科毕业,软件工程师,现供职于天地(常州)自动化股份有限公司,研究方向:从事软件开发应用工作。
作者简介: