phoenix的元数据一般存在哪里_Phoenix的一些问题

date: 2020-09-10 13:50:00

updated: 2020-09-14 16:30:00

1. Phoenix索引

全局索引:适合读多写少的场景。写数据时因为索引表分布在不同数据节点,跨节点数据传输带来巨大的性能消耗。

全局索引必须是查询语句中所有列都包含在全局索引中,它才会生效。

create index my_index on my_table (v3);

select v1 from my_table where v3 = '13406157616';

此时不会走索引,因为检索列不在全局索引中,有以下三种方法使它使用索引:

1. 使用覆盖索引

CREATE INDEX cover_index ON my_table(v3) INCLUDE (v1);

2. 使用 Hint 强制索引

SELECT /*+ INDEX(my_table my_index) */ v1 FROM my_table WHERE v3 = '13406157616';

3. 使用本地索引

CREATE LOCAL INDEX local_index on my_table (v3);

本地索引:适合读少写多的场景。在本地生成一个索引表。

覆盖索引:配合全局索引使用,避免回表查询。

函数索引:适合拼接式字符串查询?。

创建索引的时候有可能因为表的数据量过大,导致索引表的数据量过大,导致发生超时异常,创建出来的索引表不完整,此时可以通过异步索引创建来解决 -- 在创建索引的语句最后添加一个 async,执行语句会直接返回结果,但是索引表状态是处于building。

每一个put/delete操作执行前,会先写入到主表的 Write Ahead Log (WAL) 中,如果出现HBase服务器宕机,则可以从WAL中回放执行之前没有完成的操作,用来保证高并发、持久化的日志保存与回放机制。因为索引表的更新可能会落后于主表一小部分。

WAL日志文件使用的是Hadoop Sequence文件格式,其主要特点:

二进制格式。row key, family, qualifier, timestamp, value等HBase byte[]数据,都原封不动地顺序写入文件。

Sequence文件中,每隔若干行,会插入一个16字节的魔数作为分隔符。这样如果文件损坏,导致某一行残缺不全,可以通过这个魔数分隔符跳过这一行,继续读取下一个完整的行。

支持压缩。可以按行压缩。也可以按块压缩(将多行打成一个块)

2. Phoenix加盐

加盐的目的是为了让数据分散到不同机器,缓解查询压力

如果行键即数据,单调增加,那么数据会分布在一个region里,可能会造成热点问题 => 通过添加 SALT_BUCKETS = Num(0 -- 256) 来对行键添加一个字节,使得数据能更均匀分布到各个region中。

其中0是关闭对数据表添加了盐分的索引的盐析的一种特殊方式(因为默认情况下,索引与其数据表具有相同数量的盐桶)

由于加盐表不会顺序存储数据,因此严格的顺序扫描不会以自然排序的方式返回所有数据。强制进行顺序扫描的子句(例如带有LIMIT的子句)可能会返回与普通表不同的数据顺序。

new_row_key = (++index % BUCKETS_NUMBER) + original_key

3. 主键查询

通过关键字 !primarykeys table 或者下面这段查询

select

TENANT_ID TABLE_CAT,TABLE_SCHEM,TABLE_NAME ,COLUMN_NAME,KEY_SEQ,PK_NAME,CASE WHEN SORT_ORDER = 1 THEN 'D' ELSE 'A' END ASC_OR_DESC,ExternalSqlTypeId(DATA_TYPE) AS DATA_TYPE,SqlTypeName(DATA_TYPE) AS TYPE_NAME,COLUMN_SIZE,DATA_TYPE TYPE_ID,VIEW_CONSTANT from SYSTEM."CATALOG" "SYSTEM.TABLE" where

TABLE_SCHEM = 'MODEL_GROUP_RULE_ACCOUNT_TEST'

and TABLE_NAME = 'ECEJ_CALLING_CENTER_H'

and COLUMN_NAME is not null

and COLUMN_FAMILY is null

order by TENANT_ID,TABLE_SCHEM,TABLE_NAME ,COLUMN_NAME

4. 修改字段长度

当创建好phoenix的表后, 默认情况下phoenix不允许修改字段类型和长度。但是可以通过直接修改 SYSTEM.CATALOG 里的数据达到目的

