楼主: arron刘

【案例讨论】从案例引发的对SQL Server性能调优的思考

[复制链接]
论坛徽章:
24
技术图书徽章
日期:2013-08-16 14:31:52问答徽章
日期:2013-11-04 08:53:14目光如炬
日期:2013-12-23 06:00:11目光如炬
日期:2013-12-30 06:00:11明星写手
日期:2014-02-22 06:00:12马上有钱
日期:2014-03-31 14:09:05沸羊羊
日期:2015-05-20 12:42:59秀才
日期:2015-06-24 13:05:36秀才
日期:2015-07-13 09:48:14
31#
 楼主| 发表于 2012-5-14 12:22 | 只看该作者
ahdong2007 发表于 2012-5-14 12:18
喔,喔
现场直播

抓紧时间问问题哦

使用道具 举报

回复
论坛徽章:
65
生肖徽章2007版:龙
日期:2012-04-26 14:03:05生肖徽章2007版:龙
日期:2012-04-26 14:03:05生肖徽章2007版:龙
日期:2012-04-26 14:03:05生肖徽章2007版:龙
日期:2012-04-26 14:03:05生肖徽章2007版:龙
日期:2012-04-26 14:03:05生肖徽章2007版:龙
日期:2012-04-26 14:03:05蓝锆石
日期:2012-04-26 13:39:45开发板块每日发贴之星
日期:2012-04-26 14:03:05ERP板块每日发贴之星
日期:2012-04-26 14:03:05行业板块每日发贴之星
日期:2012-04-26 14:03:05
32#
发表于 2012-5-14 12:29 | 只看该作者
yanyangtian4502 发表于 2012-5-14 10:46
各位朋友,大家好,这是第一次在ITPub搞这样的讨论活动,希望大家多多的支持与参与!
因为一直在做与性能优 ...


我是拉拉队长思密达,严重欢迎

使用道具 举报

回复
招聘 : Android开发
论坛徽章:
17
ITPUB十周年纪念徽章
日期:2011-11-01 16:25:51蜘蛛蛋
日期:2012-05-28 16:54:09双黄蛋
日期:2012-05-28 17:45:17ITPUB 11周年纪念徽章
日期:2012-10-09 18:14:48优秀写手
日期:2013-12-18 09:29:092014年新春福章
日期:2014-02-18 16:44:08马上有对象
日期:2014-02-18 16:44:08
33#
发表于 2012-5-14 12:33 | 只看该作者
大家踊跃发言啊,我们准备讨论磁盘IO的问题

使用道具 举报

回复
论坛徽章:
26
ITPUB伯乐
日期:2012-05-22 15:05:35喜羊羊
日期:2015-05-14 12:15:30美羊羊
日期:2015-07-02 22:22:59秀才
日期:2015-08-24 09:51:48天枰座
日期:2015-11-05 16:53:35双鱼座
日期:2015-12-05 19:22:56巨蟹座
日期:2015-12-20 18:46:10摩羯座
日期:2016-05-19 09:54:17ITPUB15周年纪念
日期:2016-10-13 13:15:34秀才
日期:2017-02-22 15:16:26
34#
发表于 2012-5-14 12:38 | 只看该作者
yanyangtian4502 发表于 2012-5-14 12:33
大家踊跃发言啊,我们准备讨论磁盘IO的问题

说到IO,其实一般的也就是将数据文件和日志文件分开.
另外,最好多设置几个文件组,将只读的部分数据,和操作比较频繁的数据分开.
另外,tempdb也单独放一个磁盘,最好是RAID1.
当然也就涉及到RAID的配置了.

使用道具 举报

回复
招聘 : ORACLE 开发DBA
论坛徽章:
598
35#
发表于 2012-5-14 12:54 | 只看该作者
hwtong 发表于 2012-5-14 12:38
说到IO,其实一般的也就是将数据文件和日志文件分开.
另外,最好多设置几个文件组,将只读的部分数据,和操作 ...

是啊IO说到头也就这些。抓到高IO的来源才是根本。

使用道具 举报

回复
论坛徽章:
26
ITPUB伯乐
日期:2012-05-22 15:05:35喜羊羊
日期:2015-05-14 12:15:30美羊羊
日期:2015-07-02 22:22:59秀才
日期:2015-08-24 09:51:48天枰座
日期:2015-11-05 16:53:35双鱼座
日期:2015-12-05 19:22:56巨蟹座
日期:2015-12-20 18:46:10摩羯座
日期:2016-05-19 09:54:17ITPUB15周年纪念
日期:2016-10-13 13:15:34秀才
日期:2017-02-22 15:16:26
36#
发表于 2012-5-14 12:57 | 只看该作者
abocide 发表于 2012-5-14 12:54
是啊IO说到头也就这些。抓到高IO的来源才是根本。

这也就需要从DMV中去抓取了.

.检查性能较差的SQL(SQLSERVER 2005 &2008):---按照逻辑读排序
SELECT SS.SUM_EXECUTION_COUNT,
                T.TEXT,
                SS.SUM_TOTAL_ELAPSED_TIME,
                SS.SUM_TOTAL_WORKER_TIME,
                SS.SUM_TOTAL_LOGICAL_READS,
                SS.SUM_TOTAL_LOGICAL_WRITES
FROM (SELECT S.PLAN_HANDLE,
                         SUM(S.EXECUTION_COUNT) SUM_EXECUTION_COUNT,
                         SUM(S.TOTAL_ELAPSED_TIME) SUM_TOTAL_ELAPSED_TIME,
                         SUM(S.TOTAL_WORKER_TIME) SUM_TOTAL_WORKER_TIME,
                         SUM(S.TOTAL_LOGICAL_READS) SUM_TOTAL_LOGICAL_READS,
                         SUM(S.TOTAL_LOGICAL_WRITES) SUM_TOTAL_LOGICAL_WRITES
          FROM SYS.DM_EXEC_QUERY_STATS S
          GROUP BY S.PLAN_HANDLE
          ) AS SS
          CROSS APPLY SYS.DM_EXEC_SQL_TEXT(SS.PLAN_HANDLE) T
