调整Windows参数提高MSSQL Server性能

调整Windows参数提高MSSQL Server性能,第1张

SQL Server数据库与Windows操作系统来自同一个家庭,在技术上具有一定的共通性。我们可以调整Windows操作系统的一些参数来提高SQLServer数据库服务器的性能,使之更高效的运行。

一、 提高虚拟内存来提高数据库服务器性能。

虚拟内存简单的来说就是内盘中的一块空间。当物理内存不够时,操作系统会自动把某些驻留在内存中暂时不用的内容移植到这个在硬盘上的虚拟内存中,以释放更多的空间给新的应用程序使用。也就是说,当物理内存使用完时操作系统会拿出一部分硬盘空间来充当内存使用,以缓解内存的压力。为此从某种程度来说,这个虚拟内存的设置也会影响到数据库服务器的性能。那么这个虚拟内存到底该设置多少为好呢这没有一个固定的标准。这需要数据库管理员根据部署的应用来确定。

如数据库没有一些高级的应用,如数据仓库、全文索引或者不适多个应用服务一身的话,笔者认为只要把虚拟内存设置为物理内存的15倍即可。但是,如果在数据库服务器上配置了数据仓库或者全文索引的话,则这个15倍的虚拟内存往往是不够的。此时笔者建议需要把虚拟内存配置为物理内存的3倍到四倍。同时,需要调整数据库中的最大服务器内存选项,将其设置为物理内存的15倍。也就是说,其在使用内存的时候,可以使用虚拟内存大小的一半。注意这个设置时必须的,否则的话,调整数据库虚拟内存很难起到应有的效果。而且当以后内存升级了,则也需要同时更改这个两个参数。

最后需要说明的一点就是,虚拟内存并不是越大越好。如果设置为10倍、20倍,那么这是浪费。以往内存中没有这么多的内容可以往虚拟内存中存放。所以,针对SQL Server数据库与Windows服务器来说,4倍于物理内存的虚拟内存已经足够了。设置的再大的话,就没有多少的实际意义了。

二、 调整本地客户端的任务优先级。

在数据库初始化的过程中,有大部分的任务需要在本地客户端上完成。即时在后续维护中,出于某种原因仍然要在本地客户端上操作。那么什么是本地客户端呢其实本地客户端就是跟数据库服务器部署在同一台计算机上的客户端。如我们在导入期初数据的时候,为了方便会在本地客户端上直接进行操作。因为这可以节省数据在网络上传输的时间。

不过在本地客户端上进行操作的时候,往往分为前台运行与后台运行。操作系统这么设计的本意是为了提高远程客户端的执行效率。如在远程客户端生成物料需求计划的时候,由于运算量比较大,其花费的时间可能比较久,如可能需要20分钟。为了提高工作效率,对于类似的作业,应用程序可以把这个运算放置在后台运行。不过需要注意的是,把某个作业放置在后台运行,并不能够节省其运行的时间,而往往由于放置在后台的作业其优先级比较低,往往实际花费的时间还会延长,如会延长到23分钟等等。之所以要把这个长时间运行的作业放置在后台,主要是为了让用户不用干等,可以先作其他事情。等到运行完成后,系统会自动把相关的结果返回给用户。这在感觉上是缩短了运行的时间(往往在等待的过程中时间过得特别慢),而实际上其运行的时间根本没有缩短,甚至会更长。

这个处理策略对于远程客户端来说确实有用,至少可以在感觉上缩短用户的等待时间。而且可以让用户先进行其他的操作。但是如果在本地客户端上,处理某些作业的时候,可能并不希望如此。如在本地客户度进行物料需求计划测试,数据库管理员希望即时把这个计划放置在后台运行,其也能够与前台应用程序具有相同的优先级,以减少这个处理时间。所以,当数据库管理员遇到类似情况时,就需要调整操作系统的相关设置,让作为在后台运行的应用程序,也能够与前台运行的其他应用程序具有相同的优先级。

