前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >mxgate是gpcopy同步速度的2倍

mxgate是gpcopy同步速度的2倍

原创
作者头像
小徐
修改于 2021-10-29 06:36:32
修改于 2021-10-29 06:36:32
84900
代码可运行
举报
文章被收录于专栏:GreenplumGreenplum
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1、构造测试的数据
2、查看数据的大小和行数
3、创建表语句
4、查看创建后的表
5、编写mxgate同步脚本
6、编写gpcopy同步脚本
7、查看硬件资源
     71 CPU和内存信息
     72 网络信息 
8、常见问题总结
    81 slice bounds out of range
     82 "gpcopy_temp_3" does not exist
83 Control connection pair should call `InitConnections` first
84 解决方式

集群的架构

序列

数据库

服务器

segment

master

访问端口

1

Greenplum6.0.0

sdw2

16 primary + 16 mirror

sdw3

5432

2

sdw3

3

sdw4

4

matrixdb4.2

sdw5

16 primary + 16 mirror

sdw7

5432

1、构造测试的数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 造10列100w设备的数据
time ./tsbs_generate_data --format="matrixdb" --use-case="massiveiot" --scale="1000000" --log-interval=60s --column-data-type=simple --point-type=int --columns-per-row=10 --timestamp-start="2016-01-01T00:00:00Z" --timestamp-end="2016-01-01T02:00:00Z" > /data/c1/cpu_10_100w.csv
 
# 造50列100w设备的数据
time ./tsbs_generate_data --format="matrixdb" --use-case="massiveiot" --scale="1000000" --log-interval=60s --column-data-type=simple --point-type=int --columns-per-row=50 --timestamp-start="2016-01-01T00:00:00Z" --timestamp-end="2016-01-01T02:00:00Z" > /data/c1/cpu_50_100w.csv
 
# 造100列100w设备的数据
time ./tsbs_generate_data --format="matrixdb" --use-case="massiveiot" --scale="1000000" --log-interval=60s --column-data-type=simple --point-type=int --columns-per-row=100 --timestamp-start="2016-01-01T00:00:00Z" --timestamp-end="2016-01-01T02:00:00Z" > /data/c1/cpu_100_100w.csv

2、查看数据的大小和行数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ du -sh cpu_10_100w.csv
15G     cpu_10_100w.csv
 
$ du -sh cpu_50_100w.csv
63G     cpu_50_100w.csv
 
$ du -sh cpu_100_100w.csv
122G    cpu_100_100w.csv
 
 
$ wc -l cpu_10_100w.csv
120000000 cpu_10_100w.csv
 
$ wc -l cpu_50_100w.csv
120000000 cpu_50_100w.csv
 
$ wc -l cpu_100_100w.csv
120000000 cpu_100_100w.csv

3、创建表语句

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 创建创建表的function
create or replace function f(name, int, text) returns void as $$   
declare   
  res text := 'ts varchar(50),tag_id integer,';   
begin   
  for i in 1..$2 loop 
  res := res||'c'||i||' integer,';   
  end loop;   
  res := rtrim(res, ',');   
  if $3 = 'ao_col' then   
    res := 'create table '||$1||'('||res||') with(appendonly=true, compresstype=zstd, orientation=column) DISTRIBUTED BY (tag_id)';   
  elsif $3 = 'ao_row' then   
    res := 'create table '||$1||'('||res||') with(appendonly=true, blocksize=262144, orientation=row) DISTRIBUTED BY (tag_id)';   
  elsif $3 = 'heap_row' then   
    res := 'create table '||$1||'('||res||') with(appendonly=false) DISTRIBUTED BY (tag_id)';   
  else   
    raise notice 'use ao_col, ao_row, heap_row as $3';   
    return;   
  end if;   
  execute res;   
end;   
$$ language plpgsql;
 
 
# 创建表语句和加载语句
 
$ cat matrixdball--ao.sh
#bin/bash
 
col_arr=( 10 )
device_arr=( 100 )
 