upsert into SYSTEM.CATALOG (TENANT_ID,TABLE_SCHEM,TABLE_NAME,COLUMN_NAME,COLUMN_FAMILY,DATA_TYPE,COLUMN_SIZE) values('','库','表','字段','0',12,50);

测试发现,即使上面的上SQL执行成功,重新执行 upsert 往表里插入数据,DEBIT_AMOUNT(初始长度6)超过初始长度的还是不能成功

经过查看源码发现,在 SYSTEM.CATALOG 上有协处理器, 这个里面有表元数据缓存,默认要三个小时过期

org.apache.phoenix.cache.GlobalCache

long maxTTL = this.config.getLong("phoenix.coprocessor.maxMetaDataCacheTimeToLiveMs", 1800000L);

long maxSize = this.config.getLong("phoenix.coprocessor.maxMetaDataCacheSize", 20971520L);

猜想修改长度后三小时能生效

或者在hbase shell 中 先 disable SYSTEM.CATALOG, 然后在 enable SYSTEM.CATALOG

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/397832.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙os全面升级,华为突然宣布,鸿蒙OS正式版6月底全面升级,幸福来得太突然...

原标题:华为突然宣布,鸿蒙OS正式版6月底全面升级,幸福来得太突然摘要:早在今年2月华为Mate X2折叠屏新品发布会上,余承东曾表示,鸿蒙OS正式版将于今年4月份全面上线。或许是因为华为宣布卖车分散了很多的精…

5-python学习——条件语句

5-python学习——条件语句 5-python学习——条件语句 条件语句if else形式if else条件语句说明 测试一下编程语言一般都由这么几个部分组成 变量条件分支语句循环语句函数这里要说的就是条件分支语句。 python的条件语句和shell脚本的非常像,也就是if else if else这…

eclipse启动失败:An internal error occurred during: reload maven project

2019独角兽企业重金招聘Python工程师标准>>> 1.找到workspace文件夹下的/.metadata文件夹,将其删除掉,然后在讲项目重新导入进去eclipse中。但是这个有一点不好的地方,之前对eclipse所做的配置也会恢复为默认配置 2.在.metadata下…

Quartz2D知识点聚合案例

Quartz2D知识点聚合 基本 //画图片UIImage *image [UIImage imageNamed:"阿狸头像"];[image drawInRect:rect];//字体NSString *title "标题";NSMutableDictionary *atr [NSMutableDictionary dictionary];atr[NSFontAttributeName] [UIFont systemFon…

skt7850鸿蒙策略,lol 英雄联盟 SKT状态回暖轻取外卡,SUP难挡Faker

MSI 第四日 SUP vs SKT双方bpBAN LISTBAN:SUP:流浪 牛头 豹女SKT:巴德 妖姬 鱼人PICKSUP:大树 男枪 冰女 卢锡安 锤石SKT:艾克 千珏 沙皇 EZ 布隆比赛开始,双方正常对线开局。前期下路锤石多次勾中ez,男枪也来逼出EZ布…

spring集成struts2

Struts2前身是WebWork,核心并没有改变,其实就是把WebWork改名为struts2,与Struts1一点关系没有。 Struts2中通过ObjectFactory接口实现创建及获取Action实例,类似于Spring的IoC容器,所以Action实例可以由ObjectFactory…

slqite3库查询数据处理方式_SQLite3命令操作大全

SQLite3命令操作大全SQLite库包含一个名字叫做sqlite3的命令行,它可以让用户手工输入并执行面向SQLite数据库的SQL命令。本文档提供一个样使用sqlite3的简要说明.一.qlite3一些常用Sql语句操作创建表: create table 表名(元素名 类型,…);删除表: drop …

Android学习之查看网络图片

在这里小编学习了查看网络图片的小案例,: 初始界面: 点击浏览后,效果如下: 需要注意的是 该案例需要获取联网权限,即: <uses-permission android:name"android.permission.INTERNET"/>具体步骤如下: 1.定义并初始化控件: private EditText etImageUrl;private …

AutoLayout 浅析动画

1.AutoLayout相关的几个易混淆的方法 setNeedsLayout layoutIfNeeded layoutSubViews setNeedsUpdateConstraints updateConstraitsIfNeed updateConstraints 子视图在界面上的显示大概经过了&#xff1a;更新约束-通过约束依赖关系得到具体的frame-展示到界面。上面几个是和au…

