統計資訊日誌表(hologres.hg_table_info)用於收集執行個體中表的相關中繼資料,包括建立時間、儲存量等資訊,以便業務對錶做精細化治理。基於hg_table_info表,Hologres提供了表索引診斷功能,通過對錶的索引(儲存模式、索引設定)等不同維度中繼資料進行診斷,協助業務更加高效的實現表治理,以提升執行個體的穩定性和查詢效能。
注意事項
-
表索引診斷的資料來源於統計資訊日誌系統資料表(hologres.hg_table_info),資料T+1更新,頁面預設查詢前一天的資料,不支援查詢當天的資料。
-
查詢許可權的授權方式與hg_table_info表相同,詳情請參見授予查看許可權。
操作步驟
您可以通過HoloWeb可視化查看錶索引診斷。
-
登入HoloWeb控制台,詳情請參見串連HoloWeb並執行查詢。
-
單擊頂部導覽列的診斷與優化。
-
在左側導覽列,選擇實例診斷>錶索引診斷。
-
在錶索引診斷頁面頂部,選擇需要診斷的執行個體所對應的實例名和時間。
-
單擊提交,即可查看所選執行個體的DB、Table Group、表(外表、內表)、View的總數,及其他診斷項的結果。
使用介紹和建議
選擇需要診斷的執行個體後,預設查詢前一天的資料,即可實現表索引的診斷。診斷項和對應的建議如下:
|
診斷項 |
描述 |
建議 |
|
每個DB對應的表和View數量 |
展示當前執行個體,每個DB內的內部表、分區子表、外部表格及View的總量。 |
建議對錶數量較多的DB進行針對性治理。 |
|
每個TG對應的內表數量 |
展示每個Table Group的內部表數量(包括分區子表)。 |
|
|
分區表數和儲存量 |
展示當前執行個體中分區表對應的分區子表和儲存量。 |
|
|
儲存為0的表 |
展示當前熱存和冷存都為0的表。 |
建議及時清理儲存為0的表,以減少Meta記憶體的佔用。 |
|
Segment格式的表 |
展示當前執行個體中所有採用Segment格式儲存的表。從V2.0版本開始,Hologres將不再支援Segment格式的表,需要手動將錶轉換為壓縮演算法更高效的ORC格式,在節約儲存成本的同時,也可能帶來效能的提升。如果不轉換為ORC格式,將無法升級執行個體到V2.0及以上版本。轉換操作請參見更改列存表的資料存放區格式。 重要
轉換表格式的執行個體版本必須為V1.3最新版本(大於或等於V1.3.6x),否則可能會導致轉換失敗,影響執行個體正常運行。 |
無。 |
|
行存表 |
展示當前執行個體所有的行存表。 |
|
|
行列共存表 |
展示當前執行個體所有的行列共存表。 |
行列共存表適合所有的應用情境,但是儲存會翻倍,請謹慎使用。詳情請參見表格儲存體格式:列存、行存、行列共存。通過如下SQL尋找某個行列共存表設計的Query。
|
|
沒有設定主鍵(PK)的行存表 |
行存表僅用於基於主鍵的查詢,必須建立主鍵才會有效果。 |
|
|
行存表Distribution key和Clustering key不一致的表 |
必須將行存表的Distribution key和Clustering key設定為相同欄位,否則會帶來額外的查詢開銷,降低查詢效能。 |
|
|
超過300列的列存表 |
列存表不建議超過300列,列越多,效能開銷越大。詳情請參見使用建議。 |
|
|
超過300列的行列共存表 |
行列共存表不建議超過300列,列越多,效能開銷越大。詳情請參見使用建議。 |
|
|
超過300列的行存表 |
行存表不建議超過300列,列越多,效能開銷越大。詳情請參見使用建議。 |
|
|
Distribution key超過3列的表 |
Distribution key用於決定資料的分布,尤其在Join情境中,合適的Distribution key可以實現Local Join,減少資料Shuffle,但Distribution key設定越多,使用情境越受限,建議控制在3列以內。詳情請參見分布鍵Distribution Key。 |
|
|
Clustering key超過3列的表 |
Clustering key可以實現資料在檔案內排序,常用於Range和範圍過濾的情境,具有左匹配原則,不建議設定超過3列,否則命中索引的情境會受限。詳情請參見聚簇索引Clustering Key。 |
|
|
Segment key超過3列的表 |
Segment key用於劃分檔案邊界,常用於時間戳記等單調遞增或遞減的欄位過濾查詢,具有左匹配原則,不建議設定超過3列,否則命中索引的情境會受限。詳情請參見Event Time Column(Segment Key)。 |
|
|
Clustering key列為nullable的表 |
Clustering key可以實現資料在檔案內排序,常用於Range過濾,不建議將欄位屬性設為Nullable,否則無法使用加速效果。詳情請參見聚簇索引Clustering Key。 |
重建立表,並將設定Clustering key的欄位屬性設為NOT NULL。 |
|
Segment key列為nullable的表 |
Segment key用於劃分檔案邊界,常用於時間戳記等單調遞增或遞減的欄位過濾查詢,不建議將欄位屬性設為Nullable,否則無法使用加速效果。詳情請參見Event Time Column(Segment Key)。 |
重建立表,並將設定Segment key的欄位屬性設為NOT NULL。 |
|
表資料TTL小於7天的表 |
表資料TTL可用於管理資料的生命週期,資料會在超過TTL後被清除,但TTL不會嚴格保證資料刪除的時間,而是會在到期後的某個時間刪除資料。當TTL設定的時間越短,資料刪除的時間也會越快。因此建議TTL不小於7天,否則可能會導致資料重複、資料被誤刪除等問題。詳情請參見SQL命令列表。 |
|
|
列出所有開了Binlog的表 |
開啟Binlog後,會有額外的儲存開銷,同時也建議行存表、行列共存表開啟Binlog,若列存表開啟Binlog,效能開銷較大。詳情請參見訂閱Hologres Binlog。 |
|
|
Binlog TTL大於7天的表 |
Hologres Binlog記錄了表的DML記錄,Binlog的TTL越長,保留的記錄越多,帶來的儲存開銷也越多,建議TTL保留在7天內。 |
對於Binlog TTL較長的表,使用如下語句將Binlog的TTL修改為一個較小的值。
|