Trafodion CQD-traf_col_length_is_char

我们已经知道Trafodion支持UTF8格式字符集,对于需要存中文的字符类型,我们通过varchar(n) character set utf8定义,举例如下

SQL>create table t(a varchar(10) character set utf8);

--- SQL operation complete.

SQL>showddl t;


CREATE TABLE TRAFODION.SEABASE.T
  (
    A                                VARCHAR(10 CHARS) CHARACTER SET UTF8
      COLLATE DEFAULT DEFAULT NULL NOT SERIALIZED
  )
 ATTRIBUTES ALIGNED FORMAT
;

--- SQL operation complete.

通过showddl可以看出,默认情况下varchar(n) character set utf8会定义成VARCHAR(10 CHARS) CHARACTER SET UTF8,实际上,这需要10*3的bytes存储,这是因为一个中文字符在Trafodion中需要占3个字节。

如果UTF8字段中并没有多少中文,这会形成一种巨大的性能的浪费,建议定义成VARCHAR(10 BYTES) CHARACTER SET UTF8,这可以通过表定义时显示定义为”varchar (n bytes) character set utf8”,也可以使用cqd实现,

1 session级别 —cqd TRAF_COL_LENGTH_IS_CHAR ‘OFF’;

SQL>cqd TRAF_COL_LENGTH_IS_CHAR 'OFF';

--- SQL operation complete.

SQL>create table t(a varchar(10) character set utf8);

--- SQL operation complete.

SQL>showddl t;


CREATE TABLE TRAFODION.SEABASE.T
  (
    A                                VARCHAR(10 BYTES) CHARACTER SET UTF8
      COLLATE DEFAULT DEFAULT NULL NOT SERIALIZED
  )
 ATTRIBUTES ALIGNED FORMAT
;

--- SQL operation complete.

2 数据库级别 —插入以上cqd到DEFAULTS表并重启DCS生效

insert into "_MD_".defaults values('TRAF_COL_LENGTH_IS_CHAR','OFF','set default utf8 to bytes',0);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据源的港湾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值