4.7.?参数配置

4.7.1. 一般配置
4.7.2. 加载数据配置
4.7.3. 计划程序配置
4.7.4. 中间数据传输配置
4.7.5. DDL参数配置
4.7.6. 执行程序配置
4.7.7. 实时执行器配置
4.7.8. 任务跟踪执行程序配置

一些配置参数会影响到uxmpp的使用,包括uxdb本身的参数和uxmpp特有的参数。要了解有关uxdb本身参数,可以参考《优炫数据库用户手册 V2.1》。本节澳门游戏平台注册网站主要讨论uxmpp特有的参数。修改uxmpp参数类似于uxdb参数的修改,可以修改配置文件或使用SET命令。

4.7.1.?一般配置

uxmpp.max_worker_nodes_tracked (integer)

此配置值限制哈希表的大小,从而限制工作节点数。此设置的默认值为2048。此参数只能在服务器启动时设置,并且在master节点上有效。

uxmpp.use_secondary_nodes (enum)

设置在为SELECT查询选择节点时使用的策略。如果将其设置为“always”,则规划器将仅查询在ux_dist_node中noderole列标记为"secondary"的节点。枚举值为:never:(默认)所有读取都发生在主节点上;always:读取针对secondary节点运行,并且禁用插入/更新语句。

uxmpp.cluster_name (string)

通知协调器节点规划器它协调哪个集群。设置cluster_name后,计划程序将仅查询该群集的工作节点。

uxmpp.enable_version_checks (boolean)

升级uxmpp版本需要重新启动服务器(以获取新的共享库),以及运行ALTER EXTENSION UPDATE命令。执行这两个步骤失败可能会导致错误或崩溃。此参数是检查代码的版本和扩展匹配的版本。默认是on。在极少数情况下,复杂的升级过程可能需要将此参数设置为off,禁用检查。

uxmpp.log_distributed_deadlock_detection (boolean)

是否在服务器日志中记录分布式死锁检测相关处理。它默认为off。

uxmpp.distributed_deadlock_detection_factor (floating point)

设置在检查分布式死锁之前等待的时间。默认值为2。设置值为-1则禁用分布式死锁检测。

4.7.2.?加载数据配置

uxmpp.multi_shard_commit_protocol (enum)

该参数时在哈希分布式表上执行复制时要使用的提交协议。对于每个单独的节点,复制在事务块中执行,以确保在复制期间发生错误时不会写入数据。但是,有一种特定情况,即复制在所有节点上都成功,但是提交事务之前发生了错误。此参数可用于在这种情况下通过选择以下提交协议来防止数据丢失:

  • 2pc:(默认)在执行复制的时候,首先在各节点使用uxdb的提交为两段提交做准备,然后再由协调节点决定是否执行提交。可以使用COMMIT PREPARED或ROLLBACK PREPARED手动恢复或中止失败的提交。使用2pc时,应在各个节点上增大参数max_prepared_transactions的值,建议与max_connections相同。

  • 1pc:在各个节点中直接提交。有极小的可能会造成数据丢失。

uxmpp.shard_replication_factor (integer)

设置分片的复制因子,即在节点上放置某一个碎片的数量。默认为1,即在节点放置的某一个碎片数为1。此参数可以在运行时设置,即对不同表有不同的值。该参数只对master上设置有效。参数值一般取决于集群的大小和节点故障率。

uxmpp.shard_count (integer)

设置hash分布式表的分片总数,默认为32。使用create_distributed_table创建hash分布式表的时候,使用这个值。此参数可在运行过程中设置,即不同的hash分布式表可以有不同的分片总数,此参数只对master上设置有效。

uxmpp.shard_max_size (integer)

设置append分布式表的分片表最大大小,默认是1GB。即append分布式表的一个分片超过1GB的时候,就会创建一个新的分片。此参数可在运行过程中设置,即不同的append分布式表可以有不同大小的分片,此参数只对master上设置有效。

4.7.3.?计划程序配置

uxmpp.limit_clause_row_fetch_count (integer)

该参数为limit子句优化设置每个任务获取的行数。在某些情况下,带有limit的查询子句可能需要从每个任务中获取所有行来生成结果。在这种情况下,设置从每个分片中获取指定的行数,会产生和实际结果有点偏差的近似结果。默认情况下,该参数值是-1,即禁用的。这个参数可以在运行时设置,对master生效。

