1. 引言
在实际使用中,通过HANA的admin控制台,确实可以得到很多重要的信息。但有的时候不如人愿,你需要提供相应的SQL语句得到具体的信息。
比如,我要得到所有的行表的内存及磁盘占用信息;我需要得到所有列表的内存及磁盘占用信息。
2. 方案
实际上HANA是有这些统计的SQL语句的。
具体如下:
-
所有列型表的内存总和:
select round(sum(MEMORY_SIZE_IN_TOTAL)/1024/1024) as "Column Tables MB Used" from M_CS_TABLE
-
各个列表的内存占用:
SELECT table_name, memory_size_in_total FROM M_CS_TABLES ORDER BY memory_size_in_total DESC;
-
所有行表的内存总和
select round(sum(USED_FIXED_PART_SIZE + USED_VARIABLE_PART_SIZE)/1024/1024) as "Row Tables MB Used" from M_RS_TABLES;
-
各个行表的内存占用:
SELECT table_name, (USED_FIXED_PART_SIZE + USED_VARIABLE_PART_SIZE) AS disk_size FROM M_RS_TABLES ORDER BY disk_size DESC;
-
所有表的磁盘占用总和:
SELECT SUM(disk_size)/1024/1024/1024 FROM m_table_persistence_statistics;
-
各个表的磁盘占用:
SELECT table_name, disk_size FROM m_table_persistence_statistics ORDER BY disk_size DESC;
将上述统计信息纳入日常监控,就可以对数据库表的使用情况了如指掌。结合表的记录条数信息。非常有助于HANA数据库的日常监控与维护。