ORDER BY SUM_TOTAL_LOGICAL_READS DESC

使用道具 举报

回复
论坛徽章:
24
技术图书徽章
日期:2013-08-16 14:31:52问答徽章
日期:2013-11-04 08:53:14目光如炬
日期:2013-12-23 06:00:11目光如炬
日期:2013-12-30 06:00:11明星写手
日期:2014-02-22 06:00:12马上有钱
日期:2014-03-31 14:09:05沸羊羊
日期:2015-05-20 12:42:59秀才
日期:2015-06-24 13:05:36秀才
日期:2015-07-13 09:48:14
37#
 楼主| 发表于 2012-5-14 13:00 | 只看该作者
yanyangtian4502 发表于 2012-5-14 12:33
大家踊跃发言啊,我们准备讨论磁盘IO的问题

目前的行业趋势是为服务器配置更少但更大的 hdisk。例如,服务器可能配置一个 500 GB 的 hdisk,它分散在磁盘子系统中的几个磁盘上,可以配置 10 个 50 GB 或 5 个 100 GB 的磁盘。决定性能的到底和大小有关系么。还是只是和带宽有关。

使用道具 举报

回复
论坛徽章:
26
ITPUB伯乐
日期:2012-05-22 15:05:35喜羊羊
日期:2015-05-14 12:15:30美羊羊
日期:2015-07-02 22:22:59秀才
日期:2015-08-24 09:51:48天枰座
日期:2015-11-05 16:53:35双鱼座
日期:2015-12-05 19:22:56巨蟹座
日期:2015-12-20 18:46:10摩羯座
日期:2016-05-19 09:54:17ITPUB15周年纪念
日期:2016-10-13 13:15:34秀才
日期:2017-02-22 15:16:26
38#
发表于 2012-5-14 13:04 | 只看该作者
arron刘 发表于 2012-5-14 13:00
目前的行业趋势是为服务器配置更少但更大的 hdisk。例如,服务器可能配置一个 500 GB 的 hdisk,它分散在 ...

准确的说,在满足条件的情况下,尽量用较小的,较多的磁盘来做.
比如,我需要500G的磁盘.假设这里50G/个是最小的,那么选择10个50G的是最好的.因为这样可以将IO压力分配到10块磁盘上.
选择1个500G的磁盘是最恼火的

使用道具 举报

回复
招聘 : Android开发
论坛徽章:
17
ITPUB十周年纪念徽章
日期:2011-11-01 16:25:51蜘蛛蛋
日期:2012-05-28 16:54:09双黄蛋
日期:2012-05-28 17:45:17ITPUB 11周年纪念徽章
日期:2012-10-09 18:14:48优秀写手
日期:2013-12-18 09:29:092014年新春福章
日期:2014-02-18 16:44:08马上有对象
日期:2014-02-18 16:44:08
39#
发表于 2012-5-14 13:14 | 只看该作者
hwtong 发表于 2012-5-14 12:38
说到IO,其实一般的也就是将数据文件和日志文件分开.
另外,最好多设置几个文件组,将只读的部分数据,和操作 ...

对,这说的是一方面!还有就是要深入到一些windows文件的细节了!
我下面就来谈下

使用道具 举报

回复
招聘 : Android开发
论坛徽章:
17
ITPUB十周年纪念徽章
日期:2011-11-01 16:25:51蜘蛛蛋
日期:2012-05-28 16:54:09双黄蛋
日期:2012-05-28 17:45:17ITPUB 11周年纪念徽章
日期:2012-10-09 18:14:48优秀写手
日期:2013-12-18 09:29:092014年新春福章
日期:2014-02-18 16:44:08马上有对象
日期:2014-02-18 16:44:08
40#
发表于 2012-5-14 13:23 | 只看该作者
刚刚hwtong 谈了一些与相关的问题,说的确实不错!我这里稍微的总结一下,然后再说:
1.不要数据库文件,例如日志,数据文件放在系统盘中。
2.日志,数据文件要分开,最好将系统的数据库与我们的数据库分开放在不同的磁盘中,同时也非常建议将tempdb放在单独的磁盘。因为日志文件是按顺序写的,而数据文件是随机读写的,所以,放在一起,势必使得磁盘的磁头来回的寻道。说道这里,我想起了经过过的一个问题,当时是一台配置为10w万元的数据库服务器,而开发人员却没有充分的使用这台服务器的性能,整个服务器只有一个逻辑分区,即只有一个C盘,大家也许认为这个问题和傻瓜,不用说,但是这样的例子,确实比比皆是。因为很多的公司的开发人员也是DBA,没有真正意义上的DBA。
3.在选择磁盘的时候,不要一味的考虑容量,而不考虑吞度量,例如要购买一个1TB的磁盘,最好是买几个小的磁盘,例如300GB的,将之拼接为1TB。主要是为了使得磁盘读取数据的并行度加大。


另外,还需要注意数据库内部的一些信息:
1.数据页每个大小事8K,而数据库在分配的时候,每次不是按照页来分配的,而是按照块,即,每次分配64K的空间,也就是8个页,那么我们在为每一个磁盘分区分卷的时候,最好将之定位64K,毕竟磁盘过多的分页,这个道理和毕竟过多的数据库分页一样的。
2. 要检查磁盘的扇区是否对齐,这个问题发生在win2003以及之前的版本,win2008不用管了。


使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表