影响服务器性能都有什么因素

影响服务器性能都有什么因素,第1张

第一、服务器租用时的带宽和线路问题服务器租用带宽分为独享和共享两种,独享故名思议就是用户独自使用一定的带宽,共享带宽通常情况下是百兆共享,独享带宽的费用要比共享高的多,所以对于带宽要求不是很高的企业可以选择共享带宽;服务器租用的线路问题,常用的线路有单线、双线以及多线,这是因为国内的两大网络(南方电信和北方网通)之间的互联互通问题。导致电信用户访问网通网站或网通用户访问电信网站很慢,进而出现了双线服务器,能够很高的解决南北线路访问慢的问题。因此,如果企业用户集中在南方可以选择网通服务器;如果几种在北方可以选择电信服务器;如果企业是面向全国用户的可以选择双线服务器。双线的费用要比单线服务器托管费用要高一些。第二、服务器租用签订合约的问题企业进行服务器租用一定要与服务商签订合同,以免在后期服务过程中引起不必要的矛盾。1、合同中的带宽、开通日期、付款方式、金额等;2、权利义务项需要严格的遵守国家法律法规,不得利用网络进行违法活动;3、托管服务器的维护需要注意的事项也需要了解清楚,这样便于之后双方工作的进行;4、服务器托管过程中违约条款的了解,这个事项牵扯到双方是否能够一直能够愉快的合作下去并且不损害双方的利益。第三、选择的服务器租用商是否正规现在做服务器托管业务的企业很多,导致服务器托管市场鱼龙混杂、良莠不齐,正规的服务器托管商能够提供完善的售后服务器,如全国免费400电话、24小时值班等;专业的技术团队,一般大型的服务商都是有自主机房的,机房有专业技术人员724小时全天候值班,能够在服务器出现故障的第一时间进行相应的解决;优质的机房环境,正规的机房能够提供恒温、恒湿、防尘、防潮、防静电、365天稳定电压等机房环境,以及高防硬件防火墙,能够防御大批量的攻击,如CC攻击、DDOS攻击等。在此小编推荐郑州腾佑科技。腾佑科技作为国内顶级互联网基础应用服务提供商,有自己的自主机房和产权,拥有双线服务器,拥有大型的机房三座,顺应时代发展和客户需求,在服务器托管和服务器租用方面,具备多项优势,特别适用于对网站运行质量有较高要求的用户。

微机操作人员或多或少要受到微机所发射的电磁波的危害。显示器的X射线,是微机对人身造成损害的主要方面。迄今为止,配优质显象管的显示器也只能自称是“低辐射”的显示器,而没有无辐射的显示器。

IC芯片工作时发出辐射完全可以覆盖某频段无线电发射出的信号的现象。随即对该现象进行了深入研究,结论是:凡是“电脑”无论大小,只要处于工作状态均有复合频率的辐射产生。并取得了一些意外收获:人们目前经常使用的电脑主机工作状态释放的电磁波对人体的影响要比显示器的辐射影响大。这即是电脑工作人员“电脑病”的原因。因此,一定要给电脑加装一条良好的接地线。

从医学角度上讲,人体在电磁场中吸收辐射能量而受到不同程度地损害,主要是引起中枢神经功能失调、心悸、白血球变化,以及损伤眼睛、引发白内障等。

虽然电磁场看不见摸不着,但重视其危害、加强对微机的防护很有必要。

电脑人通病——眼蒙肘肩痛

新电脑病:腕管综合征

谨防身心失调的“电脑综合症

玩电脑玩出网络性心理障碍

谨防网络性心理障碍

电脑引发的“电脑狂暴症”

电脑引发的“信息疲劳症”“因特网痴迷症”

使用电脑导致年轻人记忆力减退

电脑操作时的肌肉骨骼损伤

切莫小觑电脑"失写症"防治电脑病电脑时代的新病种袭来---网络性心理障碍患者自伤

长期玩网络游戏影响大脑左前脑发育

计算机操作时的肌肉骨骼损伤

造成服务器异常的原因

有好多种

1、服务器所在的机房设备出现故障

2、用户操作不当

3、病毒侵害

4、服务器故障

5、网络故障

二、服务器常见的异常问题及解决办法

1、机房设备故障引发的服务器不能正常运行

在机房配备专业人员做好日常管理和维护,及时检查和购买新的设备或者服务器。

2、用户操作不当引发的异常

公司要雇用专业人员管理和维护好服务器,降低出现故障的几率,以便第一时间能够及时处理问题,降低风险,减少损失。

3、网站打不开、被跳转、网站显示错误等

这时候可以下载专业的正版查毒软件,对电脑进行定期的全面病毒查杀,以绝后患。

4、用户无法打开网页

出现这种问题,可以耐心等候一段时间再进行再次访问,也可以多刷新几遍网页试试,并赶紧对服务器进行修复。