通常情况下,安装完干净的SQL Server数据库时,服务器任务调度设置为“务”,即前后台应用程序没有优先级的分别。也就是说,此时将为前台应用程序与后台应用程序提供相等的处理时间。但是有时候为了兼顾远程客户端,在部署实例的时候,会改变这设置。如把降低后台应用程序的优先级,让更多的资源能够服务于前台应用程序。在大部分情况下,这个设置是必要的。不过如果出于某些原因需要在本地客户端执行某些操作的话,则数据库管理员需要暂时调整这个配置,以节省某些作业的运行时间。有时候甚至可以将服务器任务调度设置为最大或者应用程序,这就可以为前台应用程序提高最大的处理器时间。

可见,任务调度计划设置也没有一个统一的优劣标准。主要还是需要看数据库服务器到底用来做什么为此这也对数据库管理员提出了比较高的要求。此时数据库管理员必须要理解各种优先级设置对于数据库服务器性能的影响。然后再根据当时的实际应用来合理的调整任务级别的优先级,以取得本地客户端操作的最大性能。

三、 限制系统内存用户文件缓存的大小。

毋庸置疑,数据库服务器的物理内存对于数据库的性能具有至关重要的影响。但是有时候我们会发现一个奇怪的现象,即即时增加了数据库服务器的物理内存,但是仍然没有发现数据库的性能有很大的改善,或则说比原先的还要差一点。这是什么原因呢如结合SQLServer数据库来说,这主要是内存的分配不是很合理。如大部分的内存被用来存放文件缓存。此时如果增加的内存都被用来存放文件缓存了,那么光靠简单的增加内存并不能够提高数据库的性能。所以,有时候我们数据库管理员需要优化SQL Server服务器的内存使用情况,如需要限制用户文件缓存的内存量。

那么该如何限制呢这不是SQLServer数据库服务器来完成的,而是需要通过Windows操作下系统的配置来实现。如要限制文件系统缓存,需要确保没有选择“最大化文件共享数据吞吐量”这个选项(其原来是为文件共享所准备的),然后选择“最小化使用对内存”或者“平衡”选项,来制定最小文件系统缓存。

具体来说,可以按如下步骤来调整这个选项,以提高服务器的性能。首先,依次打开控制面板、选择网络连接、单击本地连接。然后打开常规选项卡,选择属性。在本地连接属性对话框中选择常规选项卡,选择微软网络的文件和打印机共享,并单击属性。在弹出来的对话框中,去掉“最大化文件共享数据吞吐量”选择,可以选择“最大化网络应用程序的数据吞吐量”。然后按确定即可。如此操作系统就会自动调整内存的分配,不会给文件缓存保留很大的空间,从而可以提高数据库内部处理的性能。往往这对于事务性的应用系统很有作用,能够在很大程度上提高数据库的性能。

不过在调整这个配置后,如果在站台服务器上还部署有文件服务器的话,那么这个文件服务器的性能就会受到比较大的影响。因为对于文件服务器应用来说,需要比较大的文件缓存量。为此在某种程度上来说,数据库服务器与文件服务器在这方面是相互冲突的。数据库管理员就需要相互权衡,然后确定一个最佳的处理方案。不过一般情况下,不建议将数据库服务器与文件服务器、打印服务器等等部署在同一个服务器上。因为这三种不同的应用,彼此之间的资源争用还是很厉害的。为此会给数据库的性能带来比较大的负面影响。

如果光从数据库服务器来说,限制文件缓存的内存使用量,确实可以提高数据库服务器的性能。特别是对于某些特别的应用与计算,由于需要用到比较大的内存,故可以大幅度提高这些作业的运算量。

可见我们在优化数据库性能的时候,有时还不能够光从数据库服务器着手。必要的时候,我们需要换一个角度,从操作系统出发,调整操作系统的相关配置,也能够明显的提高数据库的性能。

MySQL和SQLServer的比较

对于程序开发人员而言,目前使用最流行的两种后台数据库即为MySQL和SQLServer。这两者最基本的相似之处在于数据存储和属于查询系统。你可以使用sql来访问这两种数据库的数据,因为它们都支持ansi-sql。 还有,这两种数据库系统都支持二进制关键词和关键索引,这就大大地加快了查询速度。同时,二者也都提供支持xml的各种格式。除了在显而易见的软件价格上的区别之外,这两个产品还有什么明显的区别吗?在这二者之间你是如何选择的?让我们看看这两个产品的主要的不同之处,包括发行费用,性能以及它们的安全性。

