1 负载均衡策略
GBase 8a MPP Cluster产品支持负载均衡策略。有三个层面的支持能力:
1.1.客户应用向集群建立连接阶段,自动选取当前负载最小的节点进行连接。
ADO.NET:
String _ConnString = “server=192.168.0.2;failover=true;iplist=192.168.0.3;192.168.0.4;gclusterid=g1”
C API:
Host=” 192.168.1.1; 192.168.1.2”
JDBC:
String URL=”jdbc:gbase://192.168.1.56/test?user=gbase&password=******&failoverEnable
=true&hostList=192.168.1.57, 192.168.1.58&gcluster=gcl1”
ODBC:
“DRIVER=GBase 8a MPP Cluster ODBC 8.3 Driver;UID=gbase;PWD=******;”
“SERVER={192.168.111.96; 192.168.5.212; 192.168.7.174; 192.168.7.173};”
“CONNECTION_BALANCE=1;GCLUSTER_ID=gcluster;”
“CHECK_INTERVAL=90;”
1.2.在数据分布策略上,支持均匀分布策略,使各节点数据量均匀。
1.3.在SQL执行分发策略上,将请求分解到各个主机上并行执行,使各个主机负载接近一致。
2 压缩策略
大部分应用中性能的瓶颈是磁盘I/O,所以新型数据库的设计都以降低磁盘I/O为主要设计目标,数据压缩可减少I/O的时间,提升性能,GBase 8a MPP Cluster也不例外,压缩也是提高性能的主要技术之一,GBase 8a MPP Cluster并行执行器已经能够从上层并行调度解压,使解压的适用性得到了很大的提升,在很多场景下(尤其是针对超大数据量的场景),使用压缩数据的方式都可以获得比不压缩更好的性能。
3 扩容缩容优化
Gnode配置参数在缩容情况下,最高值:
MAX_PARALLEL_DEGREE = ( PROCESS_COUNT > ((TOTAL_NODES_COUNT-1) // (NEW_NODE_COUNT)) ? PROCESS_COUNT / ((TOTAL_NODES_COUNT-1) // (NEW_NODE_COUNT)) : 1);
可避免缩容时由于配置问题而导致的内存不足报错。
•RESULT_BUFF_COUNT = (保留节点个数/被移除组的节点的个数) * MAX_PARALLEL_DEGREE;
其中:
•PROCESS_COUNT:CPU个数;
•TOTAL_NODES_COUNT:集群总节点个数;
•NEW_NODE_COUNT:集群缩减掉或增加的节点个数;
最大配置内存公式:
•RESULT_BUFF_COUNT * gbase_buffer_result + 其他堆内存配置参数(data heap,temp heap) < 物理内存80%
如果开启了并行,则:
•TableParallel = 默认运行节点CPU个数,设定后就是设定的值。
最大配置内存公式:
•TableParallel * gbase_buffer_result + 其他堆内存配置参数(data heap,temp heap) < 物理内存80%。
缩容+扩容模式的节点替换期间查询性能稳定
缩容+扩容方式进行节点替换的场景,开启参数gcluster_different_distribution_optimize后可使节点替换期间的跨distribution查询性能不下降。
值为0代表关闭,值为1代表开启,默认值为0。
说明:
在缩容+扩容方式进行节点替换过程中,集群会有3个distributionID,原始分布ID、缩容后ID、扩容后ID,3个distributionID的数据分布不变,在这个过程中如果有关联查询且关联查询涉及的表有的已完成扩容重分布,有的未完成,使这些表处于不同的distributionID上,则:
该参数关闭情况下,执行计划会对跨distributionID的查询进行拉表操作,将表数据拉到同一个distributionID后执行操作;
参数开启后,执行计划会检查不同distributionID上的数据分布情况,如果表的数据分布相同,则按相同的distributionID执行,减少拉表操作,以使节点替换过程中的查询性能达到未替换前的性能。
4 异步双活集群数据同步传输优化
以下优化仅限于两个集群间的数据同步,集群内部主备数据同步不受影响
1)数据同步限速:
两个集群间数据同步可使用的总的网络带宽上限。
带宽上限设置过小会导致报错提示。总带宽设置需大于1MB/s,并且经过计算后每个分片同步带宽需不小于10KB/s。
每个分片带宽上限=总带宽上限/表并行度/同步的分片数
同步的分片数受rsync_mode模式影响
2)压缩传输:
两个集群间需要同步的元数据和DC数据文件进行二次压缩,使用的压缩算法为zlib算法。
数据如果小于50Byte不进行二次压缩;数据大于50Byte但是压缩后数据长度大于压缩前数据长度,不进行二次压缩。
优化开启操作:
1)synctool的配置文件synctool.conf中添加如下参数:
BANDWIDTH_QOS_SWITCH=1
COMPRESSED_SWITCH=1
注:配置文件中参数均需大写,以上两个参数默认值为0,代表功能不启用,值设置为1代表功能启用。
2)启动同步工具时增加参数:
./gcluster_rsynctool.py --sync_network_bandwidth=带宽上限
说明:带宽上限默认单位为MB/s,默认值为0,代表带宽不限制。取值范围为1~99999。
性能参考:
二次压缩的压缩比不低于70%,二次压缩后数据传输比不压缩的时间增长不超过50%
兼容性说明:
优化功能对同步传输协议有改动,所以启用优化功能的双活集群版本不兼容老版本。即使用优化功能,双活集群必须都使用包含该特性的sync_client和sync_server对应版本。
优化功能(压缩功能和限流功能)关闭情况下对双活集群版本无要求也无影响。
5 分区表fevent自动恢复效率提升
优化机制如下:
5.1、dmlevent 恢复时 进行分区表 scn 过滤,减小要同步的分区数量
5.2、dmlstorage优化网络传输,关闭nagle算法
5.3、fevent同步完成后提交阶段由于锁申请失败导致的fevent恢复失败,转为dmlevent处理,避免全量数据回滚重做同步。
该优化需以下参数开启和配合使用:
1)synctool的配置文件synctool.conf中添加如下参数:
控制是否开启并发功能:
CONCURR_SWITCH =1
控制分区表物理表是否进行scn过滤机制:
FASTSYNC_SWITCH =1
控制是否关闭nagle算法:
NAGLE_SWITCH_OFF =0
注:配置文件中参数均需大写,前两个参数默认值为1,代表功能启用,最后一个参数默认值为0,代表功能不启用。
2)在gcrecover配置文件gc_recover.cnf中更改如下参数:
控制是否开启gcrecover性能优化参数,用于分区表自动恢复优化:
dml_recover_parall_switch =1
并行恢复的线程数:
dml_recover_parall_thread_num =4
注:第一个参数默认值为1,代表功能启用,第二个参数默认值为4,取值范围为[1,10]。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。