读书频道 > 网站 > 网页设计 > SQL Server性能调优实战
3.3.3 排序对Tempdb的影响
15-11-02    下载编辑
收藏    我要投稿   

本文所属图书 > SQL Server性能调优实战

本书是一线DBA技术专家精心之作,积作者多年的经验结晶和最佳实践,也是目前市场上为数不多通过存储原理来讲解性能优化,剖析SQL Server架构,从而帮助读者快速高效调优数据库的图书。书中首先简要介绍了SQL S立即去当当网订购

首先来了解Tempdb。Tempdb是SQL Server的一个系统数据库,用于存储查询过程中产生的中间数据。例如排序过程中,进行高速排序时产生的中间结果,被存储在Tempdb的数据文件中。

在进行排序操作时,如果工作区内存(Working Set Memory 或称为Query Memory,表示某个查询请求的内存空间大小,SQL Server对于每个查询都有特定内存大小的设置。详细信息将在介绍SQL Server内存应用时讲解)不足,就需要使用Tempdb数据库来完成数据的排序。此时排序操作产生的部分中间数据将被写入Tempdb中,由于有了磁盘I/O操作的开销,排序操作将受到影响,这时不再如单纯的内存操作那样快速了,而且当Tempdb比较繁忙时,若并发量达到一定量级,也会对排序操作造成影响,随着承受着影响的操作请求数量地不断增加,服务器的压力将越来越大,从而形成一个恶性循环。因此,在对查询进行排序时,需要注意,若进行排序操作的数据量足够大,就会对整个数据库实例造成一定的压力。当这个压力增长到一定程度时,将导致整个数据库实例出现大批量SQL语句执行性能下降的情况。简单举个例子。例如,某服务器的一个查询语句需要进行排序操作,而排序的数据集的数据量很庞大,约有2亿,数据量大小达到了5GB,那么该查询至少需要使用5GB的Tempdb磁盘空间。Tempdb磁盘占用增长了,需要占用大量物理磁盘I/O来写入数据文件,导致语句的性能变差,并且由于Tempdb是公共资源,此时很容易造成磁盘资源阻塞,影响到其他会话的正常工作。

Tempdb的大量使用,也可能使Tempdb的数据文件扩大到磁盘无法容纳的程度,此时服务器上的其他操作将会受到影响。

因此在应用排序时,应清楚地知道排序的数据量范围,以避免服务器上的其他操作受到影响。

在加入了排序计算以后,尽量控制排序的数据量,尽量使排序操作能在额定的内存空间中完成,避免使用Tempdb。数据量较大时,可以考虑在排序字段上添加索引来避免执行排序操作。

例如,当需要进行一个较大数据集的排序操作时,可以考虑将排序字段,也就是ORDER BY子句后的字段添加在索引中。

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站