MaxNoOfLocalScans:和上面的这个参数相对应,只不过设置的是在本节点上面的并发table scan和range scan数量。如果在系统中有大量的并发而且一般都不使用并行的话,需要注意此参数的设置。默认为MaxNoOfConcurrentScans * node数目;
BatchSizePerLocalScan:该参用于计算在Localscan(并发)过程中被锁住的记录数,文档上说明默认为64;
LongMessageBuffer:这个参数定义的是消息传递时候的buffer大小,而这里的消息传递主要是内部信息传递以及节点与节点之间的信息传递。这个参数一般很少需要调整,默认大小为1MB大小;
下面介绍一下与log相关的参数配置说明,包括log level。这里的log level有多种,从0到15,也就是共16种。如果设定为0,则表示不记录任何log。如果设置为最高level,也就是15,则表示所有的信息都会通 过标准输出来记录log。由于这里的所有信息实际上都会传递到管理节点的cluster log中,所以,一般来说,除了启动时候的log级别需要设置为1之外,其他所有的log level都只需要设置为0就可以了。
NoOfFragmentLogFiles:这个参数实际上和Oracle的redo log的group一样的。其实就是ndb的redo log group数目,这些redo log用于存放ndb引擎所做的所有需要变更数据的事情,以及各种checkpoint信息等。默认值为8;
MaxNoOfSavedMessages:这个参数设定了可以保留的trace文件(在节点crash的时候参数)的最大个数,文档上面说此参数默认值为25。
LogLevelStartup:设定启动ndb节点时候需要记录的信息的级别(不同级别所记录的信息的详细程度不一样),默认级别为1;
LogLevelShutdown:设定关闭ndb节点时候记录日志的信息的级别,默认为0;
LogLevelStatistic:这个参数是针对于统计相关的日志的,就像更新数量,插入数量,buffer使用情况,主键数量等等统计信息。默认日志级别为0;
LogLevelCheckpoint:checkpoint日志记录级别(包括local和global的),默认为0;
LogLevelNodeRestart:ndb节点重启过程日志级别,默认为0;
LogLevelConnection:各节点之间连接相关日志记录的级别,默认0;
LogLevelError:在整个Cluster中错误或者警告信息的日志记录级别,默认0;
LogLevelInfo:普通信息的日志记录级别,默认为0。
这里再介绍几个用来作为log记录时候需要用到的Buffer相关参数,这些参数对于性能都有一定的影响。当然,如果节点运行在无盘模式下的话,则影响不大。
UndoIndexBuffer:undo index buffer主要是用于存储主键hash索引在变更之后产生的undo信息的缓冲区。默认值为2M大小,最小可以设置为1M,对于大多数应用来说,2M的 默认值是够的。当然,在更新非常频繁的应用里面,适当的调大此参数值对性能还是有一定帮助的。如果此参数太小,会报出677错误:Index UNDO buffers overloaded;
UndoDataBuffer:和undo index buffer类似,undo data buffer主要是在数据发生变更的时候所需要的undo信息的缓冲区。默认大小为16M,最小同样为1M。当这个参数值太小的时候,系统会报出如下的错 误:Data UNDO buffers overloaded,错误号为891;
RedoBuffer:Redo buffer是用redo log信息的缓冲区,默认大小为8M,最小为1M。如果此buffer太小,会报1221错误:REDO log buffers overloaded。
此外,NDB节点还有一些和metadata以及内部控制相关的参数,但大部分参数都基本上不需要任何调整,所以就不做进一步介绍。如果有兴趣希望详细了解,可以根据MySQL官方的相关参考手册,手册上面都有较为详细的介绍。
3、SQL节点相关配置说明
1) 和其他节点一样,先介绍一些适用于所有节点的[MySQLD DEFAULT]参数
ArbitrationRank:这个参数在介绍管理节点的参数时候已经介绍过了,用于设定节点级别(主要是在多个节点在处理相关操作时候出现分歧时候设定裁定者)的。一般来说,所有的SQL节点都应该设定为2;
ArbitrationDelay:默认为0,裁定者在开始裁定之前需要被delay多久,单位为毫秒。一般不需要更改默认值。
BatchByteSize:在做全表扫描或者索引范围扫描的时候,每一次fatch的数据量,默认为32KB;
BatchSize:类似BatchByteSize参数,只不过BatchSize所设定的是每一次fetch的record数量,而不是物理总量,默 认为64,最大为992(暂时还不知道这个值是基于什么理论而设定的)。在实际运行query的过程中,fetch的量受到BatchByteSize和 BatchSize两个参数的共同制约,二者取最小值;
MaxScanBatchSize:在Cluster环境中,进行并行处理的情况下,所有节点的BatchSize总和的最大值。默认值为256KB,最大值为16MB。
2) 每个节点独有的[MySQLD]参数组,仅有id和hostname参数需要配置。