楼主: arron刘

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

[复制链接]
招聘 : 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
41#
发表于 2012-5-14 13:33 | 只看该作者
关于磁盘扇区对齐,这个问题搞定之后,可以将磁盘的I/O行提升20%~30%。
可以采用diskpart命令来搞定。方法如下:
1.“开始”->"运行",输入“diskpart”
2.输入“list disk”,这里将会列出所有的磁盘,注意:是物理的磁盘,如果是采用的阵列,那么这就会列出所有的磁盘。如图,在我本机运行如下:


我的系统是win7的,磁盘不用对齐了,这里可以看到扇区的大小事1024K。
3.然后选择要对齐的磁盘,运行“select disk XXX”,其中XXX就是磁盘的编号,例如1,2等,图中的就是0.
4.然后查询这个磁盘的分区,运行“list partition”,将分区全部列出来,我本机的如下:

5.对齐扇区,运行“create partition primary algin=64”

OK,搞定!

使用道具 举报

回复
招聘 : 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
42#
发表于 2012-5-14 13:34 | 只看该作者
注意,在磁盘扇区对齐的时候,要将分区里面的文件备份到其他地方

使用道具 举报

回复
招聘 : 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
43#
发表于 2012-5-14 13:36 | 只看该作者
为了使得磁盘的讨论更加的充分,我下面会说说明磁盘阵列的一些话题,以及我们遇到的一些情况和经验分析

使用道具 举报

回复
招聘 : 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
44#
发表于 2012-5-14 13:43 | 只看该作者
对了,这里忘记了提一个事情,就是我常常看到很多的DBA把磁盘设置为自动增长,这不是什么坏的时候,但是很多的时候,很多的DBA没有考虑到数据库中的数据增长量的问题,例如,明明是数据每次增长为100MB的,但是设置的自动增长缺失10M等等,导致了磁盘碎片非常的多。

其实,我们完全可以在一定程度上,禁用自动增长,而采用手动调的方式,例如,如果将数据文件放在一个100GB的分区上面,那么我们可以设置其大小为90GB,然后禁用增长!这样的性能会好非常多,当然,可能要留心这个数据文件的大小,但是,这不是问题。

另外,可以将一些重要的表,索引,全文索引等的文件组放在单独的磁盘上面。

使用道具 举报

回复
论坛徽章:
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
45#
发表于 2012-5-14 13:46 | 只看该作者
yanyangtian4502 发表于 2012-5-14 13:43
对了,这里忘记了提一个事情,就是我常常看到很多的DBA把磁盘设置为自动增长,这不是什么坏的时候,但是很多 ...

的确.如果磁盘空间足够,我们一般需要将数据文件和日志文件都设置大点,减少自动增长的次数.
另外,不管数据库大小,一般是设置成按多少MB增长,而不是百分比.
例如,当数据库达到500G,设置每次增长10%,则就会增长50GB.这样对磁盘的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
46#
发表于 2012-5-14 13:47 | 只看该作者
yanyangtian4502 发表于 2012-5-14 13:33
关于磁盘扇区对齐,这个问题搞定之后,可以将磁盘的I/O行提升20%~30%。
可以采用diskpart命令来搞定。方法 ...

这个倒是没有用过,学习...

使用道具 举报

回复
招聘 : 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
47#
发表于 2012-5-14 13:50 | 只看该作者
刚刚有朋友问题,如何查看等待的问题,我这里给大家奉献一个脚本!因为有很多的等待是系统的等待,不是我们要研究,下面的脚本非常实用:
SELECT TOP 10
wait_type ,
max_wait_time_ms wait_time_ms ,
signal_wait_time_ms ,
wait_time_ms - signal_wait_time_ms AS resource_wait_time_ms ,
100.0 * wait_time_ms / SUM(wait_time_ms) OVER ( )
AS percent_total_waits ,
100.0 * signal_wait_time_ms / SUM(signal_wait_time_ms) OVER ( )
AS percent_total_signal_waits ,
100.0 * ( wait_time_ms - signal_wait_time_ms )
/ SUM(wait_time_ms) OVER ( ) AS percent_total_resource_waits
FROM sys.dm_os_wait_stats
WHERE wait_time_ms > 0 -- 移除为0的wait_time
AND wait_type NOT IN -- 将不相关的等待移除
( 'SLEEP_TASK', 'BROKER_TASK_STOP', 'BROKER_TO_FLUSH',
'SQLTRACE_BUFFER_FLUSH','CLR_AUTO_EVENT', 'CLR_MANUAL_EVENT',
'LAZYWRITER_SLEEP', 'SLEEP_SYSTEMTASK', 'SLEEP_BPOOL_FLUSH',
'BROKER_EVENTHANDLER', 'XE_DISPATCHER_WAIT', 'FT_IFTSHC_MUTEX',
'CHECKPOINT_QUEUE', 'FT_IFTS_SCHEDULER_IDLE_WAIT',
'BROKER_TRANSMITTER', 'FT_IFTSHC_MUTEX', 'KSOURCE_WAKEUP',
'LAZYWRITER_SLEEP', 'LOGMGR_QUEUE', 'ONDEMAND_TASK_QUEUE',
'REQUEST_FOR_DEADLOCK_SEARCH', 'XE_TIMER_EVENT', 'BAD_PAGE_PROCESS',
'DBMIRROR_EVENTS_QUEUE', 'BROKER_RECEIVE_WAITFOR',
'PREEMPTIVE_OS_GETPROCADDRESS', 'PREEMPTIVE_OS_AUTHENTICATIONOPS',
'WAITFOR', 'DISPATCHER_QUEUE_SEMAPHORE', 'XE_DISPATCHER_JOIN',
'RESOURCE_QUEUE' )
ORDER BY wait_time_ms DESC

使用道具 举报

回复
招聘 : 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
48#
发表于 2012-5-14 13:51 | 只看该作者
hwtong 发表于 2012-5-14 13:47
这个倒是没有用过,学习...

这个主要是和window系统结合起来考虑

使用道具 举报

回复
招聘 : 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
49#
发表于 2012-5-14 13:53 | 只看该作者
先歇一会,等大家发发帖子,大家可以发发RAID对数据库的影响,主要是对数据库的性能方面!!!

使用道具 举报

回复
论坛徽章:
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
50#
发表于 2012-5-14 13:56 | 只看该作者
yanyangtian4502 发表于 2012-5-14 13:53
先歇一会,等大家发发帖子,大家可以发发RAID对数据库的影响,主要是对数据库的性能方面!!!

呵呵.那我说几句吧.
如果在有较高的预算的情况下,尽量使用RAID10,在读写方面都有很大的提升.
但是,tempdb放置到RAID1,用户数据库的日志文件放置到RAID1就可以了.
如果预算稍微次点,那么用户数据库的数据文件建议放到RAID5上,提供容错能力.

使用道具 举报

回复

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

本版积分规则 发表回复

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