语言
<< 返回文章列表

GaussDB T 硬件环境 性能调优

2020年3月12日
华为
240


墨天轮原文链接:https://www.modb.pro/db/22263


1. 存储

1.1 Raid

RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)是一项数据保护策略。

常用级别

● RAID 0:并行读取,读效率高,但不提供数据容错、数据保护,不适合数据库使用

● RAID 1:在RAID 0 的基础上提供镜像保护,需要两倍的驱动器,写入速度变慢,读取速度更高

● RAID 5:带有校验的磁盘条带,在大型阵列中牺牲的存储容量较少,对RAID5的每一次写操作, 都会涉及到多个读用于计算并且存储. 有很多写操作,并且要求很高效率的时, RAID 5并不是一个很好的选择。

● RAID 10:带条带的镜像,RAID 10不包含校验计算,这使得它相对RAID 5来说具有一定的性能优势,而且阵列对计算能力的要求也更低,但是RAID 10的写入性能也要低很多。

条带

条带(stripe)是把连续的数据分割成相同大小的数据块,把每段数据分别写入到阵列中的不同磁盘上的方法。

会条带化的RAID级别为:RAID0、RAID5、RAID6、RAID10。

● RAID0:它将多块硬盘合并成一块,数据连续地分割在每块盘上。 因为带宽加倍,所以读/写速度加倍。

● RAID5:数据以块为单位分布到各个硬盘上。RAID5不对数据进行备份,而是把数据和与其相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。

● RAID6:是在RAID 5基础上,为了进一步加强数据保护而设计的一种RAID方式,实际上是一种扩展RAID 5等级。与RAID5的不同之处于除了每个硬盘上都有同级数据XOR校验区外,还有一个针对每个数据块的XOR校验区。

● RAID10:兼备了 RAID0 和 RAID1 的优点,它先用两块磁盘建立镜像,然后再在
镜像内部做条带化。

性能对比

● 读效率:因为是并行读取, 读取效率都很高。
● 写效率:RAID 0 > RAID 1 > RAID 10 > RAID 5
● 磁盘利用率:RAID 0 > RAID 5 > RAID 1 = RAID 10
● 容错能力: RAID 5 > RAID 10 = RAID 1 > RAID 0

应用场景

● 数据库数据文件: RAID10,要求读的效率高,写效率比较低一些,容错能力要强,如果数据文件很大, 要求节约磁盘空间。

● 数据库日志文件:RAID1,在DB运行过程中,日志读写比较频繁, 需要很高的数据读写效率。

● 数据库数据备份:RAID1。

2. 网络

2.1 网络延迟分析

检查网络延迟,通过ping 交换机和虚拟机观察是否有网络丢包和响应时间,响应时间超过1毫秒会影响性能。

[root@localhost ~]$ ping 10.247.224.28
PING 10.247.224.28 (10.247.224.28) 56(84) bytes of data.
64 bytes from 10.247.224.28: icmp_seq=1 ttl=251 time=20.5 ms
64 bytes from 10.247.224.28: icmp_seq=2 ttl=251 time=21.0 ms
64 bytes from 10.247.224.28: icmp_seq=3 ttl=251 time=20.5 ms
64 bytes from 10.247.224.28: icmp_seq=4 ttl=251 time=21.0 ms
^C
--- 10.247.224.28 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 20.538/20.798/21.049/0.304 ms

2.2 丢包率

丢包率可以通过ping命令进行查看,丢包率超过1%会影响性能。

[root@host97 ~]# ping -c 100 10.185.240.96
PING 10.185.240.96 (10.185.240.96) 56(84) bytes of data.
64 bytes from 10.185.240.96: icmp_seq=1 ttl=64 time=0.096 ms
64 bytes from 10.185.240.96: icmp_seq=2 ttl=64 time=0.098 ms
64 bytes from 10.185.240.96: icmp_seq=3 ttl=64 time=0.092 ms
64 bytes from 10.185.240.96: icmp_seq=4 ttl=64 time=0.104 ms
64 bytes from 10.185.240.96: icmp_seq=5 ttl=64 time=0.110 ms
^C
--- 10.185.240.96 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3999ms //丢包率为0%
rtt min/avg/max/mdev = 0.092/0.100/0.110/0.006 ms

3. CPU

查询CPU核数命令

cat /proc/cpuinfo | grep processor |wc –l

利用top命令可以实时监控CPU的使用情况,CPU最大使用率=核数*100%,当CPU使用
率达到最大使用率的80%时,节点就会出现性能瓶颈。

3.1 物理核

● 查看物理CPU个数

cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

● 查看每个物理CPU的核数

cat /proc/cpuinfo| grep "cpu cores"| uniq

3.2 虚拟核

逻辑CPU是用Intel的超线程技术(HT)将物理核虚拟而成的逻辑处理单元。虚拟CPU(vCPU)是做虚拟化的时候,利用虚拟化技术,虚拟出来的CPU。

总逻辑CPU数计算公式如下:
总逻辑CPU数 = (物理CPU个数) X (每颗物理CPU的核数) X (超线程数)

通过如下命令查看逻辑CPU的个数:

cat /proc/cpuinfo| grep"processor"| wc -l


相关阅读:

1. GaussDB T 性能调优——硬件环境
https://www.modb.pro/db/22263


2. GaussDB T 性能调优——SQL问题分析之常见问题和案例分析
https://www.modb.pro/db/22261


3. GaussDB T 性能调优——SQL问题分析之CBO trace 日志
https://www.modb.pro/db/22258