5、被DNS劫持出现的网络故障

这种情况是电脑上的其他应用都可以正常运行,但是网站却打不开,很有可能就是网站被DNS劫持了,需要重新设置或修改DNS地址。

6、系统蓝屏、频繁死机、重启、反映速度迟钝

服务器的结构与普通电脑的构成是十分相似的,出现这种情况是感染了病毒引起的,也有可能是系统漏洞、软件冲突、硬件故障等原因造成的。遇到这种问题就要及时杀毒,修复系统漏洞和硬件故障,清理缓存垃圾。

7、远程桌面连接超出最大连接数

如果登录后忘记注销服务器默认允许的2个连接,而是直接关闭远程桌面,这种时候可能就要重启服务器,并且是在高峰期的话,就很容易造成损失。这种异常问题,就要利用“mstsc/console”指令进行强行登陆,具体操作就是打开“运行”框,输入“mstsc/v:xxxxxxxxxxxx(服务器IP)/console”,即可强行登陆到远程桌面。

8、出现无法删除的文件

如果这些无法删除的文件还在运行中,可以重启电脑,然后删除。另一种办法是,运行CMD,输入“arrtib-a-s-h-r”和想要删除的文件夹名,最后输入“del”,这样想要删除的文件夹即可删除,但是运行该命令后无法恢复,要谨慎使用。

9、系统端口隐患

对于服务器来说,首先要保证的就是它的稳定性和安全性。因此,我们只要保留的是服务器最基本的功能就可以了,声卡一般都是默认禁止的。我们不会用到很多功能,也不需要很多的端口支持。这时候,我们就关掉一些不必要的、风险大的端口,例如3389、80等端口,用修改注册表的方式将其设置成不特殊的秘密端口,这样可以消除服务器端口的安全隐患。

可用性这个性能。

安全威胁通常有以下4种攻击类型

1中断:系统的资源被破坏或变得不可利用或不能使用,这是对可用性的攻击。

2窃取:以未授权的方式获得了对资源的访问,这是对保密性的攻击。

3篡改:截获并且修改了资源,这是对数据完整性的攻击。

4伪造(或假冒):以未授权方式将伪造的对象插入系统,这是对真实性的攻击。

DOS的英文全称是Denial of Service,也称为“拒绝服务”。从网络攻击的各种方法和所产生的破坏情况来看,DOS算是一种很简单但又很有效的进攻方式。它的目的就是拒绝客户的服务访问,破坏组织的正常运行,最终它会使部分Internet连接和网络系统失效,可见它是对信息可用性的破坏。

DOS的攻击方式有很多种,最基本的DOS攻击就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务。其基本过程如下:首先攻击者向服务器发送众多的带有虚假地址的请求,服务器发送回复信息后等待回传信息,由于地址是伪造的,所以服务器一直等不到回传的消息,分配给这次请求的资源就始终没有被释放。当服务器等待一定的时间后,连接会因超时而被切断,攻击者会再度传送新的一批请求,在这种反复发送伪地址请求的情况下,服务器资源最终会被耗尽。

我们假如会有这个可能,假如腾讯的服务器被攻破了,那么腾讯旗各大软件都会受到影响(可能会导致软件打不开或者登不上等问题),还有就是腾讯的用户信息(也就是个人信息)有可能会被泄露出去,腾讯可能会面临比较严重的损失。但是这一系列的前提是你要能攻破腾讯的安防系统。作为国内互联网三大巨头之一,相信他们的安全系统都会做的比较严格,不容有半点马虎。