for col in "${col_arr[@]}"
do
   for device in "${device_arr[@]}"
   do
      echo "${col},${device} heap"
          file_name="cpu_${col}_${device}w"
          table_name="cpu_${col}_${device}w_ao"
 
          echo "${col},${device} heap_index"
          psql -d gpdb -c  "drop table if exists ${table_name}"
          psql -d gpdb -c  "select f('${table_name}','${col}','ao_row');"
          psql -d gpdb -c  "create index on ${table_name} (tag_id, ts);create index on ${table_name} (ts);"
          time psql -d gpdb -c  "COPY cpu_10_100w_ao FROM '/home/gpadmin/1c/cpu_10_100w.csv' WITH csv DELIMITER '|' NULL as 'null string'"
   done
done
 
 
col_arr=( 50 )
device_arr=( 100 )
 
for col in "${col_arr[@]}"
do
   for device in "${device_arr[@]}"
   do
      echo "${col},${device} heap"
          file_name="cpu_${col}_${device}w"
          table_name="cpu_${col}_${device}w_ao"
 
          echo "${col},${device} heap_index"
          psql -d gpdb -c  "drop table if exists ${table_name}"
          psql -d gpdb -c  "select f('${table_name}','${col}','ao_row');"
          psql -d gpdb -c  "create index on ${table_name} (tag_id, ts);create index on ${table_name} (ts);"
          time psql -d gpdb -c  "COPY cpu_50_100w_ao FROM '/home/gpadmin/1c/cpu_50_100w.csv' WITH csv DELIMITER '|' NULL as 'null string'"
   done
done
 
 
col_arr=( 100 )
device_arr=( 100 )
 
for col in "${col_arr[@]}"
do
   for device in "${device_arr[@]}"
   do
      echo "${col},${device} heap"
          file_name="cpu_${col}_${device}w"
          table_name="cpu_${col}_${device}w_ao"
 
          echo "${col},${device} heap_index"
          psql -d gpdb -c  "drop table if exists ${table_name}"
          psql -d gpdb -c  "select f('${table_name}','${col}','ao_row');"
          psql -d gpdb -c  "create index on ${table_name} (tag_id, ts);create index on ${table_name} (ts);"
          time psql -d gpdb -c  "COPY cpu_100_100w_ao FROM '/home/gpadmin/1c/cpu_100_100w.csv' WITH csv DELIMITER '|' NULL as 'null string'"
   done
done
 
 
 
$ cat matrixdball--aoco.sh
#bin/bash
 
col_arr=( 10 )
device_arr=( 100 )
 
for col in "${col_arr[@]}"
do
   for device in "${device_arr[@]}"
   do
      echo "${col},${device} heap"
          file_name="cpu_${col}_${device}w"
          table_name="cpu_${col}_${device}w_aoco"
 
          echo "${col},${device} heap_index"
          psql -d gpdb -c  "drop table if exists ${table_name}"
          psql -d gpdb -c  "select f('${table_name}','${col}','ao_col');"
          psql -d gpdb -c  "create index on ${table_name} (tag_id, ts);create index on ${table_name} (ts);"
          time psql -d gpdb -c  "COPY cpu_10_100w_aoco FROM '/home/gpadmin/1c/cpu_10_100w.csv' WITH csv DELIMITER '|' NULL as 'null string'"
   done
done
 
 
col_arr=( 50 )
device_arr=( 100 )
 
for col in "${col_arr[@]}"
do
   for device in "${device_arr[@]}"
   do
      echo "${col},${device} heap"
          file_name="cpu_${col}_${device}w"
          table_name="cpu_${col}_${device}w_aoco"
 
          echo "${col},${device} heap_index"
          psql -d gpdb -c  "drop table if exists ${table_name}"
          psql -d gpdb -c  "select f('${table_name}','${col}','ao_col');"
          psql -d gpdb -c  "create index on ${table_name} (tag_id, ts);create index on ${table_name} (ts);"
          time psql -d gpdb -c  "COPY cpu_50_100w_aoco FROM '/home/gpadmin/1c/cpu_50_100w.csv' WITH csv DELIMITER '|' NULL as 'null string'"
   done
