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