메모리 관련 SQL

메모리 사용


select top 1 HOST, SERVER_TIMESTAMP, round(TOTAL_MEMORY_USED_SIZE/1024/1024/1024, 2) as "Used Memory GB"
from _SYS_STATISTICS.HOST_SERVICE_MEMORY where SERVICE_NAME = 'indexserver'
order by TOTAL_MEMORY_USED_SIZE desc

select * from _SYS_STATISTICS.HOST_SERVICE_MEMORY where SERVICE_NAME = 'indexserver'

-- 전체 Allocation 대비 Used Memory % (분당 5개의 snapsbot 있는듯)
-- MEMORY_USED : The memory used by the service
select to_char(time, 'YYYY-MM-DD'),
round(avg(memory_used/1024/1024/1024/1024),2) as "Used (GB)",
round(avg(memory_allocation_limit/1024/1024/1024),2) as "Alloc (GB)",
round(avg(memory_used/memory_allocation_limit*100),2) as "PERC (%)"
from m_load_history_service group by to_char(time, 'YYYY-MM-DD')

--select to_char(time, 'YYYY-MM-DD'), avg(round(memory_used/memory_allocation_limit,2)*100) as "PERC (%)" from m_load_history_service group by to_char(time, 'YYYY-MM-DD')

-- 물리 메모리 대비 HANA가 사용하는 사이즈
-- MEMORY_USED : Memory used for all SAP HANA processes
-- MEMORY_SIZE : Physical memory size
--select to_char(time, 'YYYY-MM-DD'), avg(round(memory_used/memory_size,2)*100) from m_load_history_host group by to_char(time, 'YYYY-MM-DD')

-- History
--select to_char(time, 'YYYY-MM-DD'), round(avg(memory_used/memory_size*100),2), round(avg(memory_used),2), round(avg(memory_size),2) from m_load_history_host group by to_char(time, 'YYYY-MM-DD') order by 1
--select to_char(time, 'YYYY-MM-DD'), round(avg(memory_used/memory_size*100),2), round(avg(memory_used),2), round(avg(memory_size),2) from m_load_history_host where time between add_days(CURRENT_DATE, -7) and current_date group by to_char(time, 'YYYY-MM-DD')
--select to_char(time, 'YYYY-MM-DD'), round(avg(memory_used/memory_size*100),2) from m_load_history_host where time between add_days(CURRENT_DATE, -7) and current_date group by to_char(time, 'YYYY-MM-DD')

-- History peak memory
select to_char(server_timestamp, 'YYYY-MM-DD'), round(max(TOTAL_MEMORY_USED_SIZE/1024/1024/1024), 2)
from _SYS_STATISTICS.HOST_SERVICE_MEMORY
where SERVICE_NAME = 'indexserver'
group by to_char(server_timestamp, 'YYYY-MM-DD')
order by round(max(TOTAL_MEMORY_USED_SIZE/1024/1024/1024), 2) desc

-- top peak memory
select top 500 HOST, SERVER_TIMESTAMP,
       round(INSTANCE_TOTAL_MEMORY_USED_SIZE/1024/1024/1024, 2) as "Peak Used GB"
from _SYS_STATISTICS.HOST_RESOURCE_UTILIZATION_STATISTICS
 where HOST = node01 and SERVER_TIMESTAMP
order by "Peak Used GB" desc

-- top peak memory
select HOST, 
       round(INSTANCE_TOTAL_MEMORY_PEAK_USED_SIZE/(1024*1024*1024), 2) as "Peak Used Memory GB"
from M_HOST_RESOURCE_UTILIZATION;

-- allocation limit
SELECT HOST, 
       round(ALLOCATION_LIMIT/1024/1024/1024, 2) AS "Allocation Limit GB" 
FROM PUBLIC.M_HOST_RESOURCE_UTILIZATION;


-- Get the 10 top peak used memory details
-- Result is sorted by memory size.  ( it is not a sequential date and time list )

