Phoenix建表建序列及常用优化

Phoenix建表及优化

CREATE TABLE IF NOT EXISTS table(
"id" bigint not null primary key,
info."name" varchar,
info."age" integer,
info."address" varchar,
info."phone" bigint,
info."birthday" bigint
) SALT_BUCKETS=3,immutable_rows=true,COMPRESSION='GZ';
  • id为主键对应HBASE的rowkey,

  • SALT_BUCKETS=3加盐对数据分片,表示数据会存在3个region中,

  • immutable_rows=true是创建不可变索引的,适用于表中的数据只写一次不会有更新操作即:write once read many times,如果你的表符合不可变表就可以加上这个设置,这样可以提高写入性能

  • COMPRESSION='GZ’数据使用GZ压缩,

建联合主键表

create table if not exists table(
 "id" bigint not null,
 "name" varchar not null,
 info."age" integer,
 info."address" varchar,
 info."phone" bigint,
 "birthday" bigint not null
 CONSTRAINT PK PRIMARY KEY ("id","name","birthday")
) SALT_BUCKETS=3,COMPRESSION='GZ';

CONSTRAINT PK PRIMARY KEY (“id”,“name”,“birthday”),使用"id",“name”,"birthday"建立联合主键,只有做主键的字段上可以加not null,普通字段不可以

建索引

CREATE INDEX my_index ON table("name");

给name字段建全局索引

CREATE INDEX my_index1 ON table("name") INCLUDE("address","phone");

给name字段建覆盖索引,覆盖字段是address和phone,就是说在索引表里面除了name索引字段和指向原纪录的指针外还包含了address和phone字段,当通过name查询时,这两个字段时可以直接从索引表中带出的,而不用再通过指针指向原表去查找了。这种覆盖索引对有关联关系的字段特别适用。

drop index my_index1 on table;  //删除索引

序列SEQUENCE

创建序列

CREATE SEQUENCE use_users_sequence CACHE 1000;

查询所有的序列

SELECT sequence_schema, sequence_name, start_with, increment_by, cache_size FROM SYSTEM."SEQUENCE";

查看下一个序列值

select next value for use_users_sequence;

查看当前序列值

select current value for use_users_sequence;

删除序列

DROP SEQUENCE use_users_sequence;

插入数据的时候用自增序列值做表的自增id

UPSERT VALUES INTO use_users(autoid, col1, col2)  VALUES( NEXT VALUE FOR use_users_sequence, '11', '22');
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值