done
 
 
col_arr=( 100 )
device_arr=( 100 )
 
for col in "${col_arr[@]}"
do
   for device in "${device_arr[@]}"
   do
      echo "${col},${device} heap"
          file_name="cpu_${col}_${device}w"
          table_name="cpu_${col}_${device}w_aoco"
 
          echo "${col},${device} heap_index"
          psql -d gpdb -c  "drop table if exists ${table_name}"
          psql -d gpdb -c  "select f('${table_name}','${col}','ao_col');"
          psql -d gpdb -c  "create index on ${table_name} (tag_id, ts);create index on ${table_name} (ts);"
          time psql -d gpdb -c  "COPY cpu_100_100w_aoco FROM '/home/gpadmin/1c/cpu_100_100w.csv' WITH csv DELIMITER '|' NULL as 'null string'"
   done
done
 
 
 
$ cat matrixdball--heap.sh
#bin/bash
 
col_arr=( 10 )
device_arr=( 100 )
 
for col in "${col_arr[@]}"
do
   for device in "${device_arr[@]}"
   do
      echo "${col},${device} heap"
          file_name="cpu_${col}_${device}w"
          table_name="cpu_${col}_${device}w_heap"
 
          echo "${col},${device} heap_index"
          psql -d gpdb -c  "drop table if exists ${table_name}"
          psql -d gpdb -c  "select f('${table_name}','${col}','heap_row');"
          psql -d gpdb -c  "create index on ${table_name} (tag_id, ts);create index on ${table_name} (ts);"
          time psql -d gpdb -c  "COPY cpu_10_100w_heap FROM '/home/gpadmin/1c/cpu_10_100w.csv' WITH csv DELIMITER '|' NULL as 'null string'"
   done
done
 
 
col_arr=( 50 )
device_arr=( 100 )
 
for col in "${col_arr[@]}"
do
   for device in "${device_arr[@]}"
   do
      echo "${col},${device} heap"
          file_name="cpu_${col}_${device}w"
          table_name="cpu_${col}_${device}w_heap"
 
          echo "${col},${device} heap_index"
          psql -d gpdb -c  "drop table if exists ${table_name}"
          psql -d gpdb -c  "select f('${table_name}','${col}','heap_row');"
          psql -d gpdb -c  "create index on ${table_name} (tag_id, ts);create index on ${table_name} (ts);"
          time psql -d gpdb -c  "COPY cpu_50_100w_heap FROM '/home/gpadmin/1c/cpu_50_100w.csv' WITH csv DELIMITER '|' NULL as 'null string'"
   done
done
 
 
col_arr=( 100 )
device_arr=( 100 )
 
for col in "${col_arr[@]}"
do
   for device in "${device_arr[@]}"
   do
      echo "${col},${device} heap"
          file_name="cpu_${col}_${device}w"
          table_name="cpu_${col}_${device}w_heap"
 
          echo "${col},${device} heap_index"
          psql -d gpdb -c  "drop table if exists ${table_name}"
          psql -d gpdb -c  "select f('${table_name}','${col}','heap_row');"
          psql -d gpdb -c  "create index on ${table_name} (tag_id, ts);create index on ${table_name} (ts);"
          time psql -d gpdb -c  "COPY cpu_100_100w_heap FROM '/home/gpadmin/1c/cpu_100_100w.csv' WITH csv DELIMITER '|' NULL as 'null string'"
   done
done

4、查看创建后的表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# \dt*
                          List of relations
 Schema |       Name        | Type  |  Owner  |       Storage
--------+-------------------+-------+---------+----------------------
 public | cpu_100_100w_ao   | table | mxadmin | append only
 public | cpu_100_100w_aoco | table | mxadmin | append only columnar
 public | cpu_100_100w_heap | table | mxadmin | heap
 public | cpu_10_100w_ao    | table | mxadmin | append only
 public | cpu_10_100w_aoco  | table | mxadmin | append only columnar
 public | cpu_10_100w_heap  | table | mxadmin | heap
 public | cpu_50_100w_ao    | table | mxadmin | append only
 public | cpu_50_100w_aoco  | table | mxadmin | append only columnar
 public | cpu_50_100w_heap  | table | mxadmin | heap