uxmpp.count_distinct_error_rate (floating point)

该参数设置计算count(distinct)的容错率。默认是0。如果需要用到此值,建议设置为0.005。此参数可在运行过程中设置,对master生效。

uxmpp.task_assignment_policy (enum)

设置将任务分配给worker时的策略。master通过计划程序将任务分发到各worker节点上。该参数指定分发任务时使用哪种策略。目前,有三种策略:

  • greedy:默认策略,在worker之间平均分配任务。

  • round-robin:以循环的方式在不同的副本之间交替为worker分配任务。当分片总数小于worker数的时候,可使用这种策略更合适。

  • first-replica:根据插入顺序分配任务,即将任务分配给第一副本所在的worker。

这个参数可以在运行时设置,对master生效。

4.7.4.?中间数据传输配置

uxmpp.binary_worker_copy_format (boolean)

使用二进制复制格式在worker之间传输中间数据。在大型表连接期间,uxmpp可能必须在不同worker之间动态地重新分配和重新分配数据。默认情况下,此数据以文本格式传输。启用此参数指示数据库使用uxdb的二进制序列化格式来传输此数据。此参数对worker有效。

uxmpp.binary_master_copy_format (boolean)

使用二进制复制格式在master和worker之间传输数据。运行分布式查询时,worker将其中间结果传输master以进行最终聚合。默认情况下,此数据以文本格式传输。启用此参数指示数据库使用uxdb的二进制序列化格式来传输此数据。此参数可以在运行时设置,并且对master有效。

uxmpp.max_intermediate_result_size (integer)

通用表表达式(CTE)和复杂子查询的中间结果的最大大小。默认是1GB,值为-1表示没有限制。超出限制查询会被取消并打印错误消息。

4.7.5.?DDL参数配置

uxmpp.enable_ddl_propagation (boolean)

该参数指定是否自动将DDL传播到所有的worker节点。默认是on。由于某些情况下,需要对对进行访问并且独占锁定,并自动传播到worker节点上,这会影响到uxmpp集群的性能。此时可以选择关闭该参数。

4.7.6.?执行程序配置

uxmpp.all_modifications_commutative (boolean)

uxmpp强制执行交换规则并获取适当的锁定以进行修改操作,以保证行为的正确性。例如,它假定INSERT语句与另一个INSERT语句交换,但不与UPDATE或DELETE语句交换。同样,它假定UPDATE或DELETE语句不与另一个UPDATE或DELETE语句交换。这意味着UPDATE和DELETE要求uxmpp获得更强大的锁。

如果有与INSERT或其他UPDATE交换的UPDATE语句,那么可以通过将此参数设置为on来放宽这些交换假设。当此参数设置为on时,所有命令都被视为可交换,并声明共享锁,这可以提高整体吞吐量。此参数可以在运行时设置,并且对master有效。

uxmpp.max_task_string_size (integer)

设置worker程序任务调用字符串的最大大小(以字节为单位)。更改此值需要重新启动服务器,在运行时无法更改。在主节点上的共享哈希表中跟踪活动worker程序任务。此配置值限制单个worker程序任务的最大大小。最小值:8192,最大值:65536,默认值12288。

uxmpp.remote_task_check_interval (integer)

设置uxmpp检查任务跟踪器执行程序管理的任务状态的频率。默认为10ms。master将任务分配给worker,然后定期检查每个任务的进度。这个配置值设置两个检查结果之间的时间间隔。此参数可以在运行时设置,对master生效。

uxmpp.task_executor_type (enum)

uxmpp有两种执行器类型用于运行分布式SELECT查询。可以通过设置此配置参数来选择所需的执行程序。此参数可选的值为:

  • real-time:实时执行程序,默认的执行程序。当涉及到聚合和跨多个分片的联合查询并且需要实时响应的时候,可选择此类型。

  • task-tracker:适合查询时间较长的复杂查询,这些查询需要跨节点进行数据重组的资源重新分配。

此参数可以在运行的时候设置,对master生效。

uxmpp.multi_task_query_log_level (enum)