根本的区别是它们遵循的基本原则

二者所遵循的基本原则是它们的主要区别:开放vs保守。SQLServer服务器的狭隘的,保守的存储引擎与MySQL服务器的可扩展,开放的存储引擎绝然不同。虽然你可以使用SQLServer服务器的sybase引擎,但MySQL能够提供更多种的选择,如myisam, heap, innodb, and berkeley db。MySQL不完全支持陌生的关键词,所以它比SQLServer服务器要少一些相关的数据库。同时,MySQL也缺乏一些存储程序的功能,比如myisam引擎联支持交换功能。

发行费用:MySQL不全是免费,但很便宜

当提及发行的费用,这两个产品采用两种绝然不同的决策。对于SQLServer服务器,获取一个免费的开发费用最常的方式是购买微软的office或者visual studio的费用。但是,如果你想用于商业产品的开发,你必须还要购买sql server standard edition。学校或非赢利的企业可以不考虑这一附加的费用。

性能:先进的MySQL

纯粹就性能而言,MySQL是相当出色的,因为它包含一个缺省桌面格式myisam。myisam 数据库与磁盘非常地兼容而不占用过多的cpu和内存。MySQL可以运行于windows系统而不会发生冲突,在unix或类似unix系统上运行则更好。你还可以通过使用64位处理器来获取额外的一些性能。因为MySQL在内部里很多时候都使用64位的整数处理。Yahoo!商业网站就使用MySQL作为后台数据库。

当提及软件的性能,SQLServer服务器的稳定性要比它的竞争对手强很多。但是,这些特性也要付出代价的。比如,必须增加额外复杂操作,磁盘存储,内存损耗等等。如果你的硬件和软件不能充分支持SQLServer服务器,我建议你最好选择其他如dbms数据库,因为这样你会得到更好的结果。

安全功能

MySQL有一个用于改变数据的二进制日志。因为它是二进制,这一日志能够快速地从主机上复制数据到客户机上。即使服务器崩溃,这一二进制日志也会保持完整,而且复制的部分也不会受到损坏。

在SQLServer服务器中,你也可以记录SQLServer的有关查询,但这需要付出很高的代价。

安全性

这两个产品都有自己完整的安全机制。只要你遵循这些安全机制,一般程序都不会出现什么问题。这两者都使用缺省的ip端口,但是有时候很不幸,这些ip也会被一些黑客闯入。当然,你也可以自己设置这些ip端口。

恢复性:先进的sql服务器

恢复性也是MySQL的一个特点,这主要表现在myisam配置中。这种方式有它固有的缺欠,如果你不慎损坏数据库,结果可能会导致所有的数据丢失。然而,对于SQLServer服务器而言就表现得很稳键。SQLServer服务器能够时刻监测数据交换点并能够把数据库损坏的过程保存下来。

根据需要决定你的选择

对于这两种数据库,如果非要让我说出到底哪一种更加出色,也许我会让你失望。以我的观点,任一对你的工作有帮助的数据库都是很好的数据库,没有哪一个数据库是绝对的出色,也没有哪一个数据库是绝对的差劲。我想要告诉你的是你应该多从你自己的需要出发,即你要完成什么样的任务?而不要单纯地从软件的功能出发。

如果你想建立一个net服务器体系,这一体系可以从多个不同平台访问数据,参与数据库的管理,那么你可以选用SQLServer服务器。如果你想建立一个第三方站点,这一站点可以从一些客户端读取数据,那么MySQL将是最好的选择。 

这两者数据库都能够在net或j2ee下运行正常,同样,都能够利用raid。

SQL语句的优化是将性能低下的SQL语句转换成目的相同的性能优异的SQL语句。

人工智能自动SQL优化就是使用人工智能技术,自动对SQL语句进行重写,从而找到性能最好的等效SQL语句。