自从电子产品问世以来,灰尘就是它最大的天敌,可是灰尘就偏偏“爱上”了电子产品,没办法。即使如此,我们还是要想尽一切办法去对付灰尘,为了我们这些电子产品不至于葬送于灰尘之手,一定要做好服务器除尘工作。一、灰尘对机房的危害 灰尘可以说是机房的劲敌,如果不注意在遍布服务器的机房做好除尘措施,724的工作方式,再好的服务器或网络设备都会出问题。 由于目前的网络设备和服务器在运行的过程中会产生很多的热量,为了将这些热量散发出去,通常都会采用主动散热的方式排出热量,而由于机房的空间狭小,这些设备通常采用风冷方式进行散热,散热孔与对流的空气配合,非常高效的将灰尘带入设备内部。除此之外,某些设备工作时会产生高压与静电,都会吸引空气的灰尘。 灰尘会夹带水分和腐蚀物质一起进入设备内部。覆盖在电子元件上,可以造成电子元件散热能力下降,长期积聚大量热量则会导致设备工作不稳定。 除此之外,由于灰尘中含有水分和腐蚀物质,会使相邻印制线间的绝缘电阻下降,甚至短路,影响电路的正常工作,严重的甚至会烧坏电源、主板和其它设备部件。相反,过多的干灰尘进入设备后,则会起到良好的绝缘作用,直接导致接插件触点间出现接触不良。而落入包含机械结构的设备中后,将会使设备动作的摩擦阻力增加,轻者加快设备的磨损,重则将直接导致设备卡死损坏,其中表现最为突出的就是包含机械运动设备且密封性较差的磁带机和软盘驱动器。 二、如何杜绝灰尘产生 1灰尘的产生途径有: ●用于维持整个机房环境的温度和湿度的空调系统,不可避免的会将一部分灰尘带入机房; ●机房在维护过程中,进出的人员会将一部分灰尘带入机房; ●建筑物本身产生的灰尘,机房的门窗(特别是未经防尘处理的普通房间)容易流入大量灰尘。而机房本身的老化,如:墙壁、地面、顶棚等表面产生的表皮脱落形成的灰尘; ●机房设备本身产生的灰尘,如打印机等在运转过程中产生的纸屑与墨粉颗粒; ●机房处于负压环境,大多数机房在运行时对机房外部都是负压,即外界气压高于机房气压,造成机房内灰尘洁净度严重超标。 2如何杜绝灰尘的产生: ●机房分区控制,对于大型机房,条件允许的情况下应进行区域化管理,将易受灰尘干扰的设备尽量与进入机房的人员分开,减少其与灰尘接触的机会。例如将机房分为三个区域,服务器主机区,控制区,数据处理终端区。并设置专门的参观通道,通道与主机区用玻璃幕墙隔开。 ●定期检查机房密封性。定期检查机房的门窗、清洗空调过滤系统,封堵与外界接触的缝隙,杜绝灰尘的来源,维持机房空气清洁。 ●维持机房环境湿度,严格控制机房空气湿度,即要保证减少扬尘、同时还要避免空气湿度过大,设备产生锈蚀和短路。 ●严格控制人员出入,设置门禁系统,不允许未获准进入机房的人进入机房。进入机房的人员的活动区域也要严格控制,尽量避免其进入主机区域。 ●做好预先除尘措施,机房应配备专用工作服和拖鞋,并经常清洗。进入机房的人员,无论是本机房人员还是其他经允许进入机房的人员,都必须更换专用拖鞋或使用鞋套。尽量减少进入机房人员穿着纤维类或其他容易产生静电附着灰尘的服装进入。 ●提高机房压力,建议有条件的机房采用正压防灰尘,即通过一个类似打气桶的设备向机房内部持续的源源不断的输入新鲜、过滤好的空气,加大机房内部的气压,由于机房内外的压差,使机房内的空气通过密闭不严的窗户、门等的缝隙向外泄气,从而达到防尘的效果。 三、机房除尘技巧

