天天看點

vertica常用sql語句總結

在使用vertica的過程中,需要使用一些系統表對資料庫叢集進行監控,現對一些常用的sql語句進行總結。

1.檢視session資訊

select * from sessions;
           

2.關閉某個session

select CLOSE_SESSION ('sessionid');
           

sessionid由1中的查詢獲得

3.導出表結構

select export_objects('','tablename');
           

第一個參數為null表示将結果輸出到螢幕,也可以換成一個絕對路徑将結果輸出到檔案中。

4.收集統計資訊

select analyze_statistics('tablename');
           

該函數其實有3個參數,除了表名外,後邊還有可選的列參數及收集資訊時的抽樣百分比(預設為10%)。

5.檢視license資訊

select audit_license_size();
           

該函數會輸出license允許的資料量及license到期日期,以及目前的資料量。

6.檢視某個schema下的所有表的實際占用空間(壓縮後的空間使用)

SELECT 
   anchor_table_schema,
   anchor_table_name,
   SUM(used_bytes) / ( 1024^3 ) AS used_compressed_gb 
   FROM   v_monitor.projection_storage
   Where anchor_table_schema = 'public'
   GROUP  BY anchor_table_schema,
   anchor_table_name;
           

當然,也可以指定anchor_table_name來檢視某個表的壓縮後的空間占用。

7.檢視某個表下的projection資訊

select get_projections('tablename');
           

8.對某個表的projection進行重新整理

有兩種方法:

select START_REFRESH();
           

該方法會重新整理目前schema下的所有未更新到最新的projections,預設會在背景異步執行。

select refresh('tablename');
           

該方法在前台異步執行,會重新整理一個或多個表(參數可以用逗号隔開)。若不指定參數,會重新整理是以過期的projections。

9.檢視重新整理過程及狀态

selECT * from projection_refreshes where refresh_status = 'refreshing';
           

檢視哪些projection正在執行重新整理。

10.檢視每個節點,每個projection的ros容器個數

SELECT node_name, projection_schema, projection_name, SUM(ros_count) AS ros_count FROM v_monitor.projection_storage GROUP BY node_name, projection_schema, projection_name ORDER BY ros_count DESC;
           

vertica要求每個節點,每個projection的ros容器個數不超過1024,否則,在進行資料加載時可能會報錯。

11.檢視某個projection的分區個數

seleCT projection_name,count(distinct partition_key) from partitions group by projection_name order by projection_name;
           

通過對partitions系統表的查詢,可以獲得更多的分區資訊。

12.ros合并操作

select DO_TM_TASK('task'[, '[database.]schema.]{table | projection}]');
           

常用的task有兩個,分别是moveout和mergerout。

  • Moveout将資料從WOS複制到Tuple Mover,然後複制到ROS, 資料被分類,編碼和壓縮成列檔案。
  • Mergeout将較小的ROS容器組合成較大的容器,以減少碎片。

13.檢視正在運作的ros合并操作

seleCT projection_name,ros_count,total_ros_used_bytes from tuple_mover_operations where table_name = 'tablename' and operation_status = 'Running' group by projection_name,ros_count,total_ros_used_bytes order by projection_name;
           

14.檢視加載和拒絕的記錄數的一些資訊

SELECT schema_name, table_name, load_start, load_duration_ms, is_executing, parse_complete_percent, sort_complete_percent, accepted_row_count, rejected_row_count FROM v_monitor.load_streams;