您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[华为]:华为GaussDB性能调优 - 发现报告
当前位置:首页/行业研究/报告详情/

华为GaussDB性能调优

2019-06-19-华为杨***
华为GaussDB性能调优

版权所有©2019华为技术有限公司性能调优 第2页版权所有©2019华为技术有限公司前言性能问题通常是由某种特定资源的过度使用导致的,而这种过度使用的资源就是这个系统的瓶颈。调优的目的是为了减少资源消耗或者减少操作的耗时。从另一方面来说,调优是为了在特定资源下提高系统的使用效果。本章主要讲述华为GaussDB性能调优的总体思路、原理和方式方法。 第3页版权所有©2019华为技术有限公司目标学完本课程后,您将能够:分析性能瓶颈描述性能调优的原理;列举性能调优的方法;使用性能调优方法解决性能问题 第4页版权所有©2019华为技术有限公司目录1.性能瓶颈性能瓶颈分类性能基线2.3.4.5.性能诊断系统调优WDR报告详解性能调优案例分析 第5页版权所有©2019华为技术有限公司影响性能因素一般影响数据库性能的因素有以下几类硬件服务器、存储、网络系统规模并发、数据量数据库内部因素索引、数据类型、统计信息等软件环境操作系统及参数配置 第6页版权所有©2019华为技术有限公司性能瓶颈分类概述性能问题通常是由某种特定资源的过度使用导致的,而这种过度使用的资源就是这个系统的瓶颈。数据库服务器常见的性能瓶颈问题主要是由CPU、内存、I/O和网络资源使用情况造成的。物理I/O缓慢CPU使用率过高网络问题内存分配不合理 第7页版权所有©2019华为技术有限公司性能基线概述性能好坏没有一个绝对的标准,为了性能优化工作更加科学,需要建立量化的性能基准点,而不能依赖于经验来建立。衡量性能快慢均可与基准点进行比较,这个基准点即为基线。理想情况下,性能基线应该包括以下内容:应用统计信息数据库统计信息操作系统统计信息磁盘I/O统计信息网络统计信息 第8页版权所有©2019华为技术有限公司目录1.2.性能瓶颈性能诊断性能调优思路性能诊断方式硬件瓶颈点分析3.4.5.系统调优WDR报告详解性能调优案例分析 第9页版权所有©2019华为技术有限公司本节概述和学习目标本节将从性能调优思路、性能诊断方式、调优步骤,硬件资源瓶颈分析,来系统介绍性能调优的流程,并为后续章节调优方式的详细展开做铺垫。 第10页版权所有©2019华为技术有限公司性能调优思路总体性能调优思路为性能瓶颈点分析、关键参数调整以及SQL调优。在调优过程中,通过系统资源、吞吐量、负载等因素来帮助定位和分析性能问题,使系统性能达到可接受的范围。数据库性能调优思路如流程图所示。开始确定性能调优范围针对整体运行调优?系统调优是是否满足业务需求?是结束SQL调优否否 第11页版权所有©2019华为技术有限公司性能调优流程说明阶段确定性能调优范围系统调优描述获取数据库实例服务器的CPU、内存、I/O和网络资源使用情况,确认这些资源是否已被充分利用,是否存在瓶颈点。进行操作系统级以及数据库系统级的调优,其目的是充分地利用机器的CPU、内存、I/O和网络资源,避免资源冲突,提升整个系统查询的吞吐量。系统调优从硬件、系统配置和数据库表结构三个维度进行,这三个维度的调优成本和调优效果排序如下:调优成本:硬件>系统配置>数据库表结构调优效果:硬件<系统配置<数据库表结构SQL调优审视业务所用SQL语句是否存在可优化空间:通过ANALYZE语句生成表统计信息:ANALYZE语句可收集与数据库中表内容相关的统计信息,统计结果存储在系统表中。执行计划生成器会使用这些统计数据,以确定最有效的查询执行计划。分析执行计划:EXPLAIN语句可显示SQL语句的执行计划。查找问题根因并进行调优:通过分析执行计划,找到可能存在的原因,进行针对性的调优,通常为调整数据库级SQL调优参数。编写更优的SQL:介绍一些复杂查询中的中间临时数据缓存、结果集缓存、结果集合并等场景中的更优SQL语法。 第11页版权所有©2019华为技术有限公司性能优化方法论业务系统优化数据库SQL优化数据库系统优化操作系统内核参数优化内存IO网络优化硬件提升越往上优化,成本越高,效果越不明显越往下优化,成本越低,效果越明显 第12页版权所有©2019华为技术有限公司性能诊断方式WDR报告WDR报告是GaussDB提供的一种性能收集和分析工具,它能提供一个时间段内整个系统资源使用情况的报告,通过此报告可以了解数据库整体运行情况,像是数据库的体检报告。查询最耗性能的SQL系统中有些SQL语句运行了很长时间还没有结束,这些语句会消耗很多的系统性能。通过如下SQL语句:SELECTcurrent_timestamp-query_startASruntime,datname,usename,queryFROMpg_stat_activitywherestate!='idle'ORDERBY1desc;可以查询到系统中耗时按执行时间从长到短顺序返回查询语句列表,第一条结果就是当前系统中执行时间最长的查询语句。数据库统计信息可以利用统计信息对数据库性能进行分析数据库缓存命中率等待事件 第15页版权所有©2019华为技术有限公司WDRSummary 第16页版权所有©2019华为技术有限公司硬件瓶颈点分析-CPU 第17页版权所有©2019华为技术有限公司硬件瓶颈点分析-内存 第18页版权所有©2019华为技术有限公司硬件瓶颈点分析-IO1,检查磁盘空间使用率,不超过60%2,若IO持续过高,建议尝试以下方式:1)降低并发2)对查询相关表做vacuum full 第18页版权所有©2019华为技术有限公司硬件瓶颈点分析-网络 第19页版权所有©2019华为技术有限公司目录1.2.3.性能瓶颈性能诊断系统调优操作系统参数调优数据库系统参数调优配置LLVM4.5.WDR报告详解性能调优案例 第20页版权所有©2019华为技术有限公司操作系统参数调优系统调优是指进行操作系统级以及数据库系统级的调优,更充分地利用机器的CPU、内存、I/O和网络资源,避免资源冲突,提升整个系统查询的吞吐量在性能调优过程中,可以根据实际业务情况修改关键操作系统(OS)配置参数,以提升GaussDB数据库的性能。需要用户使用gs_check检查操作系统参数结果是否和建议值保持一致,如果不一致,用户可根据实际业务情况去手动修改 第21页版权所有©2019华为技术有限公司内存相关参数设置配置“sysctl.conf”文件,修改内存相关参数vm.extfrag_threshold为1000(参考值),如果文件中没有内存相关参数,可以手动添加。vim/etc/sysctl.conf修改完成后,请执行如下命令,使参数生效。sysctl-p 第22页版权所有©2019华为技术有限公司网络相关参数设置-1配置“sysctl.conf”文件,修改网络相关参数,如果文件中没有网络相关参数,可以手动添加。详细说明请参见表网络相关参数。vim/etc/sysctl.conf在修改完成后,请执行如下命令,使参数生效。sysctl-p参数名net.ipv4.tcp_timestampsnet.ipv4.tcp_memnet.ipv4.tcp_max_orphansnet.ipv4.tcp_fin_timeoutnet.ipv4.ip_local_port_range参考值1945000009150000009270000003276800602600065535说明表示开启TCP连接中TIME-WAITsockets的快速回收,默认为0,表示关闭,1表示打开。第一个数字表示,当tcp使用的page少于94500000时,kernel不对其进行任何的干预。第二个数字表示,当tcp使用的page超过915000000时,kernel会进入“memorypressure”压力模式。第三个数字表示,当tcp使用的pages超过927000000时,就会报:Outofsocketmemory。最大孤儿套接字(orphansockets)数。表示系統默认的TIMEOUT时间。TCP和UDP能够使用的port段。 第23页版权所有©2019华为技术有限公司网络相关参数设置-2设置10GE网卡最大传输单元(MTU),使用ifconfig命令设置。10GE网卡推荐设置为8192,可提升网络带宽利用率;设置10GE网卡接收(rx)、发送队列(tx)长度,使用ethtool工具设置。10GE网卡推荐设置为4096,可提升网络带宽利用率; 第24页版权所有©2019华为技术有限公司I/O相关参数设置设置hugepage属性。在“/boot/grub/menu.lst”文件中第一个kernel行里追加下面参数,来关闭透明大页:transparent_hugepage=never修改完成后,请执行如下命令,使参数生效:reboot 第25页版权所有©2019华为技术有限公司数据库系统参数调优•数据库内存参数调优•guc参数调优•数据库LLVM配置 第26页版权所有©2019华为技术有限公司数据库内存参数调优逻辑内存管理参数逻辑内存管理参数为max_process_memory,用于控制数据库上可用内存的最大峰值;执行作业最终可用的内存为:max_process_memory–sharedmemory(包括shared_buffers)–cstore_buffers所以影响执行作业可用内存参数的主要两个参数为shared_buffers及cstore_buffers。执行算子是否下盘的参数参数work_mem可以判断执行作业可下盘算子是否已使用内存量触发下盘点。当前可下盘算子有六类(向量化及非向量化共10种):Hash(VecHashJoin),Agg(VecAgg),Sort(VecSort),Material(VecMaterial),SetOp(VecSetOp),WindowAgg(VecWindowAgg)。该参数设置通常是一个权衡,即要保证并发的吞吐量,又要保证单查询作业的性能,故需要根据实际执行情况(结合ExplainPerformance输出)进行调优。 第26页版权所有©2019华为技术有限公司数据库guc参数调优参数名默认值调整值参数含义影响max_connections2002500客户端并发联接的最大个数设置业务合理的连接数max_pool_size4003000CN的连接池与其它某个CN/DN的最大连接数。根据业务的连接数情况设置maintenance_work_mem16MB2GB在维护性操作(例如VACUUM)中使用的最大的内存量在载入大量数据时,VACUUM操作也更加耗资源,增大此配置变量可以改进性能wal_buffers16MB1G将其WAL(预写日志)记录写入缓冲区,然后将这些缓冲区刷新到磁盘。默认值16M一般够用,如果有大量并发连接的话,则设置为一个较高的值可以提供更好的性能checkpoint_segments64128每次checkpoint保留的xlog数量调整建议:增量checkpoint模式下设置值不宜小于incremental_checkpoint_timeout时间段内产生的日志量;对性能的影响:如果该值过小,日志量产生速度快的情况下,会导致checkpoint频繁触发,影响性能;资源:设置过大,会占用磁盘空间最佳实践:增量checkpoint模式下设置大于incremental_checkpoint_timeout时间段内产生的日志量最佳wal_keep_segments16128保留事务日志的segment的最小数量,备机通过获取主机的日志进行流复制。设置时请确保此值比checkpoint_segments至少大1.在强切启用时建议修改为9600调整建议:开启强起工功能时,建议为9600,其他情况,设置时checkpoint_segments+1,不建议设置小于checkpoint_segments性能:无影响资源:设置过大,会占用磁盘空间最佳实践:checkpoin