5、编写mxgate同步脚本

以下脚本可以同步不同的表类型,heap、ao、aoco、分区表等

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$  vim sync_mxgate.sh
 
#!bin/bash
 
mxgate --source transfer \
       --src-host 192.168.***.** \
       --src-port 5432 \
       --src-db postgres \
       --src-user gpadmin \
       --src-password  gpadmin \
       --src-schema public \
       --src-table cpu_100_100w_heap \
       --compress "lz4" \
       --local-ip 192.168.***.*** \
       --db-database postgres \
       --db-master-port 5432 \
       --db-user mxadmin \
       --db-password mxadmin \
       --target public.cpu_100_100w_heap \
       --format csv \
       --parallel 300 \
       --interval 100  \
       --stream-prepared 6 \
       --time-format raw

6、编写gpcopy同步脚本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
gpcopy --source-host 192.168.***.*** \
        --source-port 5432 \
        --source-user gpadmin \
        --include-table postgres.public.cpu_100_100w_heap \
        --dest-host 192.168.***.*** \
        --dest-port 5432 \
        --dest-user mxadmin \
        --drop --exclude-table postgres.public.cpu_100_100w_heap \
        --jobs 200 /
        --on-segment-threshold 90000

7、查看硬件资源

7、1 CPU和内存信息

7、2 网络信息

8、常见问题总结

 8、1 slice bounds out of range

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
20211021:10:42:20 gpcopy:mxadmin:sdw7:026691-[INFO]:-Copy Timestamp = 20211021104220
20211021:10:42:20 gpcopy:mxadmin:sdw7:026691-[INFO]:-pg_dump (PostgreSQL) 12
20211021:10:42:20 gpcopy:mxadmin:sdw7:026691-[INFO]:-pg_dumpall (PostgreSQL) 12
20211021:10:42:21 gpcopy:mxadmin:sdw7:026691-[WARNING]:-pg_dump version is higher than source cluster, which might have compatibility issues
20211021:10:42:21 gpcopy:mxadmin:sdw7:026691-[ERROR]:-Caught an error: or: slice bounds out of range
20211021:10:42:21 gpcopy:mxadmin:sdw7:026691-[INFO]:-------------------------------------------------
20211021:10:42:21 gpcopy:mxadmin:sdw7:026691-[INFO]:-Total elapsed time: 953.799132ms
20211021:10:42:21 gpcopy:mxadmin:sdw7:026691-[INFO]:-Copied 0 databases

8、2 "gpcopy_temp_3" does not exist

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

failed to stop daemon on segments. pq: relation "gpcopy_temp_6" does not exist
Error: pq: relation "gpcopy_temp_3" does not exist

8、3 Control connection pair should call `InitConnections` first

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
20211025:13:32:01 gpcopy:mxadmin:sdw7:162638-[ERROR]:-Caught an error: or: slice bounds out of range [62:40]
20211025:13:32:01 gpcopy:mxadmin:sdw7:162638-[INFO]:-------------------------------------------------
20211025:13:32:01 gpcopy:mxadmin:sdw7:162638-[INFO]:-Total elapsed time: 74.028874ms
20211025:13:32:01 gpcopy:mxadmin:sdw7:162638-[INFO]:-Total transferred data 0B, transfer rate 0B/h
20211025:13:32:01 gpcopy:mxadmin:sdw7:162638-[INFO]:-Copied 0 databases
20211025:13:32:01 gpcopy:mxadmin:sdw7:162638-[WARNING]:-Encountered an error during cleanup: Control connection pair should call `InitConnections` first.

8、4 解决方式

1、检查greenplum和matrix的版本信息时候一致,因为gpcopy会校验版本

2、修改version信息需要在postgresql数据库下进行