数据库性能的优化

一个数据库系统的生命周期可以分成:设计、开发和成品三个阶段。在设计阶段进行数据库性能优化的成本最低,收益最大。在成品阶段进行数据库性能优化的成本最高,收益最小。

数据库的优化通常可以通过对网络、硬件、操作系统、数据库参数和应用程序的优化来进行。最常见的优化手段就是对硬件的升级。根据统计,对网络、硬件、操作系统、数据库参数进行优化所获得的性能提升,全部加起来只占数据库系统性能提升的40%左右,其余的60%系统性能提升来自对应用程序的优化。许多优化专家认为,对应用程序的优化可以得到80%的系统性能的提升。

应用程序的优化

应用程序的优化通常可分为两个方面:源代码和SQL语句。由于涉及到对程序逻辑的改变,源代码的优化在时间成本和风险上代价很高,而对数据库系统性能的提升收效有限。

为什么要优化SQL语句

SQL语句是对数据库进行操作的惟一途径,对数据库系统的性能起着决定性的作用。

SQL语句消耗了70%至90%的数据库资源。

SQL语句独立于程序设计逻辑,对SQL语句进行优化不会影响程序逻辑。

SQL语句有不同的写法,在性能上的差异非常大。

SQL语句易学,但难精通。

优化SQL语句的传统方法是通过手工重写来对SQL语句进行优化。DBA或资深程序员通过对SQL语句执行计划的分析,依靠经验,尝试重写SQL语句,然后对结果和性能进行比较,以试图找到性能较佳的SQL语句。这种传统上的作法无法找出SQL语句的所有可能写法,且依赖于人的经验,非常耗费时间。

SQL优化技术的发展历程

第一代SQL优化工具是执行计划分析工具。这类工具针对输入的SQL语句,从数据库提取执行计划,并解释执行计划中关键字的含义。

第二代SQL优化工具只能提供增加索引的建议,它通过对输入的SQL语句的执行计划的分析,来产生是否要增加索引的建议。

第三代SQL优化工具不仅分析输入SQL语句的执行计划,还对输入的SQL语句本身进行语法分析,经过分析产生写法上的改进建议。

人工智能自动SQL优化

图1 人工智能自动SQL优化示意图

人工智能自动SQL优化出现在90年代末。目前在商用数据库领域,LECCO Technology Limited(灵高科研有限公司)拥有该技术,并提供使用该技术的自动优化产品LECCO SQL Expert,它支持Oracle、Sybase、MS SQL Server和IBM DB2数据库平台。该产品针对数据库应用的开发和维护阶段提供的模块有:SQL语法优化器、PL/SQL集成化开发调试环境(IDE)、扫描器、数据库监视器等。其核心模块SQL 语法优化器的工作原理为:①输入一条源SQL语句;②“人工智能反馈式搜索引擎”对输入的SQL语句,结合检测到的数据库结构和索引进行重写,产生N条等效的SQL语句输出;③产生的N条等效SQL语句再送入“人工智能反馈式搜索引擎”进行重写,直至无法产生新的输出或搜索限额满;④对输出的SQL语句进行过滤,选出具有不同执行计划的SQL语句;⑤对得到的SQL语句进行批量测试,找出性能最好的SQL语句。

LECCO SQL Expert自动优化实例

假设我们从源代码中抽取出这条SQL语句(也可以通过内带的扫描器或监视器获得SQL语句):

SELECT COUNT()

FROM EMPLOYEE

swheresEXISTS (SELECT 'X'

FROM DEPARTMENT

swheresEMP_DEPT=DPT_ID

AND DPT_NAME LIKE 'AC%')

AND EMP_ID IN (SELECT SAL_EMP_ID

FROM EMP_SAL_HIST B

swheresSAL_SALARY > 70000)

按下“优化”按钮后,经过10几秒,SQL Expert就完成了优化的过程,并在这10几秒的时间里重写产生了2267 条等价的SQL语句,其中136条SQL语句有不同的执行计划。