灰尘作为机房设备的最大杀手,定期给服务器除尘是必不可少的工作。尤其是未经特殊规划和处理的普通存放环境,使用一段时间后,服务器中会沉积大量的灰尘。我们就需要定期为服务器清理灰尘,这一点在夏季尤为重要,事实上除尘方法与普通PC除尘方法相同,但是做为一个系统工程同样需要注意一些技巧。 1清理前的准备 ●设定合理的除尘周期 根据机房的具体情况设定合理的除尘周期,并按照机房内部、机房外部、机房设备内部三部分进行分别清洁。以一个中等校园机房为例,机房内部卫生应每三天清理一次,每半个月进行一次彻底清洁;机房外部每天清洁;每周对设备吸附尘土情况进行检查,对有必要清洁的设备每月进行一次清洁;每两年根据实际使用情况对机房设备和机房进行中修,每五年对机房及设备进行大修。 ●谨防静电危害 拆机清理设备时,首先要避免人员带电对设备造成损害,在清理前应当先穿好防静电服,佩戴除静电环等设备。避免带电拆机,即必须在完全断电、服务器接地良好的情况下进行,即使是支持热插拔的设备也是如此,以防止静电对设备造成损坏。对于显示器等设备应首先做放电处理。 ●了解设备结构 由于机房设备来自不同厂商,各自设计并不相同,特别是许多品牌服务器机箱的设计比较特殊,需要特殊的工具或机关才能打开,在卸机箱盖的时候,需要仔细看说明书,不要强行拆卸。 ●清洁工具的选择 设备的清洁不需要很复杂的工具,一般的除尘维护只需要准备十字螺丝刀、平口螺丝刀、油漆刷或者油画笔,不要使用普通毛笔等容易脱毛的笔刷。电吹风、无水酒精、散热硅油、脱脂棉球、钟表起子、镊子、皮老虎。如需简单维护,还需要尖嘴钳、试电笔万用表等设备。 重点清洁的部件内部尤其要注意的是电源的除尘 2重点部件的清洁需求 ●主板的清洁 作为整个设备的基础硬件,主板堆积灰尘最容易引起问题,其也最容易聚集大量灰尘。首先要取下所有的插接件,拔下设备要进行编号,以防弄混。拆除固定主板的螺丝,取下主板,用羊毛刷去各部分的积尘。力量一定要始终,以防碰掉主板表面的贴片元件或造成元件的松动以致虚焊。灰尘过多处可以使用无水酒精进行清洁。对于主板上的测温元件(热敏电阻)要进行特殊保护,如提前用遮挡物对其进行遮挡,避免这些元件损坏而引发主板出现保护性故障。主板上的插槽如果回车过多可用皮老虎或吹风机进行清洁,如果出现氧化现象,可以用具备一定硬度的纸张,插入槽内来回擦拭(表面光滑那面向外)。 ●插接件的处理 插接件表面可以用与清理主板相同的方法清理,插接部分出现氧化现象的,可以用橡皮仔细把金手指擦干净,插回到主板后,在插槽两侧用热熔胶填避缝隙,防止在使用过程中灰尘的进入和氧化情况出现。 ●风扇的清洁 风扇的叶片内、外通常积灰也会非常严重,我们可以用手抵住叶片逐一用毛刷掸去叶片上的积灰,然后用湿布将风扇及风扇框架内侧擦净。还可以在其转轴中加一些润滑油以改善其性能并降低噪音。具体加油方法是,揭开油挡即可看到风扇转轴,用手转动叶片并向转轴中滴入少许润滑油使其充分渗透,加油不宜过多否则会吸附更多的灰尘。最后贴上油挡。 散热片的清洁对于风扇与散热片可分离的结构,可以拆下散热片彻底用水清洗,灰尘少的可以用软毛刷加吹气球的方法清理,对于不可分离的散热片,可以用硬质毛刷清理缝隙中的灰尘,同时辅以吹风机吹尘。清洗后的散热片一定要彻底干燥后再装回,重新安装散热片时建议抹上适量导热硅脂增强热传导性。 ●箱体表面清洁 对于机箱内表面上积尘,就可以用拧干的湿布进行擦拭了。注意湿布应尽量干,避免残留水渍,擦拭完毕应该用电吹风吹干。 ●外围插头、插座清洁 对于这些外围插座,一般先用毛刷清除浮土,再用电吹风清洁。如果有油污,可用脱脂棉球沾无水酒精去除。也可使用清洁剂,不过清洁剂需为中性,偏酸性会对设备有腐蚀作用。且清洁剂挥发性一定要好。 ●电源 是非常容易积灰的设备,而且受温度影响严重。拆解电源时一定要注意内部高压,如果没有一定专业知识,不要私自拆开。如不拆解,可以用吹风机强挡对着电源进风口吹出尘土。并用硬毛刷隔着风扇滤网清洁一下风扇叶片。 ●其他注意事项 某些设备不允许用户自行拆借,否则将失去保修,拆借前请先联系设备生产商进行确认;各部件要轻拿轻放,尤其是硬盘,切不可磕碰;上螺丝时应松紧适中,在需要部位垫上绝缘片;除尘维护结束后重新将硬件装入机箱接上电缆和电源,在不盖机箱的情况下先试运行一下系统,看一下各风扇运转是否正常,查看是否有插接不牢或异响。 虽然灰尘无法在机房中彻底杜绝,但是保持好的机房环境还是可以大大减少灰尘带来的麻烦,所以日常的防尘才是重中之重,根据《电子计算机房设计规范》的规定,在静态条件下测试,每升空气中大于或等于05μm的尘粒数,应少于18000粒”。应当按照这个标准定期进行检查。为了保持机器的干净、清洁,需要我们每隔一段时间对机器内部做一个大清理。消除隐患,防患于未然。在服务器维修中,灰尘的清理,看似简单,我们也不能马虎,一定要认真清理。说不定以前很多的问题经过灰尘的清理就会立马OK了。

可用性功能。

根据百度题库相关信息显示,拒绝服务攻击,攻击者想办法让目标机器停止提供服务,是骇客常用的攻击手段之一,损害了信息系统的可用性能。

服务器是计算机的一种,它比普通计算机运行更快、负载更高、价格更贵。

