逻辑复制parallel并发参数测试

逻辑复制parallel并发参数测试

一、测试结果、测试环境描述

1.1、测试结果

  • cpu表中有1000万条数据,大小为1652MB,当更新的数据量多于10万条的时候有明显变化,多余30万条的时候相差2倍。

  • 更新的数据量较多时,逻辑复制使用并发参数相比于使用默认参数性能更高。

  • 更新的数据量较少时,逻辑复制使用并发参数相比于使用默认参数性能相差不大。

更新记录条数 streaming 影响到订阅端耗时 执行SQL语句耗时
1000 parallel 71ms 12.077 ms
1000 - 45 ms 15.496 ms
50000 parallel 1199 ms 357.201 ms
50000 - 1396 ms 586.545 ms
100000 parallel 4637 ms 3227.055 ms
100000 - 6153 ms 4591.671 ms
300000 parallel 6815 ms 5567.591 ms
300000 - 11850 ms 6337.377 ms
1000000 parallel 24214 ms 12734.563 ms
1000000 - 46474 ms 15579.122 ms

表中streaming列说明

  • -- streaming列为 “-”
    SELECT substream FROM pg_subscription WHERE subname = 'sub_cpu';
     substream 
    -----------
     f
    (1 row)
    
  • -- streaming列为parallel
    SELECT substream FROM pg_subscription WHERE subname = 'sub_cpu';
     substream 
    -----------
     p
    (1 row)
    

1.2、测试环境

数据库版本 PostgreSQL-16.6
内核数 4 core (x86-64)
内存大小 4 GB
OS 系统版本 rhel7
架构 x86-64

二、逻辑复制环境搭建

2.1、发布端环境部署

-- 创建一个表
CREATE TABLE cpu (
    id SERIAL PRIMARY KEY,   
    time                   TIMESTAMPTZ NOT NULL,           -- 时间戳,带时区
    tags_id                INTEGER,                         -- 标签ID,整数类型
    hostname               TEXT,                            -- 主机名,文本类型
    usage_user             DOUBLE PRECISION,               -- 用户CPU使用率,双精度浮点数
    usage_system           DOUBLE PRECISION,               -- 系统CPU使用率,双精度浮点数
    usage_idle             DOUBLE PRECISION,               -- 空闲CPU使用率,双精度浮点数
    usage_nice             DOUBLE PRECISION,               -- Nice CPU使用率,双精度浮点数
    usage_iowait           DOUBLE PRECISION,               -- I/O等待CPU使用率,双精度浮点数
    usage_irq              DOUBLE PRECISION,               -- 硬中断CPU使用率,双精度浮点数
    usage_softirq          DOUBLE PRECISION,               -- 软件中断CPU使用率,双精度浮点数
    usage_steal            DOUBLE PRECISION,               -- 偷取CPU使用率,双精度浮点数
    usage_guest            DOUBLE PRECISION,               -- Guest CPU使用率,双精度浮点数
    usage_guest_nice       DOUBLE PRECISION              -- Guest Nice CPU使用率,双精度浮点数
);
-- 给表添加逻辑复制标识
ALTER TABLE cpu REPLICA IDENTITY DEFAULT;

-- 创建发布
CREATE PUBLICATION pub_cpu FOR TABLE cpu;

-- 创建逻辑复制槽
SELECT pg_create_logical_replication_slot('fd_logical', 'pgoutput');

-- 查看逻辑复制槽、发布
SELECT * FROM pg_publication WHERE pubname = 'pub_cpu';
SELECT * FROM pg_replication_slots WHERE slot_name = 'fd_logical';

2.2、订阅端环境部署

-- 订阅端创建表
CREATE TABLE cpu (
    id SERIAL PRIMARY KEY,   
    time                   TIMESTAMPTZ NOT NULL,           -- 时间戳,带时区
    tags_id                INTEGER,                         -- 标签ID,整数类型
    hostname               TEXT,                            -- 主机名,文本类型
    usage_user             DOUBLE PRECISION,               -- 用户CPU使用率,双精度浮点数
    usage_system           DOUBLE PRECISION,               -- 系统CPU使用率,双精度浮点数
    usage_idle             DOUBLE PRECISION,               -- 空闲CPU使用率,双精度浮点数
    usage_nice             DOUBLE PRECISION,               -- Nice CPU使用率,双精度浮点数
    usage_iowait           DOUBLE PRECISION,               -- I/O等待CPU使用率,双精度浮点数
    usage_irq              DOUBLE PRECISION,               -- 硬中断CPU使用率,双精度浮点数
    usage_softirq          DOUBLE PRECISION,               -- 软件中断CPU使用率,双精度浮点数
    usage_steal            DOUBLE PRECISION,               -- 偷取CPU使用率,双精度浮点数
    usage_guest            DOUBLE PRECISION,               -- Guest CPU使用率,双精度浮点数
    usage_guest_nice       DOUBLE PRECISION              -- Guest Nice CPU使用率,双精度浮点数
);

-- 创建订阅
CREATE SUBSCRIPTION sub_cpu
CONNECTION 'host=192.168.6.108 port=9432 dbname=test user=fbase password=fbase'
PUBLICATION pub_cpu
WITH (
    slot_name = 'fd_logical',
    create_slot = false,
    streaming = 'parallel'
);

-- 查看订阅端信息
SELECT * FROM pg_subscription WHERE subname = 'sub_cpu';
-- 查看订阅状态
SELECT * FROM pg_stat_subscription WHERE subid IN (SELECT oid FROM pg_subscription WHERE subname = 'sub_cpu');

给已有的发布端添加表

-- 查看复制状态、逻辑复制槽状态
select * from pg_replication_slots;
select * from pg_stat_replication;

-- 发布端、订阅端创建表
CREATE TABLE memory (
    id SERIAL PRIMARY KEY,   
    time TIMESTAMPTZ NOT NULL,
    tags_id INTEGER,
    hostname TEXT,
    total_memory BIGINT
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值