接下来,我们可以对自动重写产生的136条SQL语句进行批运行测试,以选出性能最佳的等效SQL语句。按下“批运行” 按钮,在“终止条件” 页选择“最佳运行时间SQL语句”,按“确定”。

经过几分钟的测试运行后,我们可以发现SQL124的运行时间和反应时间最短。运行速度约有2275倍的提升(源SQL语句运行时间为273秒,SQL124运行时间为012秒)。现在我们就可以把SQL124放入源代码中,结束一条SQL语句的优化工作了。

“边做边学式训练”提升SQL开发水平

LECCO SQL Expert不仅能够找到最佳的SQL语句,它所提供的“边做边学式训练”还能够教开发人员和数据库管理员如何写出性能最好的SQL语句。LECCO SQL Expert的“SQL比较器”可以标明源SQL和待选SQL间的不同之处。

以上面优化的结果为例,为了查看源SQL语句和SQL124在写法上有什么不同,我们可以按下“比较器” 按钮,对SQL124和源SQL语句进行比较。“SQL 比较器”将SQL124相对于源SQL语句的不同之处以蓝颜色表示了出来。如果选择“双向比较”复选框,“SQL 比较器”可以将两条SQL语句的不同之处以蓝色表示。当然,我们也可以从源语句和重写后的SQL 语句中任选两条进行比较。

从比较的结果可以看到,重写后的SQL124把第一个Exists改写成了In;在字段DPT_ID上进行了合并空字符串的操作,以诱导数据库先执行子查询中的

(SELECT DPT_ID||''

FROM DEPARTMENT

WHERE DPT_NAME LIKE 'AC%')

在子查询完成后,再与EMPLOYEE表进行嵌套循环连接(Nested Loop Join)。

如果觉得对写法的改变难以理解,还可以点中“执行计划”复选框,通过比较两条SQL语句的执行计划的不同,来了解其中的差异。在查看执行计划过程中,如果有什么不明白的地方,可以点中“SQL信息按钮”,再点击执行计划看不明白的地方,LECCO SQL Expert的上下文敏感帮助系统将提供执行计划该处的解释。

在“SQL比较器”中,选中“统计信息”复选框后,可得到详细的两条SQL语句运行时的统计信息比较,这对于学习不同的SQL写法对数据库资源的消耗很有帮助。

LECCO SQL Expert优化模块的特点

LECCO SQL Expert优化模块的特点主要表现为:自动优化SQL语句;以独家的人工智能知识库“反馈式搜索引擎”来重写性能优异的SQL语句;找出所有等效的SQL语句及可能的执行计划;保证产生相同的结果;先进的SQL语法分析器能处理最复杂的SQL语句;可以重写SELECT、SELECT INTO、UPDATE、INSERT和DELETE语句;通过测试运行,为应用程序和数据库自动找到性能最好的SQL语句;提供微秒级的计时,能够优化Web应用程序和有大量用户的在线事务处理中运行时间很短的SQL语句;为开发人员提供“边做边学式训练”,迅速提高开发人员的SQL编程技能;提供上下文敏感的执行计划帮助系统和SQL运行状态帮助;不是猜测或建议,而是独一无二的SQL重写解决方案。

写出专家级的SQL语句

LECCO SQL Expert的出现,使SQL的优化变得极其简单,只要能够写出SQL语句,它就能帮用户找到最好性能的写法。LECCO SQL Expert不仅能在很短的时间内找到所有可能的优化方案,而且能够通过实际测试,确定最有效的优化方案。同以往的数据库优化手段相比较,LECCO SQL Expert将数据库优化技术带到了一个崭新的技术高度,依赖人的经验、耗费大量时间、受人的思维束缚的数据库优化手段已经被高效、省时且准确的自动优化软件所取代了。通过内建的“LECCO小助手”的帮助,即使是SQL的开发新手,也能快速且简单地写出专家级的SQL语句。

SQL Server的优点众多,让其在数据库领域独占鳌头,成为最受用户欢迎的数据库系统,下面就让我们来了解SQL Server的优点和缺点。

