建立phoenix表
create table if not exists testtable(
a bigint not null,
b double,
c varchar(200),
d varchar(200)
constraint testtable primary key(a));
檢視表結構
!desc testtable;
刪除表drop table testable;
向表新增資料
python /export/servers/phoenix-4.14.0-cdh5.14.2/bin/psql.py -t testable node01 /opt/***.csv
資料查詢
select * from testable where a> 100;
目標:掌握phoenix索引型別,及建立語法。
掌握建立索引與查詢條件的設計原則。
在海量資料背景下,查詢資料快速返回是典型的應用場景。在phoenix資料表基礎之上建立索引,能夠大幅提高資料的查詢效率。phoenix支援的索引有三個型別,分別是覆蓋索引、全域性索引、本地索引
a: 覆蓋索引covered index
覆蓋索引要求查詢語句中的條件字段、查詢欄位都必須建立過索引,否則就會觸發「全域性掃瞄」(full table scan)
建立語法:create index coverindex user_index on user (name) include (age);
因此它的特點是:只需要通過索引就能返回所要查詢的資料 。
b: 全域性索引global indexes
global是預設的索引格式。
全域性索引適用於多讀少寫的場景,在寫操作上會給效能帶來極大的開銷,因為所有的更新和寫操作(delete,upsert values和upsert select)都會引起索引的更新,在讀資料時,phoenix將通過索引表來達到快速查詢的目的。如;
create index userid_index on user (userid);
它有乙個缺陷,如果查詢語句中的條件欄位或查詢字段不是索引字段,就會觸發全表掃瞄。例如:select userid,namefrom user where userid='8960321』
解決辦法有兩個:
一是和覆蓋索引一樣,建立索引時把查詢的相關字放入段include來。
create index userid_index on user (userid) include (name);
二是強制使用索引:
select /*+ index(user,userid_index) */ name from user userid='8960321』;
制使用索引的查詢語句會導致二次檢索資料表,第一次檢索是去索引表中查詢符合userid='8960321』的資料,此時候發現name欄位並不在索引欄位中,會去user 表中第二次掃瞄name。因此只有當使用者明確知道name符合檢索條件的資料較少的時候才適合使用,否則會造成全表掃瞄,對效能影響較大。
c: 本地索引local indexing
與global indexing不同,本地索引適用於寫多讀少的場景,當使用local indexing的時候即使查詢的所有欄位都不在索引欄位中時也會用到索引進行查詢,phoneix在查詢時會自動選擇是否使用本地索引(這是由local indexing自動完成的)。
create local index user_index on user (userid,name);
d: 索引常用操作
檢視表索引
!index 「harve_user」;
刪除索引
drop index user_index on user;
e: 索引有序性
建立的索引欄位的順序,與查詢語句條件欄位的順序,兩者之間的對應關係對索引是否生效有較大影響。
查詢語句條件欄位的順序盡量與索引的順序相同。索引的首字段在查詢條件中盡量第乙個出現。
測試建立測試表
create table if not exists testdata(
a bigint not null,
b bigint,
c bigint,
d bigint,
e bigint,
f bigint,
g bigint,
h bigint,
i bigint
constraint testdata primary key(a));
載入一千萬資料
python /export/servers/phoenix-4.14.0-cdh5.14.2/bin/psql.py -t testdata node01 testdatas.csv
建立索引
create index testdataindex on testdata (b,c,d,e,f)
Linux常用指令大全
1.ls list ls會列舉出當前工作目錄的內容 檔案或資料夾 就跟你在gui中開啟乙個資料夾去看裡面的內容一樣。2.mkdir make directory mkdir用於建立乙個新目錄 3.pwd printworking directory pwd顯示當前工作目錄 4.cd change d...
DOS常用指令大全
1 清屏指令 cls切換目錄篇 2 切換碟符 格式 碟符 例如,切換到 e盤 輸入指令 e 注 dos環境下不區分大小寫!3 切換目錄 格式 cd dir1 dir2 dir.例如 cd baidu 解釋 以上指令的意思是切換到當且系統盤下的baidu資料夾中 4 返回上一級目錄 格式 cd 5 返...
linux svn 常用指令大全
1 將檔案checkout到本地目錄 svn checkout path path是伺服器上的目錄 例如 svn checkout svn 簡寫 svn co 2 往版本庫中新增新的檔案 svn add file 例如 svn add test.php 新增test.php svn add php ...