[转载:http://www3liancom/edu/2013/12-30/120014html]

1、升级硬件

2、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。

3、扩大服务器的内存

4、增加服务器CPU个数

5、对于大的数据库不要设置数据库自动增长,它会降低服务器的性能

6、在查询Select语句中用Where字句限制返回的行数,避免表扫描,如果返回不必要的数据,浪费了服务器的I/O资源,加重了网络的负担降低性能。如果表很大,在表扫描的期间将表锁住,禁止其他的联接访问表,后果严重。

7、查询时不要返回不需要的行、列

8、用select top 100 / 10 Percent 来限制用户返回的行数或者SET ROWCOUNT来限制操作的行

9、在IN后面值的列表中,将出现最频繁的值放在最前面,出现得最少的放在最后面,减少判断的次数

10、一般在GROUP BY 个HAVING字句之前就能剔除多余的行,所以尽量不要用它们来做剔除行的工作。他们的执行顺序应该如下最优:

select的Where字句选择所有合适的行,Group By用来分组个统计行,Having字句用来剔除多余的分组。这样Group By 个Having的开销小,查询快对于大的数据行进行分组和Having十分消耗资源。如果Group BY的目的不包括计算,只是分组,那么用Distinct更快

11、一次更新多条记录比分多次更新每次一条快,就是说批处理好

MS SQL Server查询优化方法

查询速度慢的原因很多,常见如下几种

1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)

2、I/O吞吐量小,形成了瓶颈效应。

3、没有创建计算列导致查询不优化。

4、内存不足

5、网络速度慢

6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)

7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)

8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。

9、返回了不必要的行和列

10、查询语句不好,没有优化

可以通过如下方法来优化查询

1、把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可以将Tempdb应放在RAID0上,SQL2000不在支持。数据量(尺寸)越大,提高I/O越重要

2、纵向、横向分割表,减少表的尺寸(sp_spaceuse)

3、升级硬件

4、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。注意填充因子要适当(最好是使用默认值0)。索引应该尽量小,使用字节数小的列建索引好(参照索引的创建),不要对有限的几个值的字段建单一索引如性别字段

5、提高网速;

6、扩大服务器的内存,Windows 2000和SQL server 2000能支持4-8G的内存。配置虚拟内存:虚拟内存大小应基于计算机上并发运行的服务进行配置。运行 Microsoft SQL Server 2000 时,可考虑将虚拟内存大小设置为计算机中安装的物理内存的 15 倍。如果另外安装了全文检索功能,并打算运行 Microsoft 搜索服务以便执行全文索引和查询,可考虑:将虚拟内存大小配置为至少是计算机中安装的物理内存的 3 倍。将 SQL Server max server memory 服务器配置选项配置为物理内存的 15 倍(虚拟内存大小设置的一半)。

7、增加服务器CPU个数;但是必须明白并行处理串行处理更需要资源例如内存。使用并行还是串行程是MsSQL自动评估选择的。单个任务分解成多个任务,就可以在处理器上运行。例如耽搁查询的排序、连接、扫描和GROUP BY字句同时执行,SQL SERVER根据系统的负载情况决定最优的并行等级,复杂的需要消耗大量的CPU的查询最适合并行处理。但是更新操作 UPDATE,INSERT,DELETE还不能并行处理。

8、如果是使用like进行查询的话,简单的使用index是不行的,但是全文索引,耗空间。 like ‘a%‘ 使用索引 like ‘%a‘ 不使用索引用 like ‘%a%‘ 查询时,查询耗时和字段值总长度成正比,所以不能用CHAR类型,而是VARCHAR。对于字段的值很长的建全文索引。

9、DB Server 和APPLication Server 分离;OLTP和OLAP分离

10、分布式分区视图可用于实现数据库服务器联合体。联合体是一组分开管理的服务器,但它们相互协作分担系统的处理负荷。这种通过分区数据形成数据库服务器联合体的机制能够扩大一组服务器,以支持大型的多层 Web 站点的处理需要。有关更多信息,参见设计联合数据库服务器。(参照SQL帮助文件‘分区视图‘)

a、在实现分区视图之前,必须先水平分区表

b、在创建成员表后,在每个成员服务器上定义一个分布式分区视图,并且每个视图具有相同的名称。这样,引用分布式分区视图名的查询可以在任何一个成员服务器上运行。系统操作如同每个成员服务器上都有一个原始表的复本一样,但其实每个服务器上只有一个成员表和一个分布式分区视图。数据的位置对应用程序是透明的。

11、重建索引 DBCC REINDEX ,DBCC INDEXDEFRAG,收缩数据和日志 DBCC SHRINKDB,DBCC SHRINKFILE 设置自动收缩日志对于大的数据库不要设置数据库自动增长,它会降低服务器的性能。 在T-sql的写法上有很大的讲究,下面列出常见的要点:首先,DBMS处理查询计划的过程是这样的:

1、 查询语句的词法、语法检查

2、 将语句提交给DBMS的查询优化器

3、 优化器做代数优化和存取路径的优化

4、 由预编译模块生成查询规划

5、 然后在合适的时间提交给系统处理执行

6、 最后将执行结果返回给用户其次,看一下SQL SERVER的数据存放的结构:一个页面的大小为8K(8060)字节,8个页面为一个盘区,按照B树存放。

12、Commit和rollback的区别 Rollback:回滚所有的事物。 Commit:提交当前的事物 没有必要在动态SQL里写事物,如果要写请写在外面如: begin tran exec(@s) commit trans 或者将动态SQL 写成函数或者存储过程。

