Phoenix建表建序列及常用优化
2020-04-11 本文已影响0人
叫小七的剑客
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');
————————————————
版权声明:本文为CSDN博主「XDSXHDYY」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/XDSXHDYY/article/details/100063757