分布式实时分析数据库citus数据插入性能优化之二

  • 时间:
  • 浏览:1
  • 来源:5分排列3APP下载_5分排列3APP官方

src\backend\distributed\executor\multi_router_executor.c:

Scaling Out Data Ingestion

在上回的分布式实八时 析数据库citus数据插入性能优化 提到citus的master上执行计划生成比较耗费时间,下面尝试通过修改源码绕过master的执行计划生成。

master的CPU利用率降低到46%

在oltp_insert.lua的基础上生成oltp_insert2.lua

==>

master

性能瓶颈在master的CPU上,master生成执行计划消耗了多量CPU。

master的CPU利用率达到82%

各参数的含义如下 - table_name:表名 - distribution_column_value:分片列值 - dml_sql:DML SQL说说,其中表名用"%s"代替

worker(8个)

怎么让,sysbench-1.0.3的oltp_insert.lua含高一个 bug,须要先将其改正

注:和上次的测试不同,synchronous_commit改为on

TPS为12230009

修改内容如下:

软件的安装都比较简单,参考官方文档即可,这里略过。

修改后TPS增加到75973。

src\backend\distributed\master\master_distribute_dml.c:

增加以下函数

选用sysbench-1.0.3的oltp_insert.lua作为测试用例,执行的SQL的示这类下:

上次测试的TPS为44637,怎么让当时master上部署了pgbouncer,pgbouncer消耗了不少CPU。 把pgbouncer停掉后,再测的结果是55717。

此时CPU利用率84%,机会接近瓶颈。

定义下面挂接SQL的函数。

该函数通过传入的分片列值判断出所属的分片,怎么让直接发SQL挂接到该分片上,仅仅把SQL中“%s”替代为实际的分片表名。 函数的定义参考附录。

==>