加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

sql-server – 分派更多CPU和RAM后,SQL Server机能低落

发布时间:2021-01-10 16:27:44 所属栏目:编程 来源:网络整理
导读:我们在假造 Windows 2008 R2处事器上运行SQL Server 2008 R2(10.50.1600).在将CPU从1核进级到4并将RAM从4 gb进级到10 gb后,我们发明机能更差. 我看到一些调查功效: 耗费5秒运行的查询此刻耗费 200秒. CPU被钉在100,sqlservr.exe是祸首罪魁. 具有460万行的表

我们在假造 Windows 2008 R2处事器上运行SQL Server 2008 R2(10.50.1600).在将CPU从1核进级到4并将RAM从4 gb进级到10 gb后,我们发明机能更差.

我看到一些调查功效:

>耗费<5秒运行的查询此刻耗费> 200秒.
> CPU被钉在100,sqlservr.exe是祸首罪魁.
>具有460万行的表上的选择计数(*)耗费高出90秒.
>处事器上运行的历程未变动.独一的变革是增进cpu和ram.
>其他sql处事器有一个静态页面文件,个中此处事器配置为本身打点它.

有没有人碰着过这个题目?

每个sp_BlitzErik,我跑了

EXEC dbo.sp_BlitzFirst @SinceStartup = 1;

给我这些功效.

办理要领

这里有许多,个中大部门都是相等普及和恍惚的.

> 2008R2 RTM于2010年4月21日问世.它完全没有支持.您必要优先行使最新的Service Pack,该处事包约莫在3年前宣布.这样,假如你碰着一个稀疏的错误或其他什么,你将被包围.遇上over here,找出你必要下载的内容.
>因为您添加了vCPU(从1到4)而且未变动任何配置,因此您的查询此刻可以并行.我知道这听起来仿佛他们城市更快,但僵持下去!
>您也许已添加了RAM,但您也许没有变动Max Server Memory,因此您的处事器可以操作它.
>找出处事器正在守候的内容.我事变的公司编写免费脚原来辅佐您丈量SQL Server.假如您想实行一下,请前去over here.

你想抓住sp_BlitzFirst检点处事器的守候统计数据.你可以用几种方法运行它.

这将表现您的处事器自启动以来一向在守候的内容.

EXEC dbo.sp_BlitzFirst @SinceStartup = 1;

这将表现在30秒窗口时代此刻正在守候的查询.

EXEC dbo.sp_BlitzFirst @Seconds = 30,@ ExpertMode = 1;

一旦你弄清晰正在守候什么查询(有许多关于守候统计数据的对象),你可以开始做出改变以节制工作.

假如你看到他们在CXPACKET上守候,这意味着你的查询是平行的,而且也许相互蹂躏.假如你点击这个,你也许会思量将并行度的本钱阈值进步到50,而且也许会将MAXD??OP低落到2.

在此步调之后,您但愿行使相同sp_WhoIsActive或sp_BlitzWho(后者在之前的GitHub repo中)的内容来开始捕捉查询打算.除了守候统计数据,它们是你可以看到的最重要的工作之一,以找出堕落的处所.

您也许还想查察Jonathan Kehayias关于SQL Server的文章,相识VMWare Counters.

更新

回首守候数据和男孩他们很稀疏. CPU确实存在一些题目.你的处事器大多坐在无聊的处所,可是当工作升温时,工作会变得糟糕.我会试着等闲地办理这个题目.

>你正在打一个叫做THREADPOOL的poison wait.你没有它,但这是有原理的,由于你的处事器不长短常活泼.我会在一分钟内表明缘故起因.
>你在SOS_SCHEDULER_YIELD和CXPACKET上有很长的均匀守候时刻.你在假造机上,以是你要确保SQL Server有保存,可能盒子没有可骇的超额订阅.喧华的邻人真的会毁了你的一天.您还必要确保处事器/ VM guest假造机/ VM主机未在Balanced Power模式下运行.这会使您的CPU低落到不须要的低速,而且它们不会当即回升到全速.
>他们怎样共同?行使4个CPU,您有512个事变线程.请记着,你有一个单CPU的same amount,但此刻你的查询可以并行,他们可以耗损更多的事变线程.在你的环境下,并行查询的每个并行分支4个线程.

什么是平行的?最有也许的统统. Parallelism的默认本钱阈值是5.这个数字在90年月后期的某个时刻是默认值,在桌面上事变like this.

虽然,你的硬件比大大都条记本电脑都小,但你如故领先于那件事.

当大量并行查询开始运行时,您将耗尽这些事变线程.当产生这种环境时,查询只是守候线程开始.这也是SOS_SCHEDULER_YIELD的用武之地.查询是踩掉CPU而不是长时刻从头开启.我没有看到任何阻塞守候,以是你很也许只是在查询内并行守候的全部内容.

你能做什么?

>确保没有任何对象处于均衡电源模式
>将MAXD??OP变动为2
>将并行度的本钱阈值变动为50
>凭证上面的Jon K.文章来验证VM运行状况
>行使名为sp_BlitzIndex的GitHub客栈中的剧本查找任何缺失的索引哀求.

有关更全面的妨碍解除,请查察有关云中硬件巨细的whitepaper I wrote for Google.

但愿这可以辅佐!

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读