vue 转为静态html,Vue CLI 3使用:HTML和静态资源(五)

HTMLpublic/index.html 文件是一个会被 html-webpack-plugin 处理的模板。构建中&#xff0c;各种资源路径会被注入解析。可以使用 lodash template 语法插入内容。用来做不转义插值&#xff1b;用来做 HTML 转义插值&#xff1b;用来描述 JavaScript 流程控制。除了被 html-we…

animate css3 应用的借鉴,一个同事写的JS

$("#banner").height($(window).height()-125);$(window).resize(function(){ $("#banner").height($(window).height()-125);}); //首页幻灯$(".indeximgs:first").show();var i0;$(".leftbut").click(function(){$(".indexim…

从html导出带样式的excel,Jquery导出带样式的Excel

工作中做导出的时候&#xff0c;需要导出自定义的表格或嫌弃导出的Excel格式太难看了。需要设置颜色、字号大小、加粗、合并单元格等等。特性&#xff1a;支持过滤 某个位置支持过滤 img 标签支持过滤 a 标签支持过滤 input 标签支持包含 行内样式。HTML页面&#xff1a;HTML页…

elementui from表单提交_elementui upload与form一起提交

学生基本信息管理操作中&#xff0c;有照片&#xff0c;可以上传也可以不上传&#xff0c;在表单界面可以修改照片&#xff0c;el-upload控件可以带额外参数提交&#xff0c;jquery的post模拟不了成表单带文件提交的方式&#xff0c;因此&#xff0c;判断如果有上传文件时&…

information_schema.character_sets 学习

information_schema.character_sets 表用于查看字符集的详细信息 1、character_sets 常用列说明&#xff1a; 1、character_set_name&#xff1a;    字符集名 2、default_collate_name&#xff1a;    默认排序规则   3、description&#xff1a;         …

asp.net mvc 用Redis实现分布式集群共享Session。

1、这两天研究Redis搞分布式session问题&#xff0c;网上找的资料都是用ServiceStack.Redis来实现的&#xff0c;但是在做性能测试的时候发现最新的v4版本有限制每小时候最多请求6000次&#xff0c;因为官网开始商业化要收费了&#xff0c;好坑爹的说&#xff0c;还好我前期弄了…

如何用计算机求和,求和计算器

求和计算器您可以使用此求和计算器快速计算预定范围内某个表达式的序列之和。如何使用求和计算器输入总和的表达式输入上限和下限提供表达式中使用的变量的详细信息单击“计算”按钮生成结果。求和Σ符号计算器k ∑n 0变量:nixyzabc 103740支持的运算符常量和函数算术运算符加“…

Zookeeper概述、特点、数据模型

Zookeeper1.Zookeeper概述Zookeeper是一个工具&#xff0c;可以实现集群中的分布式协调服务。所谓的分布式协调服务&#xff0c;就是在集群的节点中进行可靠的消息传递&#xff0c;来协调集群的工作。Zookeeper之所以能够实现分布式协调服务&#xff0c;靠的就是它能够保证分布…

云计算机创意名,有创意的道路名字推荐,分享一些好听有内涵的路名

提到龙岗板块&#xff0c;“风向”一直飘忽不定。原本地铁4号线今年通车&#xff0c;但是因为五象火车站的规划建设&#xff0c;暂时未开通;机场线已经敲定&#xff0c;然而没有龙岗的份…… [本文来自&#xff1a;www.777y.com]虽然机场线暂时无缘(可以期待下)&#xff0c;但是…

250W电源带i7+GTX1080?

电源的科学: Q1&#xff1a;电源的额定功率是什么&#xff1f;峰值功率又是什么&#xff1f;A1&#xff1a;电源的额定功率就是电源正常工作时的功率&#xff0c;它的值为用电器的额定电压乘以额定电流。而峰值功率指的是电源短时间内能达到的最大功率&#xff0c; 一般情况下电…

uml里的extend和include_用例图中包含(include)扩展(extend)和泛化(generalization)关系详解...

标签&#xff1a;uml用例图是解决用户需求的图&#xff0c;画好用例图一定要理清用例之间的关系。用例之间有三种关系&#xff1a;包含(include)扩展(extend)和泛化(generalization)。下面介绍三者的相同点和不同点以便区分&#xff1a;相同点&#xff1a; 三者都是从现有的用例…