select top 30 HOST, 
       SERVER_TIMESTAMP, 
       round(INSTANCE_TOTAL_MEMORY_USED_SIZE/(1024*1024*1024), 2) as "Used Memory GB" 
from _SYS_STATISTICS.HOST_RESOURCE_UTILIZATION_STATISTICS
where hour(SERVER_TIMESTAMP) = 7 and minute(SERVER_TIMESTAMP) = 0 
order by INSTANCE_TOTAL_MEMORY_USED_SIZE;


-- 어제 사용량
--select to_char(time, 'YYYY-MM-DD HH24:MI'), round(avg(memory_used/memory_size*100),2), round(avg(memory_used),2), round(avg(memory_size),2) from m_load_history_host where to_char(time, 'YYYY-MM-DD') = add_days(CURRENT_DATE, -1) group by to_char(time, 'YYYY-MM-DD HH24:MI')

--select sum(memory_size_in_main+memory_size_in_delta)/1024/1024/1024 AS "CURRNET", sum(memory_size_in_total)/1024/1024/1024 AS "TOTAL" from m_cs_tables

--select INSTANCE_TOTAL_MEMORY_USED_SIZE/1024/1024/1024, INSTANCE_TOTAL_MEMORY_PEAK_USED_SIZE/1024/1024/1024, INSTANCE_TOTAL_MEMORY_ALLOCATED_SIZE from SYS.M_HOST_RESOURCE_UTILIZATION

--select to_char(time, 'YYYY-MM-DD'), avg(round(memory_used/memory_size,2)*100) from m_load_history_host group by to_char(time, 'YYYY-MM-DD')

--select to_char(time, 'YYYY-MM-DD'), avg(round(memory_used/memory_allocation_limit,2)*100) from m_load_history_service group by to_char(time, 'YYYY-MM-DD')

--select to_char(time, 'YYYY-MM-DD'), avg(memory_used) from m_load_history_service
--group by to_char(time, 'YYYY-MM-DD')

--select (USED_PHYSICAL_MEMORY + FREE_PHYSICAL_MEMORY)/1024/1024/1024, INSTANCE_TOTAL_MEMORY_USED_SIZE/1024/1024/1024 from SYS.M_HOST_RESOURCE_UTILIZATION

select add_seconds(current_time, 60*30) from dummy

--select * from tables where table_name like '%ALERT%' and schema_name <> 'SAPHANADB'
--select alert_timestamp, alert_rating, alert_host as host, alert_port, alert_details as port from _SYS_STATISTICS.STATISTICS_ALERTS_BASE order by alert_timestamp
--select * from _SYS_STATISTICS.STATISTICS_ALERTS_BASE where to_char(alert_timestamp, 'YYYY-MM-DD HH24:MI') > to_char(add_seconds(current_time, -60*60), 'YYYY-MM-DD HH24:MI')

select to_char(add_seconds(current_timestamp, -60*60), 'YYYY-MM-DD HH24:MI') from dummy

# HEAP Memory 높은지 Shared Memory 높은지.. Shared라면 (M_RS_TABLE확인)

SELECT TOP 3 HOST, PORT, SERVICE_NAME,
round(HEAP_MEMORY_USED_SIZE/1024/1024/1024,2) as "HEAP (GB)",
round(SHARED_MEMORY_USED_SIZE/1024/1024/1024,2) as "SHARED (GB)",
round(TOTAL_MEMORY_USED_SIZE/1024/1024/1024,2) as "TOTAL (GB)"
FROM M_SERVICE_MEMORY
ORDER BY SHARED_MEMORY_USED_SIZE DESC

Shared : SELECT TOP 50 * FROM M_RS_TABLES ORDER BY(ALLOCATED_FIXED_PART_SIZE + ALLOCATED_VARIABLE_PART_SIZE) DESC

Written on October 8, 2021