部署GaussDB 200时,一个RAID组上究竟布多少个DN合适?
【摘要】 先来看两组数据,这些数据将通过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
l 单DN执行select count(*):
tpch_row=# select count(*) from lineitem;
count
----------
75610286
(1 row)
Time: 76611.682 ms
第二组: 用原表插入的方式创建有同样结构的表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)