部署GaussDB 200时,一个RAID组上究竟布多少个DN合适?

举报
社会主义的一块砖 发表于 2019/07/17 18:17:59 2019/07/17
【摘要】 先来看两组数据,这些数据将通过count来检验一组Raid上部署单DN和部署多DN间的性能差异。 第一组:表lineitem上执行的,lineitem表的数据是通过GDS外表导入的。 l CN上执行 select count(*):tpch_row=# select count(*) from lineitem; count ------------1799989091(1 row...

先来看两组数据,这些数据将通过count来检验一组Raid上部署单DN和部署多DN间的性能差异。

 

第一组:表lineitem上执行的,lineitem表的数据是通过GDS外表导入的。 

l  CN上执行 select count(*)

tpch_row=# select count(*) from lineitem;

   count   

------------

1799989091

(1 row)

 

Time: 269473.636 ms

 

cid:image001.png@01D0DB5C.662131B0

 

l  DN执行select count(*)

tpch_row=# select count(*) from lineitem;

  count  

----------

75610286

(1 row)

 

Time: 76611.682 ms

cid:image002.png@01D0DB5C.662131B0

 

第二组: 用原表插入的方式创建有同样结构的表lineitem_2: create table lineitem_2 as select * from lineitem

 然后在lineitem_2上做同样的tablescan,数据如下:

 

l  DN上执行 select count(*)

tpch_row=#  select count (*) from lineitem_2;

  count  

----------

75610286

(1 row)

 

Time: 13704.895 ms

 

l  CN上执行 select count(*)

tpch_row=#  select count (*) from lineitem_2;

   count   

------------

1799989091

(1 row)

 

Time: 91891.949 ms

 

两组数据的对比结果如下:

CN上执行tablescan

lineitem

lineitem_2

耗时

269

92 

I/O 利用率

100%

100%

raid速率

160M/S

500M/S


DN上执行tablescan

lineitem

lineitem_2

耗时

76 

14

I/O 利用率

95%

30-40%

raid速率

172M/S

900M/S


 从以上数据可以得出如下结论:

 1、一个RAID组只部署一个DN,其I/O性能明显优于一个Raid组上部署多个DN。原因如下:

  • 多DN在GDS导入时会造成I/O碎片化,这样在随后的SCAN速度会降低很多。

  • 多DN在查询的时候由于I/O争用,会导致SCAN的速度降低更多,目前的count(*)查询已经证明。


2、 如有可能,建议将日志,XLOG等所有会产生写操作的目录配置到不同的RAID组,这样可以保证导入的时候数据尽量集中,不产生随机I/O。


3、 导入的时候为了导入性能可能需要并发导入,但这也会同样导致随机I/O, 如果查询性能非常重要,可以导入一个中间表然后再导入最终表。 


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。