phoenix.query.timeoutMs: 在客户机上查询超时间的毫秒数。默认为10分钟 600000
phoenix.query.keepAliveMs:当线程的数量大于客户端线程池可执行的数量时,超时时间的毫秒数,默认为60秒 60000
phoenix.query.threadPoolSize:线程池中的线程数,随着集群中的机器/CPU数量的增长,这个值应该增加 128
phoenix.query.queueSize:限制队列最大数,线程不够往队列里面装,队列装满了就拒绝请求,默认大小是5000,如果是0就同步
phoenix.query.spoolThresholdBytes:任务并行执行完毕后返回值写到磁盘的阀值,单位为字节,默认值是20 mb 20971520
phoenix.query.maxSpoolToDiskBytes:任务执行失败写入磁盘的阀值,默认是1G 1024000000
phoenix.query.maxGlobalMemorySize:Phoenix查询内存的最大值,默认不设置
phoenix.query.maxGlobalMemoryWaitMs:无剩余内存时,等待剩余内存使用的时间,超时就抛出,默认是10秒
phoenix.mutate.maxSize:当客户端提交请求后每次处理数据的最大值,默认为50W
phoenix.query.useIndexes:检查索引是否用优化器来查询,默认为true
phoenix.groupby.maxCacheSize:Group by查询的数据缓存大小,默认为100MB
phoenix.groupby.spillFiles:使用group by查询的时候,当数据超出100MB的时候写入本地磁盘文件的个数 2
phoenix.coprocessor.maxNetaDataCacheSize:元数据最大的缓存值,默认是20MB
在创建表的时候进行预分区
在建phoenix表时,可以精确的指定要根据什么值来做预分区,这样能极大的提高phoenix批量加载数据的速度
实例:
CREATE TABLE TEST(
HOST VARCHAR NOT NULL PRIMARY KEY,
DESCRIPTION VARCHAR
)SPLIT ON('CS','EU','NA')
创建表使用多个列族
每个列族存储在单独的文件中,里面包含相关数据。如果查询使用选定的列值存在与一个列族中,将极大的提高读取数据性能。
实例(创建A、B俩个列族):
CREATE TABLE TEST(
MYKEY VARCHAR NOT NULL PRIMARY KEY,
A.COL1 VARCHAR,
A.COL12 VARCHAR,
B.COL3 VARCHAR
)
创建表使用压缩,
当数据量大的时候使用压缩,比如GZip、Snappy、LZO等等能极大的提高数据的读写效率
实例:
CREATE TABLE TEST(
HOST VARCHAR NOT NULL PRIMARY KEY,
DESCRIPTION VARCHAR
)COMPRESSION='GZ'
二级索引
1. 创建表的全局索引
create table test(
mykey varchar primary key,
col1 varchar,
col2 varchar
)
2. 为col2创建索引: create index idx on test(col2)
3.为col1、col2创建索引:
create index idx on test(col1) include(col2)
4. 可以通过explain select。。。来看phoniex在执行sql时是否用上了二级索引