SQL 2008CPU占用率90%以上,寻求优化方案

dlq_skj 2014-08-12 01:42:03
服务器配置:阿里云4核U 4G内存
数据库中有张表 里面有100多万的数据,客户端的所有应用程序都在同时且时刻刻的不断的随机查询这张表的一条数据
表结构字段:
ID
IDName
Username
UserPWD
Department
Isvalid
======================================
查了下会话一般客户端有100条会话连接
查询资源的消耗情况如下图:




那条SQL语句无非就是一条随机从这张表里面查询一条数据的语句 如下
select top 1 UserName,UserPwd from AllIDManagerDetails where IDName='VIP' and Isvalid=0 order by newid()
=================================================
请问各位有什么办法能做到把CPU资源降低下来?在IDName上建立索引会好些么?
或者升级硬件?
...全文
275 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
dlq_skj 2014-08-12
  • 打赏
  • 举报
回复
引用 10 楼 DBA_Huangzj 的回复:
4核已经是比较常规的配置了,一般100来G的系统4核运行得好好的。不过如果你有预算,也可以,但是我觉得你应该先从设计上着手,看看是否有可以改进的地方
好的。感谢您的建议,再一次感谢您的帮助。结贴
發糞塗牆 2014-08-12
  • 打赏
  • 举报
回复
4核已经是比较常规的配置了,一般100来G的系统4核运行得好好的。不过如果你有预算,也可以,但是我觉得你应该先从设计上着手,看看是否有可以改进的地方
dlq_skj 2014-08-12
  • 打赏
  • 举报
回复
引用 8 楼 DBA_Huangzj 的回复:
order by newid() 这种是没办法优化了,只能减少数据量来降低排序的开销
嗯 数据是不能动的 考虑升级CPU不知道会不会好些,目前客户端只有100-200的连接。今后可能会更多同时1000以上的连接 估计会出问题。请问这种可以用硬件的升级来解决问题的吗
發糞塗牆 2014-08-12
  • 打赏
  • 举报
回复
order by newid() 这种是没办法优化了,只能减少数据量来降低排序的开销
dlq_skj 2014-08-12
  • 打赏
  • 举报
回复
引用 6 楼 DBA_Huangzj 的回复:
然后看看加了之后的cpu利用率会不会有所好转

非常感谢您的帮助,按照您的指点操作后,确实大为改观,但那个排序开销貌似增大了
不过好在CPU占用率问题暂时得到解决
發糞塗牆 2014-08-12
  • 打赏
  • 举报
回复
然后看看加了之后的cpu利用率会不会有所好转
發糞塗牆 2014-08-12
  • 打赏
  • 举报
回复
右键上面绿色的字,选择【缺少索引xxx】那个选项,然后会在新的窗口创建好脚本,你改一下索引名字直接执行就可以了
dlq_skj 2014-08-12
  • 打赏
  • 举报
回复
引用 3 楼 DBA_Huangzj 的回复:
在sqlserver Management studio中,选对目标库,然后ctrl+M,然后执行你这个语句。

發糞塗牆 2014-08-12
  • 打赏
  • 举报
回复
在sqlserver Management studio中,选对目标库,然后ctrl+M,然后执行你这个语句。
dlq_skj 2014-08-12
  • 打赏
  • 举报
回复
引用 1 楼 DBA_Huangzj 的回复:
如果的确只有这句话的话,把select top 1 UserName,UserPwd from AllIDManagerDetails where IDName='VIP' and Isvalid=0 order by newid()的执行计划贴出来看看
您指的是什么执行计划? 是这样的,客户端的是一应用程序,每个客户端应用程序在不断的循环执行这条查询语句 以随机读取这张表的数据作他用,上面我贴的图也可以看到最耗CPU资源的是因为这条语句的频繁执行。
發糞塗牆 2014-08-12
  • 打赏
  • 举报
回复
如果的确只有这句话的话,把select top 1 UserName,UserPwd from AllIDManagerDetails where IDName='VIP' and Isvalid=0 order by newid()的执行计划贴出来看看
内容概要:本文介绍了如何通过Python与MySQL结合,利用简单的SQL语句和Pandas库将百万级别的Excel销售数据报表处理从手动操作转变为高效自动化的流程。首先解决了传统Excel处理大数据时遇到的卡顿、崩溃等问题,提出将Excel数据导入MySQL数据库的方法,并通过三行核心SQL语句进行高效的聚合运算,实现了多维度的数据分析。最后通过Python脚本自动化生成Excel报表并提供邮件发送功能。文中还给出了性能对比,新方法仅需几秒钟即可完成原来需要数十分钟甚至数小时的任务,同时大幅降低了CPU占用率,提高了系统的稳定性和效率。此外,文章还分享了增量更新、视图封装等进阶技巧以及一些常见的避坑指南。 适合人群:从事数据分析工作的人员,尤其是那些经常需要处理大量Excel数据报表的业务分析师或数据工程师。 使用场景及目标:①希望提高处理大规模Excel数据报表效率的企业员工;②想要掌握MySQL和Pandas结合使用技能的数据从业者;③寻求优化现有数据处理流程,减少手工操作失误的专业人士。 其他说明:在实际应用过程中,用户可以根据自身需求调整SQL查询语句和Python脚本,以适应不同的业务场景。同时,在实施该方案前,请确保已经正确安装所需的Python库,并根据实际情况修改数据库连接参数。为了保证数据的一致性和准确性,建议定期备份原始Excel文件和数据库。

34,874

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