Phoenix性能优化
目录:
1、建表优化
2、二级索引
3、并行处理
1.建表优化
- Salting 翻译成中文是加盐的意思,本质是在hbase的rowkey的byte数组的第一个字节位置设定一个系统生成的byte值, 这个byte值是由主键生成rowkey的byte数组做一个哈希算法,计算得来的。Salting之后可以把数据分布到不同的region上,这样有利于phoenix并发的读写操作。 示例:CREATE TABLE TEST (HOST VARCHAR NOT NULL PRIMARY KEY, DESCRIPTION VARCHAR) SALT_BUCKETS=16
- Pre-split 这个就是HBase的预分区了,在建phoenix表时,可以精确的指定要根据什么值来做预分区 示例: CREATE TABLE TEST (HOST VARCHAR NOT NULL PRIMARY KEY, DESCRIPTION VARCHAR) SPLIT ON ('CS','EU','NA')
- 使用多个列族,在创建phoenix表是可以指定列所在的列族 示例: CREATE TABLE TEST (MYKEY VARCHAR NOT NULL PRIMARY KEY, A.COL1 VARCHAR, A.COL2 VARCHAR, B.COL3 VARCHAR)
- 在数据量大的表上使用压缩算法来提高性能 GZ,lzo等 示例: CREATE TABLE TEST (HOST VARCHAR NOT NULL PRIMARY KEY, DESCRIPTION VARCHAR) COMPRESSION='GZ'
2.二级索引
Phoenix的二级索引从2.1版本开始支持可变和不可变(数据插入之后不可更新)数据了,之前的版本只支持不可变的数据,我们现在使用的版本是2.2.2是支持二级索引的,我们可以做一些尝试。
可以通过explain select … 来看phoniex在执行sql时是否用上了二级索引。
3.并行
Phoenix会将一个聚合查询分成多个Scan,然后将这些Scan分配给phoenix自定义的hbase协处理器,这些协处理器可以在服务器端并行执行来提高查询性能。平衡的拆分表是Phoenix获得高效查询的最重要因素之一,这包括将相等大小的分区平均分配到不同的region server上。这个工具http://www.sentric.ch/blog/hbase-split-visualisation-introducing-hannibal 可以帮助我们监控hbase表分区的情况。表中的数据在各个region sever上均匀分布可以保证每一个phoenix线程处理的数据量相当,这样就可以减少查询的等待时间。
在客户端可以通过phoenix.query.targetConcurrency 和 phoenix.query.maxConcurrency 来控制查询如何来拆分扫描。并行查询最好可以将查询scan的切分和表数据的region切分对齐。如果扫描很不均匀,就需要用多个线程来处理数据量较大的分区扫描。
并行执行扫描时的切分点定义如下,我们假设:
t 是目标的并发数
m 是最大的并发数
r 是我们要扫描的分区数
if r >= t |
可以根据客户端机器的内核数和集群的大小,来调大phoenix.query.threadPoolSize, phoenix.query.queueSize, phoenix.query.maxConcurrency, 和 phoenix.query.targetConcurrency的值,允许更多的线程做并行的查询,来降低延迟。
但是这个方法也并非没有限制,最大的问题是phoenix没有足够的信息来拆分region。 如果查询结果跨越很多region,这没有问题,因为region中总会有一些大小相差不多的region,然而如果查询仅仅涉及到少数几个region,可能就会有问题
Phoenix性能优化的更多相关文章
- 01.SQLServer性能优化之----强大的文件组----分盘存储
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 文章内容皆自己的理解,如有不足之处欢迎指正~谢谢 前天有学弟问逆天:“逆天,有没有一种方 ...
- 03.SQLServer性能优化之---存储优化系列
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 概 述:http://www.cnblogs.com/dunitian/p/60413 ...
- Web性能优化:What? Why? How?
为什么要提升web性能? Web性能黄金准则:只有10%~20%的最终用户响应时间花在了下载html文档上,其余的80%~90%时间花在了下载页面组件上. web性能对于用户体验有及其重要的影响,根据 ...
- Web性能优化:图片优化
程序员都是懒孩子,想直接看自动优化的点:传送门 我自己的Blog:http://cabbit.me/web-image-optimization/ HTTP Archieve有个统计,图片内容已经占到 ...
- C#中那些[举手之劳]的性能优化
隔了很久没写东西了,主要是最近比较忙,更主要的是最近比较懒...... 其实这篇很早就想写了 工作和生活中经常可以看到一些程序猿,写代码的时候只关注代码的逻辑性,而不考虑运行效率 其实这对大多数程序猿 ...
- JavaScript性能优化
如今主流浏览器都在比拼JavaScript引擎的执行速度,但最终都会达到一个理论极限,即无限接近编译后程序执行速度. 这种情况下决定程序速度的另一个重要因素就是代码本身. 在这里我们会分门别类的介绍J ...
- 02.SQLServer性能优化之---牛逼的OSQL----大数据导入
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 上一篇:01.SQLServer性能优化之----强大的文件组----分盘存储 http ...
- C++ 应用程序性能优化
C++ 应用程序性能优化 eryar@163.com 1. Introduction 对于几何造型内核OpenCASCADE,由于会涉及到大量的数值算法,如矩阵相关计算,微积分,Newton迭代法解方 ...
- Android性能优化之利用LeakCanary检测内存泄漏及解决办法
前言: 最近公司C轮融资成功了,移动团队准备扩大一下,需要招聘Android开发工程师,陆陆续续面试了几位Android应聘者,面试过程中聊到性能优化中如何避免内存泄漏问题时,很少有人全面的回答上来. ...
随机推荐
- 关于浏览器内核与javascript引擎的一些小知识
浏览器是我们每天几乎都必须使用的软件产品,可是对于自己每天都接触的浏览器,很多同学其实对其一无所知.今天异次元就跟大家说说关于浏览器内核的一些事儿吧,好让你了解多一点稍微内在的东西. 在下面的文章中主 ...
- SSL证书的生成
openssl工具下载路径:链接:https://pan.baidu.com/s/1o0-s8OplHZt55Cio2HmjVA 密码:u759 1.使用openssl工具生成一个RSA秘钥 ...
- 【BZOJ4810】[Ynoi2017]由乃的玉米田 bitset+莫队
[BZOJ4810][Ynoi2017]由乃的玉米田 Description 由乃在自己的农田边散步,她突然发现田里的一排玉米非常的不美.这排玉米一共有N株,它们的高度参差不齐.由乃认为玉米田不美,所 ...
- SharePoint解决方案及开发系列(2)-ECM
很多次跟客户做咨询及沟通的时候,客户都问SharePoint能做什么?是不是就是做文档管理?为什么要花那么多的钱没SharePoint?高大上? 我上家公司面试的时候,我的那个BOSS面试官有一个问题 ...
- I - Doing Homework again(贪心)
I - Doing Homework again Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & ...
- VS2012如何显示行号
Tools-Options-Text Editor-All Languages –General – Display
- jQuery之map()和get() map().get().join意思
jQuery下有个概念叫“类数组”,比如$( " li " ),当取到一个集合的时候,会有数组的一些属性,但是instancseof Array仍然是false.但是var a=$ ...
- mustache模板技术(转)
项目首页:http://mustache.github.com/ 项目文档:http://mustache.github.com/mustache.5.html Demo: http://mus ...
- setlocale同mbstowcs函数的关系(VS2008下setlocale(LC_ALL, "chs")可以执行成功,BCB使用setlocale(LC_ALL, "Chinese (Simplified)_People's Republic of China"),linux上locale别名表大概在 /usr/lib/X11/locale/locale.alias)
序中,如果要将ASCII码字符串转换为宽字符(Unicode),可以利用标准C的mbstowcs函数. 微软在MSDN中有示例,如下: 然而,这段代码在处理含有汉字的字符串时就会出现问题.比如将: w ...
- element-UI ,Table组件实现拖拽效果
拖拽效果,先放效果图,步骤放在后面~~ 一.引入三方插件 1.引入sortable.js的包: npm install sortable.js --save 2.或者npm i -S vuedragg ...