7.2.?UXDB调优

uxmpp协调器将传入的查询分为片段查询,并将它们下发到worker上进行并行处理。worker其实只是扩展的UXDB服务器,这些查询将应用UXDB的标准规划和执行逻辑。因此,澳门游戏平台注册网站需要先调优worker上的UXDB配置参数以提高性能。

调整参数是一个实验的过程,通常需要多次尝试才能达到理想的性能。因此,在调整参数的时候,可以选择加载一小部分数据,加快迭代速度。

开始调优前,先创建一个uxmpp集群并加载一些数据。在master上执行EXPLAIN命令,查看worker是如何处理查询的,以及master如何汇总查询结果。

澳门游戏平台注册网站以github_events表为例:

EXPLAIN
 SELECT date_trunc('minute', created_at) AS minute,
        sum((payload->>'distinct_size')::int) AS num_commits
   FROM github_events
  WHERE event_type = 'PushEvent'
  GROUP BY minute
  ORDER BY minute;

通过执行即可,澳门游戏平台注册网站可以了解执行过程。首先有32个分片,执行器选择的是real-time:

接下来,展示了其中一个分片上的查询行为,指明了worker的主机、端口和数据库:

最后,显示了查询片段在worker的UXDB服务器的EXPLAIN的结果:

现在,澳门游戏平台注册网站可以通过EXPLAIN的执行结果,连接到192.168.1.83:5432的worker上,调整分片github_events_104169的查询性能。调优过程中,可以通过在master上执行EXPLAIN来查看调优结果。

澳门游戏平台注册网站先进行配置参数调优。UXDB的默认设置都是比较保守的,其中shard_buffers和work_mem是对读取性能优化比较重要的参数。

shard_buffers定义了分配给数据库缓存数据的内存。默认是128MB。澳门游戏平台注册网站建议改值为当前节点的RAM的1/4—1/2。

如果查询中有很多复杂的排序,那么可以增加work_mem使排序在更大的内存中运行,这比在磁盘中排序要快的多。如果在worker节点中查看到有很多的磁盘活动,那么非常有必要增大该值。可以提高查询的效率,让更多的操作在内存中进行。

最后,可以在表上创建索引来增强数据库的性能。对于索引的选择,可以通过EXPLAIN查看查询计划并优化查询计划中较慢的部分。创建索引之后,索引必须和表保持同步,这会增加一部分数据操作的开销。因为,可以将不用的索引删除掉。

对于写入性能,可以使用常规的UXDB调优来提高INSERT的速率。通常建议增加checkpoint_timeout和max_wal_size设置。此外,根据应用程序的可靠性要求,可以选择更改fsync或者synchronous_commit的值(可参考《优炫数据库用户手册 V2.1》)。

在其中一个worker上调整了合适的参数,也同时需要手动去修改其他worker上的对应参数。可以在master上打开uxmpp.explain_all_tasks开关,并执行EXPLAIN来验证其他worker上的调优。这时候执行的EXPLAIN,将会显示所有分片的查询计划。

由于数据分布不均匀或者机器硬件的差异可能会导致worker程序执行的差异。可以运行EXPLAIN ANALYZE查询每个分片上运行的更详细的信息。

XML 地图 | Sitemap 地图