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.pswp.cn/news/397832.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/397832.shtml
英文地址,請注明出處:http://en.pswp.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; 三者都是從現有的用例…