SQL SERVER Performance tempdb 优化

作者:RiCo技術農場  发布日期:2012-07-25 11:02:06


开发人员说执行网页应用程序(不管select、delete、update、insert)

常常会出现timeout(早上都没问题,但大都在下午3点开始发生),

然后就无法连到资料库。

我以往经验应该都是某些不良SQL或SP造成(这次确实也是)

但这案例我也发现tempdb问题也满大的,

因为前端应用程序大量使用temptable、资料表变数、cursor(了解应用程序 特性也是相当重要的),

而且某几支SP存在deadlock和无穷回圈(心中OS: e04...是在写烧机程序喔),

造成tempdb size异常快速增加(吃光硬碟空间、无法连到资料库)且扩张空间耗费过久(造成前端timeout)

我请相关人员处理那些不良的SQL和SP,

同时我也对tempdb做了以下优化。

 www.it165.net

当时我处理的tempdb大小约143GB

 


 

1.tempdb初始大小应符合应用程式特性设定合适大小。

资料库档案初始化可改善效能,也可降低碎片量。

 

2.tempdb自动成长大小应符合应用程式特性设定合适大小。

如果该值太小(成长比写入的量小),将造成过多的扩大处理和碎片而影响效能。

如果该值太大可能会造成 Timeout(等待扩充)。

所以需要符合应用程式取得一各平衡。

 

3.使用多个资料档案(依CPU个数来建立)。

减少tempdb的资源竞争。

 

4.区隔tempdb和使用者资料库档案所使用硬碟(tempdb可以存放在RAID 0,如果可以的话)。

增加I/O效能,减少资源竞争。

 

5.保留硬碟一定空间

每颗硬碟应该保留5~10%空间留给NTFS演算法运作,不建议完全用光。

 

6.tempdb复原模式请设定简单


下面是我切4个档案测试4次select效能--single datafile
--1 CPU 时间= 251 ms,运行时间= 1917 ms
--2 CPU 时间= 360 ms,运行时间= 2057 ms
--3 CPU 时间= 219 ms,运行时间= 1708 ms
--4 CPU 时间= 312 ms,运行时间= 2102 ms
--AVG CPU 时间=285.5 ms ,运行时间=1946 ms

--multiple datafile
--1 CPU 时间= 218 ms,运行时间= 1607 ms
--2 CPU 时间= 203 ms,运行时间= 1435 ms
--3 CPU 时间= 202 ms,运行时间= 1328 ms
--4 CPU 时间= 189 ms,运行时间= 1217 ms
--AVG CPU 时间=203 ms ,运行时间=1396.75ms

Tag标签: SQL   SERVER   Performance   tempdb   优化  
  • 专题推荐

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规