13、在查询Select语句中用Where字句限制返回的行数,避免表扫描,如果返回不必要的数据,浪费了服务器的I/O资源,加重了网络的负担降低性能。如果表很大,在表扫描的期间将表锁住,禁止其他的联接访问表,后果严重。

14、SQL的注释申明对执行没有任何影响

15、尽可能不使用光标,它占用大量的资源。如果需要row-by-row地执行,尽量采用非光标技术,如:在客户端循环,用临时表,Table变量,用子查询,用Case语句等等。游标可以按照它所支持的提取选项进行分类: 只进 必须按照从第一行到最后一行的顺序提取行。FETCH NEXT 是唯一允许的提取操作,也是默认方式。可滚动性 可以在游标中任何地方随机提取任意行。游标的技术在SQL2000下变得功能很强大,他的目的是支持循环。

有四个并发选项

READ_ONLY:不允许通过游标定位更新(Update),且在组成结果集的行中没有锁。

OPTIMISTIC WITH valueS:乐观并发控制是事务控制理论的一个标准部分。乐观并发控制用于这样的情形,即在打开游标及更新行的间隔中,只有很小的机会让第二个用户更新某一行。当某个游标以此选项打开时,没有锁控制其中的行,这将有助于最大化其处理能力。如果用户试图修改某一行,则此行的当前值会与最后一次提取此行时获取的值进行比较。如果任何值发生改变,则服务器就会知道其他人已更新了此行,并会返回一个错误。如果值是一样的,服务器就执行修改。 选择这个并发选项 OPTIMISTIC WITH ROW VERSIONING:此乐观并发控制选项基于行版本控制。使用行版本控制,其中的表必须具有某种版本标识符,服务器可用它来确定该行在读入游标后是否有所更改。

在 SQL Server 中,这个性能由 timestamp 数据类型提供,它是一个二进制数字,表示数据库中更改的相对顺序。每个数据库都有一个全局当前时间戳值:@@DBTS。每次以任何方式更改带有 timestamp 列的行时,SQL Server 先在时间戳列中存储当前的 @@DBTS 值,然后增加 @@DBTS 的值。如果某 个表具有 timestamp 列,则时间戳会被记到行级。服务器就可以比较某行的当前时间戳值和上次提取时所存储的时间戳值,从而确定该行是否已更新。服务器不必比较所有列的值,只需比较 timestamp 列即可。如果应用程序对没有 timestamp 列的表要求基于行版本控制的乐观并发,则游标默认为基于数值的乐观并发控制。

SCROLL LOCKS 这个选项实现悲观并发控制。在悲观并发控制中,在把数据库的行读入游标结果集时,应用程序将试图锁定数据库行。在使用服务器游标时,将行读入游标时会在其上放置一个更新锁。如果在事务内打开游标,则该事务更新锁将一直保持到事务被提交或回滚;当提取下一行时,将除去游标锁。如果在事务外打开游标,则提取下一行时,锁就被丢弃。因此,每当用户需要完全的悲观并发控制时,游标都应在事务内打开。更新锁将阻止任何其它任务获取更新锁或排它锁,从而阻止其它任务更新该行。

然而,更新锁并不阻止共享锁,所以它不会阻止其它任务读取行,除非第二个任务也在要求带更新锁的读取。滚动锁根据在游标定义的 SELECT 语句中指定的锁提示,这些游标并发选项可以生成滚动锁。滚动锁在提取时在每行上获取,并保持到下次提取或者游标关闭,以先发生者为准。下次提取时,服务器为新提取中的行获取滚动锁,并释放上次提取中行的滚动锁。滚动锁独立于事务锁,并可以保持到一个提交或回滚操作之后。如果提交时关闭游标的选项为关,则 COMMIT 语句并不关闭任何打开的游标,而且滚动锁被保留到提交之后,以维护对所提取数据的隔离。所获取滚动锁的类型取决于游标并发选项和游标 SELECT 语句中的锁提示。

锁提示 只读 乐观数值 乐观行版本控制 锁定无提示 未锁定 未锁定 未锁定 更新 NOLOCK 未锁定 未锁定 未锁定 未锁定 HOLDLOCK 共享 共享 共享 更新 UPDLOCK 错误 更新 更新 更新 TABLOCKX 错误 未锁定 未锁定 更新其它 未锁定 未锁定 未锁定 更新 指定 NOLOCK 提示将使指定了该提示的表在游标内是只读的。

16、用Profiler来跟踪查询,得到查询所需的时间,找出SQL的问题所在;用索引优化器优化索引

17、注意UNion和UNion all 的区别。UNION all好

18、注意使用DISTINCT,在没有必要时不要用,它同UNION一样会使查询变慢。重复的记录在查询里是没有问题的

