SQL优化

如果该加索引的加索引,该做调整的做调整,但是如果我们分析出来的语句该有的索引都有,该改进的地方也都改进了,它因为数据量或者访问频繁等原因暂用CPU的资源依然相当高,那怎么办?我们还有其他的方法处理吗?还是有的,主要的途径有如下几种:
1. 查找等待信息,如果CPU类型的等待排在前面(主要是CXPACKET和SOS_SCHEDULER_YIELD两类),我们就可以认为是CPU的处理能力不足,此时为不影响其他的用户进程,可以将CPU的并行开销(调大cost threshold for parallelism)和并行度做调整(调小max degree of parallelism);
2. 限制相关的语句使用CPU的数量(加上Option参数),如限制语句最多使用两颗CPU:select * from Products with(nolock) option(maxdop 2)
3. 看看数据库使用的内存是否还可以做调整,或者系统内存是不是大部分被数据库使用;
4. 查看一下索引的碎片是否过大,过大的话需要做索引的重新整理(这个操作需要在业务低峰时进行);
5. 查看下统计信息是否是最新的,如果不是,更新统计信息(这个操作往往比较有效);
6. 判断语句是否使用了正确的执行计划,如果不是,删除已有的执行计划,再重新执行;如果是存储过程可以加 WITH RECOMPILE。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值