GBase南大通用 8a 执行 insert select 语句目标表中 varvhar 字段长度越长 执行越慢

GBase在处理不同长度的varchar字段时,执行insertselect语句的速度差异明显。增大_gbase_insert_malloc_size_limit参数可改善性能,尤其当字段定义较长时。性能提升受机器配置影响。
摘要由CSDN通过智能技术生成

GBase南大通用 8a 执行 insert select 语句目标表中 varvhar 字段长度越长 执行越慢

GBase南大通用 8a问题描述:
使用 ssbm.customer 测试,加载约 8000 万数据。
CREATE TABLE “customer” (

“c_custkey” bigint(20) DEFAULT NULL,
“c_name” varchar(25) DEFAULT NULL,
“c_address” varchar(25) DEFAULT NULL,
“c_city” varchar(10) DEFAULT NULL COMMENT ‘lookup’, “c_nation” varchar(15) DEFAULT NULL COMMENT ‘lookup’, “c_region” varchar(12) DEFAULT NULL COMMENT ‘lookup’, “c_phone” varchar(15) DEFAULT NULL,

“c_mktsegment” varchar(10) DEFAULT NULL COMMENT ‘lookup’
) ENGINE=EXPRESS DEFAULT CHARSET=utf8 TABLESPACE=‘sys_tablespace’

gbase> create table customer_name1(c_name varchar(25));

Query OK, 0 rows affected (Elapsed: 00:00:01.33)

gbase> create table customer_name2(c_name varchar(4000));

Query OK, 0 rows affected (Elapsed: 00:00:00.92)

GBase南大通用 8a执行insert select,速度相差明显。
gbase> insert into customer_name1 select c_name from customer; Query OK, 85200000 rows affected (Elapsed: 00:00:20.68)
Records: 85200000 Duplicates: 0 Warnings: 0

gbase> insert into customer_name2 select c_name from customer; Query OK, 85200000 rows affected (Elapsed: 00:01:39.69)
Records: 85200000 Duplicates: 0 Warnings: 0

GBase南大通用 8a问题解决:

GBase南大通用 8a修改_gbase_insert_malloc_size_limit 参数值=最大字符串列定义*3,默认值 1024。 修改_gbase_insert_malloc_size_limit 值为 12000,
gbase> show variables like ‘%gbase_insert_malloc_size_limit%’; ±--------------------------------±------+
| Variable_name | Value |
±--------------------------------±------+
| _gbase_insert_malloc_size_limit | 12000 |
±--------------------------------±------+
1 row in set (Elapsed: 00:00:00.00)

gbase> insert into customer_name1 select c_name from customer;

Query OK, 85200000 rows affected (Elapsed: 00:00:20.91)
Records: 85200000 Duplicates: 0 Warnings: 0

gbase>
gbase>
gbase> insert into customer_name2 select c_name from customer;
Query OK, 85200000 rows affected (Elapsed: 00:00:21.47)
Records: 85200000 Duplicates: 0 Warnings: 0
varchar25 和 varchar4000 速度相当。 修改参数后性能有可能提升不明显,与机器配置有关。 此问题跟字符串列内存申请的管理有关。 如果字符串列定义比较长的话,会每行申请一次内存。 调大参数值可以批量多行申请,缩短了执行时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值