19、查询时不要返回不需要的行、列

20、用sp_configure ‘query governor cost limit‘或者SET QUERY_GOVERNOR_COST_LIMIT来限制查询消耗的资源。当评估查询消耗的资源超出限制时,服务器自动取消查询,在查询之前就扼杀掉。 SET LOCKTIME设置锁的时间

10万数据量查询居然要50秒

用select top 100 / 10 Percent 来限制用户返回的行数或者SET ROWCOUNT来限制操作的行

22、在SQL2000以前,一般不要用如下的字句: "IS NULL", " <> ", "!=", "!> ", "! <", "NOT", "NOT EXISTS", "NOT IN", "NOT LIKE", and "LIKE ‘%500‘",因为他们不走索引全是表扫描。也不要在WHere字句中的列名加函数,如Convert,substring等,如果必须用函数的时候,创建计算列再创建索引来替代还可以变通写法:WHERE SUBSTRING(firstname,1,1) = ‘m‘改为WHERE firstname like ‘m%‘(索引扫描),一定要将函数和列名分开。并且索引不能建得太多和太大。NOT IN会多次扫描表,使用EXISTS、NOT EXISTS ,IN , LEFT OUTER JOIN 来替代,特别是左连接,而Exists比IN更快,最慢的是NOT操作如果列的值含有空,以前它的索引不起作用,现在2000的优化器能够处理了。相同的是IS NULL,“NOT", "NOT EXISTS", "NOT IN"能优化她,而” <> ”等还是不能优化,用不到索引。

23、使用Query Analyzer,查看SQL语句的查询计划和评估分析是否是优化的SQL。一般的20%的代码占据了80%的资源,我们优化的重点是这些慢的地方。

24、如果使用了IN或者OR等时发现查询没有走索引,使用显示申明指定索引: SELECT FROM PersonMember (INDEX = IX_Title) WHERE processid IN (‘男’,‘女’)

25、将需要查询的结果预先计算好放在表中,查询的时候再SELECT。这在SQL70以前是最重要的手段。例如医院的住院费计算。

26、MIN() 和 MAX()能使用到合适的索引

27、数据库有一个原则是代码离数据越近越好,所以优先选择Default,依次为Rules,Triggers, Constraint(约束如外健主健CheckUNIQUE……,数据类型的最大长度等等都是约束),Procedure这样不仅维护工作小,编写程序质量高,并且执行的速度快。

28、如果要插入大的二进制值到Image列,使用存储过程,千万不要用内嵌INsert来插入(不知JAVA是否)。因为这样应用程序首先将二进制值转换成字符串(尺寸是它的两倍),服务器受到字符后又将他转换成二进制值存储过程就没有这些动作: 方法:Create procedure p_insert as insert into table(Fimage) values (@image), 在前台调用这个存储过程传入二进制参数,这样处理速度明显改善。

29、Between在某些时候比IN速度更快,Between能够更快地根据索引找到范围。用查询优化器可见到差别。 select from chineseresume where title in (‘男‘,‘女‘) Select from chineseresume where between ‘男‘ and ‘女‘ 是一样的。由于in会在比较多次,所以有时会慢些。

30、在必要是对全局或者局部临时表创建索引,有时能够提高速度,但不是一定会这样,因为索引也耗费大量的资源。他的创建同是实际表一样。

31、不要建没有作用的事物例如产生报表时,浪费资源。只有在必要使用事物时使用它。

32、用OR的字句可以分解成多个查询,并且通过UNION 连接多个查询。他们的速度只同是否使用索引有关,如果查询需要用到联合索引,用UNION all执行的效率更高多个OR的字句没有用到索引,改写成UNION的形式再试图与索引匹配。一个关键的问题是否用到索引。

33、尽量少用视图,它的效率低。对视图操作比直接对表操作慢,可以用stored procedure来代替她。特别的是不要用视图嵌套,嵌套视图增加了寻找原始资料的难度。我们看视图的本质:它是存放在服务器上的被优化好了的已经产生了查询规划的SQL。对单个表检索数据时,不要使用指向多个表的视图,直接从表检索或者仅仅包含这个表的视图上读,否则增加了不必要的开销,查询受到干扰为了加快视图的查询,MsSQL增加了视图索引的功能。

34、没有必要时不要用DISTINCT和ORDER BY,这些动作可以改在客户端执行。它们增加了额外的开销。这同UNION 和UNION ALL一样的道理。 SELECT top 20 adcompanyname,comid,position,adreferenceid,worklocation, convert(varchar(10),adpostDate,120) as postDate1,workyear,degreedescription FROM jobcn_querydboCOMPANYAD_query ad where referenceID in(‘JCNAD00329667‘,‘JCNAD132168‘,‘JCNAD00337748‘,‘JCNAD00338345‘,‘JCNAD00333138‘,‘JCNAD00303570‘, ‘JCNAD00303569‘,‘JCNAD00303568‘,‘JCNAD00306698‘,‘JCNAD00231935‘,‘JCNAD00231933‘,‘JCNAD00254567‘, ‘JCNAD00254585‘,‘JCNAD00254608‘,‘JCNAD00254607‘,‘JCNAD00258524‘,‘JCNAD00332133‘,‘JCNAD00268618‘, ‘JCNAD00279196‘,‘JCNAD00268613‘) order by postdate desc