为生成多个任务的查询(访问多个分片)设置日志级别。对多租户应用程序很有用,可以设置error或warning级别,可以通过租户id过滤到具体的租户。此参数可以在运行时设置,对master生效。默认值是off。此参数可选的值为:

  • off:关闭生成多个任务查询(跨多个分片)的日志。

  • debug:生成调试级别的日志。

  • log:生成日志级别的日志,包含运行的SQL查询。

  • notice:生成通知级别的日志。

  • warning:生成警告级别的日志。

  • error:生成错误级别的日志。

注意

error一般在开发测试期间使用,在实际使用时建议使用log级别。

uxmpp.explain_all_tasks (boolean)

默认情况下,在分布式查询上运行EXPLAIN时显示单个劝拿庞蜗菲教ㄗ⒉嵬锯任务的输出。大多数情况下,EXPLAIN在各个任务中都是差不多的。但是有些时候,某些任务的计划方式不同或执行时间特别长。在此情况下,启用此参数可以输出所有任务的EXPLAIN。当然,这也会导致EXPLAIN花费更长的时间。

4.7.7.?实时执行器配置

uxmpp查询计划程序首先屏蔽与查询无关的分片,然后将计划交给实时执行程序。为了执行计划,实时执行程序为每个分片打开一个连接,并使用两个文件描述符。如果查询遇到大量分片,则执行程序可能需要打开比max_connections更多的连接,或者使用比max_files_per_process更多的文件描述符。

在这种情况下,实时执行程序将开始限制任务以防止资源使用过高。由于此限制可能会降低查询性能,因此实时执行程序将发出适当的警告,建议需要增加这些参数才能保持所需的性能。下面简要讨论这些参数。

max_connections (integer)

数据库服务器的最大并发连接数,默认是100。某些内核可能只支持更少的连接数,可以在初始化集群的时候手动设置该参数,用以确认是否支持。实时执行程序会为其下发查询的每一个分片打开一个连接。需要在master和worker上同时修改该参数。

max_files_per_process (integer)

设置每个进程同时打开的最大的文件数,默认是1000。实时执行程序会为其下发查询的每一个分片提供两个文件描述符。增加此参数允许执行程序打开更多文件描述符,从而可以并行处理更多分片。需要在master和worker上同时修改该参数。

注意

除了max_files_per_process之外,还可能需要使用ulimit命令来修改内核限制每个进程可打开大文件描述符。

uxmpp.enable_repartition_joins (boolean)

当实时执行程序执行重新分区连接失败时,会打印错误信息。但是当打开该参数时,可以临时切换到任务跟踪程序执行连接。默认是off。

4.7.8.?任务跟踪执行程序配置

uxmpp.task_tracker_delay (integer)

任务跟踪执行程序休眠时间,默认是200ms。任务跟踪执行器会定期遍历分配的任务,并安排和执行。然后再次遍历前会进入休眠时间。此参数即为休眠时间。此参数在workre上生效。通过减少休眠时间用以减少任务跟踪执行程序的延时,在分片段查询中很适用。

uxmpp.max_tracked_tasks_per_node (integer)

设置每个节点的最大跟踪任务数,默认为1024。对worker生效。如果希望每个worker节点能够跟踪更多任务,则需要增加此参数。如果此值低于所需值,则会报错,并提示它超出了共享内存,可以增加此参数。

uxmpp.max_assign_task_batch_size (integer)

master上的任务跟踪器执行器同步地将任务分批分配给worker上的守护进程。默认值是64。此参数设置在单个批处理中要分配的任务的最大数量。此参数可以在运行的时候设置,对master生效。

uxmpp.max_running_tasks_per_node (integer)

任务跟踪程序进程调度并执行分配给它的任务。此配置值设置在给定时间在一个节点上并发执行的任务的最大数量,默认值为8。对worker生效。此参数可以避免过多的任务访问磁盘出现I/O争用情况。如果查询是通过内存或者SSD提供的,那么可以增大此参数值,并且不必考虑I/O争用的情况。

uxmpp.partition_buffer_size (integer)

设置用于分区操作的缓冲区大小,默认为8MB。uxmpp允许在连接两个大表时将表数据重新分区为多个文件。在此分区缓冲区填满后,重新分区的数据将刷新到磁盘上的文件中。此参数可以在运行的时候设置,对worker生效。

XML 地图 | Sitemap 地图