在使用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;