楼主: arron刘

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

[复制链接]
论坛徽章:
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
91#
发表于 2012-5-16 08:58 | 只看该作者
yanyangtian4502 发表于 2012-5-16 08:49
今天赶个早,多吐点干货。
我们来快速的看看RAID 10吧,可以把RAID 10 看成是RAID 1+0,是RAID1 和RAID 0的 ...

RAID10 是先做的RAID1,之后RAID0还是先RAID0再RAID1

使用道具 举报

回复
论坛徽章:
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
92#
发表于 2012-5-16 09:00 | 只看该作者
yanyangtian4502 发表于 2012-5-16 08:49
今天赶个早,多吐点干货。
我们来快速的看看RAID 10吧,可以把RAID 10 看成是RAID 1+0,是RAID1 和RAID 0的 ...

并且先做RAID0 再RAID1

先RAID1再RAID0
是否一样?
在性能上

使用道具 举报

回复
招聘 : 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
93#
发表于 2012-5-16 09:02 | 只看该作者
看完了10,再来看看01吧,如图:

RAID01或者称之为RAID 0+1,先把数据分布,然后镜像到另外的磁盘上面。这个10是个相反的过程。

讲了这么多,我们就看看如何在数据库中使用以上讲述的这些RAID。
1.要充分的考虑负载。在选择RAID之前,要知道我们数据库中的数据的读取情况和类型,例如是顺序写入居多,还是随机写入居多。有一个宗旨就是:尽可能的将负载分担在不同的磁盘上面。
2.对于数据文件而言,要配置合适的磁盘,我们通过使用sys.dm_io_virtual_file_stats这个DMV来看看现在的数据中文件的读写情况,然后在选择RAID。因为这个DMV中包含了从上次sql server其中所有文件读写情况的累计总数。对于只读的数据库,采用RAID 5和6是非常好的,强烈推荐,另外RAID 5和6 一般用在Data Warehouse类型的系统中,流入专门产生报表的只读数据(很长时间才去把数据同步一次),或者用在数据写入非常非常少的系统中。

这里插播一句:很多的时候,需要从程序的架构和数据库几个方面来考虑。即使你的数据库搞的再好,你程序的架构不支持或者没有利用好数据库,也是不行的。

3.对于OLTP,或者说写入很多的数据库,RAID10非常不错,推荐一下。

使用道具 举报

回复
招聘 : 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
94#
发表于 2012-5-16 09:02 | 只看该作者
hwtong 发表于 2012-5-16 09:00
并且先做RAID0 再RAID1

先RAID1再RAID0

肯定不一样啊,磁头来回读写产生的延迟都不一样

使用道具 举报

回复
招聘 : 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
95#
发表于 2012-5-16 09:04 | 只看该作者
hwtong 发表于 2012-5-16 08:58
RAID10 是先做的RAID1,之后RAID0还是先RAID0再RAID1

先分布,在镜像

使用道具 举报

回复
论坛徽章:
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
96#
发表于 2012-5-16 09:05 | 只看该作者
yanyangtian4502 发表于 2012-5-16 09:02
看完了10,再来看看01吧,如图:

RAID01或者称之为RAID 0+1,先把数据分布,然后镜像到另外的磁盘上面。 ...

你上面说的随机写入和顺序写入,如何判断哪个多

使用道具 举报

回复
招聘 : 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
97#
发表于 2012-5-16 09:12 | 只看该作者
4.对于日志文件而言,因为顺序的写入方式,所以RAID 1非常适合用来存在日志文件。对于搞写入的数据而言,每一个数据库的日志文件最还是放在不同的物理磁盘上面,如果全部放在相同的磁盘上面,就会产生写入的延时了。
5.另外,对于tempdb,要特别的考虑一下。数据库的很多操作都会使用到tempdb,例如sort,hash,临时数据,版本控制等等。我建议,把tempdb的文件和数据文件与日志文件分开放,并且还得放在单独的物理磁盘上,因为tempdb是一个高写入的数据库,RAID 1或者RAID10非常适合tempdb的存放。还有就是,因为tempdb是一个临时的存储区域,所以如果有成本的话,建议采用固态硬盘或者闪存,这样可以非常大的提升性能。关于tempdb的话题太多了,还要涉及里面的文件类型,例如PFS等,这里不谈了!这些就够了。

使用道具 举报

回复
招聘 : 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
98#
发表于 2012-5-16 09:13 | 只看该作者
本帖最后由 yanyangtian4502 于 2012-5-16 09:15 编辑
hwtong 发表于 2012-5-16 09:05
你上面说的随机写入和顺序写入,如何判断哪个多


主要是分析你的应用程序的产生的数据和出来的数据量!或者说,你项目中的数据写入方式。这在数据库中是很难分析出来的。不能仅仅停留在数据库的层面!
比如,你的应用程序中更新操作非常多,很频繁,那么随机写入就多了。
如果插入数据频繁,那么顺序写入和随机写入都有,差不多各一半。

使用道具 举报

回复
论坛徽章:
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
99#
发表于 2012-5-16 09:14 | 只看该作者
还有个问题.
很多人都在说 tempdb的文件个数最好设置为物理CPU的一半.
请问,这个是否真的有效?

使用道具 举报

回复
招聘 : 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
100#
发表于 2012-5-16 09:16 | 只看该作者
hwtong 发表于 2012-5-16 09:14
还有个问题.
很多人都在说 tempdb的文件个数最好设置为物理CPU的一半.
请问,这个是否真的有效?

从你的理解来想,这样是对的吗?我常常说的,不要听信“传说”,从技术底层去实实在在的考虑,分析。

使用道具 举报

回复

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

本版积分规则 发表回复

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