SQL Server是一个关系数据库管理系统,它最初是由Microsoft, Sybase和Ashton-Tate三家公司共同开发的于1988 年推出了第一个OS/2 版本,在Windows NT 推出后,Microsoft与Sybase在SQL Server的开发上就分道扬镳了,Microsoft将SQL Server移植到Windows NT系统上专注于开发推广SQL Server的Windows NT版本,Sybase则较专注于SQL Server在UNIX操作系统上的应用Microsoft SQL Server以后简称为SQL Server或MS SQL Server 。

随着信息技术的发展,计算机处理数据的方式也发生着变化,文件管理系统--数据库管理系统。Microsoft SQL Server是一个分布式的关系型数据库管理系统,具有客户机/服务器体系结构,采用了Transact-sql的sql语言在客户机与服务器间传递客户机的请求与服务器的处理结果。

众所周知,SQL Server能够满足今天的商业环境要求不同类型的数据库解决方案。它一种应用广泛的数据库管理系统,具有许多显著的优点:易用性、适合分布式组织的可伸缩性、用于决策支持的数据仓库功能、与许多其他服务器软件紧密关联的集成性、良好的性价比等。性能、可伸缩性及可靠性是基本要求,而进入市场时间也非常关键。

除这些SQL Server的优点外,SQLServer还为您的数据管理与分析带来了灵活性,允许单位在快速变化的环境中从容响应,从而获得竞争优势。从数据管理和分析角度看,将原始数据转化为商业智能和充分利用Web带来的机会非常重要。作为一个完备的数据库和数据分析包,SQLServer为快速开发新一代企业级商业应用程序、为企业赢得核心竞争优势打开了胜利之门。作为重要的基准测试可伸缩性和速度奖的记录保持者,SQLServer是一个具备完全Web支持的数据库产品,提供了对可扩展标记语言 (XML)的核心支持以及在Internet上和防火墙外进行查询的能力。

SQL Server的优点众多,但是Microsoft SQL Server和其他数据库产品相比也存在着以下劣势:

1开放性。只能运行在微软的windows平台,没有丝毫的开放性可言。

2可伸缩性,并行性。并行实施和共存模型并不成熟,很难处理日益增多的用户数和数据卷,伸缩性有限。

3性能稳定性。SQLServer当用户连接多时性能会变的很差,并且不够稳定。

4使用风险。SQLServer完全重写的代码,经历了长期的测试,不断延迟,许多功能需时间来证明。并不十分兼容早期产品。使用需要冒一定风险。

5客户端支持及应用模式。只支持C/S模式。

  提升数据库性能可以提升查询速度,优化数据库结构,减少服务器压力等,那么如何优化数据库呢?昆明电脑培训http://wwwkmbdqncn/来看看下面的文章!

  1数据库I/O方面硬件性能

  最有可能影响性能的是磁盘和网络吞吐量。解决办法:

  ·扩大虚拟内存,并保证有足够可以扩充的空间

  ·把数据库服务器上的不必要服务关闭掉

  ·把SQL数据库服务器的吞吐量调为最大

  2调整数据库

  ·若对该表的查询频率比较高,则建立索引。

  ·分区(如MySQL,按时间分区)

  ·尽量使用固定长度字段和限制字段长度(如varchar(10))优势:

  降低物理存储空间

  提高数据库处理速度

  附带校验数据库是否合法功能

  3使用存储过程

  应用程序的实现过程中,能够采用存储过程实现的对数据库的操作尽量通过存储过程来实现。

  因为存储过程是存放在数据库服务器上的一次性被设计、编码、测试,并被再次使用,需要执行该任务的应用可以简单地执行存储过程,并且只返回结果集或者数值。

  这样不仅可以使程序模块化,同时提高响应速度,减少网络流量,并且通过输入参数接受输入,使得在应用中完成逻辑的一致性实现。

  4SQL语句方面

  建立查询条件索引仅仅是提高速度的前提条件,响应速度的提高还依赖于对索引的使用。不良的SQL往往来自于不恰当的索引设计、不充份的连接条件和不可优化的where子句。

  ·优化sql语句,减少比较次数

  ·限制返回条目数(mysql中使用limit)

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 调整Windows参数提高MSSQL Server性能

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情