35、在IN后面值的列表中,将出现最频繁的值放在最前面,出现得最少的放在最后面,减少判断的次数

36、当用SELECT INTO时,它会锁住系统表(sysobjects,sysindexes等等),阻塞其他的连接的存取。创建临时表时用显示申明语句,而不是 select INTO drop table t_lxh begin tran select into t_lxh from chineseresume where name = ‘XYZ‘ --commit 在另一个连接中SELECT from sysobjects可以看到 SELECT INTO 会锁住系统表,Create table 也会锁系统表(不管是临时表还是系统表)。所以千万不要在事物内使用它!!!这样的话如果是经常要用的临时表请使用实表,或者临时表变量。

37、一般在GROUP BY 个HAVING字句之前就能剔除多余的行,所以尽量不要用它们来做剔除行的工作。他们的执行顺序应该如下最优:select 的Where字句选择所有合适的行,Group By用来分组个统计行,Having字句用来剔除多余的分组。这样Group By 个Having的开销小,查询快对于大的数据行进行分组和Having十分消耗资源。如果Group BY的目的不包括计算,只是分组,那么用Distinct更快

38、一次更新多条记录比分多次更新每次一条快,就是说批处理好

39、少用临时表,尽量用结果集和Table类性的变量来代替它,Table 类型的变量比临时表好

40、在SQL2000下,计算字段是可以索引的,需要满足的条件如下:

a、计算字段的表达是确定的

b、不能用在TEXT,Ntext,Image数据类型

c、必须配制如下选项 ANSI_NULLS = ON, ANSI_PADDINGS = ON, ……

41、尽量将数据的处理工作放在服务器上,减少网络的开销,如使用存储过程。存储过程是编译好、优化过、并且被组织到一个执行规划里、且存储在数据库中的 SQL语句,是控制流语言的集合,速度当然快。反复执行的动态SQL,可以使用临时存储过程,该过程(临时表)被放在Tempdb中。以前由于SQL SERVER对复杂的数学计算不支持,所以不得不将这个工作放在其他的层上而增加网络的开销。SQL2000支持UDFs,现在支持复杂的数学计算,函数的返回值不要太大,这样的开销很大。用户自定义函数象光标一样执行的消耗大量的资源,如果返回大的结果采用存储过程

42、不要在一句话里再三的使用相同的函数,浪费资源,将结果放在变量里再调用更快

43、SELECT COUNT()的效率教低,尽量变通他的写法,而EXISTS快同时请注意区别: select count(Field of null) from Table 和 select count(Field of NOT null) from Table 的返回值是不同的。

44、当服务器的内存够多时,配制线程数量 = 最大连接数+5,这样能发挥最大的效率;否则使用 配制线程数量 <最大连接数启用SQL SERVER的线程池来解决,如果还是数量 = 最大连接数+5,严重的损害服务器的性能。

45、按照一定的次序来访问你的表。如果你先锁住表A,再锁住表B,那么在所有的存储过程中都要按照这个顺序来锁定它们。如果你(不经意的)某个存储过程中先锁定表B,再锁定表A,这可能就会导致一个死锁。如果锁定顺序没有被预先详细的设计好,死锁很难被发现

46、通过SQL Server Performance Monitor监视相应硬件的负载 Memory: Page Faults / sec计数器如果该值偶尔走高,表明当时有线程竞争内存。如果持续很高,则内存可能是瓶颈。

Process:

1、% DPC Time 指在范例间隔期间处理器用在缓延程序调用(DPC)接收和提供服务的百分比。(DPC 正在运行的为比标准间隔优先权低的间隔)。 由于 DPC 是以特权模式执行的,DPC 时间的百分比为特权时间 百分比的一部分。这些时间单独计算并且不属于间隔计算总数的一部 分。这个总数显示了作为实例时间百分比的平均忙时。

2、%Processor Time计数器如果该参数值持续超过95%,表明瓶颈是CPU。可以考虑增加一个处理器或换一个更快的处理器。

3、% Privileged Time 指非闲置处理器时间用于特权模式的百分比。(特权模式是为操作系统组件和操纵硬件驱动程序而设计的一种处理模式。它允许直接访问硬件和所有内存。另一种模式为用户模式,它是一种为应用程序、环境分系统和整数分系统设

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 影响服务器性能都有什么因素

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情