ITPub博客

首页 > 数据库 > > SAP HANA内存使用监控

SAP HANA内存使用监控

作者:u_9ff4c058a0e0 时间:2022-03-07 14:48:48 0 删除 编辑

当使用SAP HANA作为分析型系统或数据仓库时,经常要监控系统的内存的使用情况,本文介绍一些常用的功能或查询SQL。


1. 查看服务器内存使用情况

双击服务器图标打开服务器监控界面:

在内存监控中,Used Memory和Peak Used Memory是最重要的内存使用指标;Used Memory代表SAP HANA使用内存的大小,Peak Used Memory记录着当前HANA系统曾经使用内存的最高峰值,而Allocation Limit是分配给当前HANA系统能够使用的最大的内存。

第二个需要注意的是Resident Memory,其中Total Resident指服务器上常驻使用的内存,本机是多租户,所以常驻内存比较多,实际剩余使用内存大概等于 总可用内存-常驻内存 。


2. 列存储表相关内存信息

① 以下SQL语句可以查询HANA系统中所有列存储的数据库表一共使用了多少内存:

SELECT    ROUND(SUM(MEMORY_SIZE_IN_TOTAL/1024/1024)) AS "Column Tables MB Used"FROM M_CS_TABLES

② 以下SQL语句显示当前SAP HANA系统中所有Schema占用的内存空间:

SELECT    SCHEMA_NAME AS "Schema",    ROUND(SUM(MEMORY_SIZE_IN_TOTAL)/1024/1024) AS "MB Used"FROM M_CS_TABLESGROUP BY SCHEMA_NAMEORDER BY "MB Used" DESC

③ 以下SQL语句可以列出某个Schema中所有的表使用的内存大小:

SELECT    TABLE_NAME AS "Table",    ROUND(MEMORY_SIZE_IN_TOTAL/1024/1024,2) AS "MB Used"FROM M_CS_TABLESWHERE    SCHEMA_NAME = '<Schema 名称>'ORDER BY "MB Used" DESC

④ 使用以下SQL语句,可以显示某个数据库表未压缩前的大小,以及在Main区域、Delta区域中数据所占用内存大小:

SELECT    COLUMN_NAME AS "Column",    LOADED,    ROUND(UNCOMPRESSED_SIZE/1024/1024) AS "Uncompressed MB",    ROUND(MEMORY_SIZE_IN_MAIN/1024/1024) AS "Main MB",    ROUND(MEMORY_SIZE_IN_DELTA/1024/1024) AS "Delta MB",    ROUND(MEMORY_SIZE_IN_TOTAL/1024/1024) AS "Total Used MB",    ROUND(COMPRESSION_RATIO_IN_PERCENTAGE/100,2) AS "Compr. Ratio"FROM M_CS_COLUMNSWHERE    TABLE_NAME = '<数据库表名称>'

⑤ 使用以下SQL语句,可以得到某个数据库表在内存中的整体压缩比(或者直接查看数据库表的Runtime Information,能都得到数据库表每一个数据列的精确压缩比):

SELECT    ROUND(SUM(MEMORY_SIZE_IN_MAIN)/1024/1024,2) AS "Memory Size in MAIN-MB",    ROUND(SUM(MEMORY_SIZE_IN_DELTA)/1024/1024,2) AS "Memory Size in Delta-MB",    ROUND(SUM(MEMORY_SIZE_IN_TOTAL)/1024/1024,2) AS "Total Size in Memory-MB",    ROUND(SUM(UNCOMPRESSED_SIZE)/1024/1024,2) AS "Uncompressed Total Size in Memory-MB",    ROUND(ROUND(SUM(UNCOMPRESSED_SIZE) /1024 /1024,2)/ROUND(SUM(MEMORY_SIZE_IN_TOTAL)/1024/1024,2),2) AS "Compressed Rate"FROM M_CS_COLUMNSWHERE    SCHEMA_NAME = '<Schema名称>' and     TABLE_NAME = '<数据库表名称>'


3. 行存储表相关内存信息

① 使用以下SQL语句,可以显示当前HANA系统中所有行存储表使用了多少内存空间:

SELECT    ROUND(SUM(USED_FIXED_PART_SIZE + USED_VARIABLE_PART_SIZE)/1024/1024) AS "Row Tables MB Used"FROM M_RS_TABLES

② 使用以下的SQL语句,可以显示所有Schema中每个行存储表单独使用的内存空间:

SELECT    SCHEMA_NAME,    TABLE_NAME,    ROUND((USED_FIXED_PART_SIZE + USED_VARIABLE_PART_SIZE)/1024/1024,2) AS "MB Used"FROM M_RS_TABLESWHERESCHEMA_NAME = '<Schema名称>'ORDER BY "MB Used" DESC,TABLE_NAME


本文仅是作者的粗浅理解,若有更好的方法欢迎与我沟通,十分感谢。

来源 https://mp.weixin.qq.com/s/haGcaMnk1MZgRvBWPTlV8Q

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69999831/viewspace-3140280/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2022-02-11

  • 博文量
    1828
  • 访问量
    20926