3、替换一下红色的部门即可

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE OR REPLACE FUNCTION pg_catalog.version() RETURNS TEXT
AS $$
SELECT 'PostgreSQL 9.4.20 (Greenplum Database 6.0.0-beta.1 build commit:067fb8e43115bb087c872ee3d2269d869430263d) on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 6.4.0, 64-bit compiled on Mar 19 2019 01:25:00';
$$ LANGUAGE SQL;

参考资料

https://ymatrix.cn/blog/load-test-steps

https://www.ymatrix.cn/blog/20210524-MatrixDB-insertperformance

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
从 12s 到 200ms,MySQL 两千万订单数据 6 种深度分页优化全解析
那晚,大约晚上 11 点,我与 Chaya 在丽江的洱海酒店享受两人世界的快乐,电商平台的运维大群突然炸开了锅。
码哥字节
2025/02/25
3530
从 12s 到 200ms,MySQL 两千万订单数据 6 种深度分页优化全解析
交付工程师准备工作
交付工程师(Delivery Engineer)是在软件开发项目中,负责将软件产品交付给客户并确保其顺利运行的工程师。他们的工作主要涵盖以下几个方面:
GeekLiHua
2025/01/21
1000
交付工程师准备工作
mysql┃explain 都不会用?怎么优化?
现在的java开发人员越来越多,竞争也越来越激烈,moon在某钩招聘网站上发布了一个岗位需求,不到短短1天就收到20多份简历,大部分都是应届一年两年的,新鲜血液越来越多,我们也要不断的提升自己才能够不被挤下去,大家可以看下各大网站的java岗位3年以上的招聘需求:
moon聊技术
2021/07/28
6600
mysql┃explain 都不会用?怎么优化?
MySQL怎样优化千万级数据
这里讨论的情况是在MySQL一张表的数据达到千万级别。表设计很烂,业务统计规则又不允许把sql拆成多个子查询。
闻说社
2024/05/21
1740
MySQL怎样优化千万级数据
10道常考SQL笔试题
题目:在 Employees 表中,获取每个部门(department)薪资最高的员工的姓名、部门和工资。表结构如下:
SQL数据库开发
2024/09/24
1780
10道常考SQL笔试题
【收藏】MySQL 超全优化清单(可执行系列)
先从一般的语句优化开始,其实对于很多规范大家并不陌生,可就是在用的时候,无法遵从,希望今天大家再过一遍,可以养成一种良好的数据库编码习惯。
lyb-geek
2024/07/17
2490
【收藏】MySQL 超全优化清单(可执行系列)
MySQL Hints:控制查询优化器的选择
MySQL Hints是一组特殊的注释或指令,可以直接嵌入到SQL查询中,以改变MySQL优化器的默认行为。这些Hints通常被用于解决性能问题,或者当开发者比优化器更了解数据分布和查询特性时,来指导优化器选择更好的查询计划。
公众号:码到三十五
2024/06/05
5960
MySQL Hints:控制查询优化器的选择
MySQL中的SQL优化建议那么多,该如何有的放矢
今天早上看到同事的一个优化需求,优化的时间其实不多,但是对于这条SQL的优化思考了很多,希望有一些参考。
jeanron100
2019/11/15
6940
最强总结!十大数据库索引类型详解!!
数据库索引是数据库性能优化的重要基础。选择正确的索引类型对提升查询性能至关重要。本文将通过理论讲解+案例分析的方式,帮您深入理解各类索引的原理和应用!
SQL数据库开发
2024/12/24
7150
最强总结!十大数据库索引类型详解!!
数据库优化 – SQL优化[通俗易懂]
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。
全栈程序员站长
2022/10/04
3.6K0
数据库优化 – SQL优化[通俗易懂]
工作中数据库优化技巧
内容整理于网络 一、EXPLAIN 做MySQL优化,我们要善用 EXPLAIN 查看SQL执行计划。 EXPLAIN 输出格式 EXPLAIN 命令的输出内容大致如下: mysql root@localhost:youdi_auth> explain select * from auth_user\G; ***************************[ 1. row ]*************************** id | 1 select_type |
若与
2018/04/25
7820
工作中数据库优化技巧
MySQL上亿数据查询优化:实践与技巧
随着大数据时代的到来,数据库管理系统需要处理越来越多的数据。MySQL作为一种流行的关系型数据库管理系统,被广泛应用于各类业务场景。然而,当数据量达到上亿级别时,查询性能可能会显著下降,严重影响应用的响应速度和用户体验。本文将详细介绍MySQL在处理上亿数据时的查询优化技巧,并通过实践案例展示如何有效提升查询性能。
洛秋_
2024/07/13
7060
MySQL的索引是什么?怎么优化?
索引类似大学图书馆建书目索引,可以提高数据检索的效率,降低数据库的IO成本。MySQL在300万条记录左右性能开始逐渐下降,虽然官方文档说500~800w记录,所以大数据量建立索引是非常有必要的。MySQL提供了Explain,用于显示SQL执行的详细信息,可以进行索引的优化。
吴生
2018/04/03
1.5K0
MySQL的索引是什么?怎么优化?
MySQL实战面试题(附案例答案+建表语句+模拟数据+案例深度解析),练完直接碾压面试官
使用YEAR()和MONTH()函数从signup_date字段中提取年份和月份,并匹配给定的条件。
小白的大数据之旅
2024/11/20
1610
8 种常见SQL错误用法,你千万别犯!
分页查询是最常用的场景之一,但也通常也是最容易出问题的地方。比如对于下面简单的语句,一般 DBA 想到的办法是在 type, name, create_time 字段上加组合索引。这样条件排序都能有效的利用到索引,性能迅速提升。
好好学java
2020/03/02
1K0
MySQL通过索引优化-这里可能有你不知道的索引优化细节(二)
用执行计划分别测试一下union all、in和or,发现union all分两步执行,而in和or只用了一步,效率高一点。
行百里er
2020/12/02
8960
MySQL通过索引优化-这里可能有你不知道的索引优化细节(二)
【随笔】MySQL 索引测试和性能优化指南
在数据库查询优化的过程中,索引扮演着至关重要的角色。合理使用索引不仅能大幅提升查询效率,还能降低数据库的负载。然而,不同类型的索引在不同场景下的表现可能存在较大差异,因此深入理解各类索引的特性以及 EXPLAIN 关键字的查询分析能力尤为重要。
框架师
2025/02/21
1680
【随笔】MySQL 索引测试和性能优化指南
MySQL 覆盖索引与延迟关联
本期来谈谈覆盖索引与延迟关联。在此之前,我们先简单建立一个订单表 Orders 用于举例说明。表中共包含 3 个字段:
江不知
2020/09/08
1.7K0
MySQL 覆盖索引与延迟关联
最强总结!数据库优化完全指南!!
数据库优化是提升应用性能的关键环节。本文将从多个维度系统地介绍数据库优化的方法和实践经验。
SQL数据库开发
2024/11/21
2290
最强总结!数据库优化完全指南!!
MySQL数据库基础与实战应用
MySQL是一种开源的关系型数据库管理系统,广泛应用于各种规模的应用程序和网站中。它以其稳定性、高性能和可扩展性而闻名,成为许多开发者和企业首选的数据库解决方案。本文将介绍MySQL数据库的基础知识,并探讨其在实际应用中的应用场景。
海拥
2023/09/01
2540
推荐阅读
相关推荐
从 12s 到 200ms,MySQL 两千万订单数据 6 种深度分页优化全解析
更多 >
LV.3
yu1inengineer
目录
  • 集群的架构
  • 1、构造测试的数据
  • 2、查看数据的大小和行数
  • 3、创建表语句
  • 4、查看创建后的表
  • 5、编写mxgate同步脚本
  • 6、编写gpcopy同步脚本
  • 7、查看硬件资源
    • 7、1 CPU和内存信息
    • 7、2 网络信息
  • 8、常见问题总结
    •  8、1 slice bounds out of range
    • 8、2 "gpcopy_temp_3" does not exist
    • 8、3 Control connection pair should call `InitConnections` first
    • 8、4 解决方式
  • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档