SAP HANA性能优化(2)——M_EXPENSIVE_STATEMENTS

一、M_EXPENSIVE_STATEMENTS的概念及使用方法

系统视图M_EXPENSIVE_STATEMENTS提供所有执行时间超过指定阈值的语句,即查看在系统上执行的最耗时和最耗内存的语句。

需要关注字段是CPU_TIME和MEMORY_SIZE,可以使用以下的语句找出内存或者cpu占比较高的语句,注意,你能看到的信息取决于你的DB_USER权限。

参考语句如下,根据下边的语句,你可以根据MEMORY_SIZE或CPU_TIME排序,并对不理想的模型进行优化。

SELECT
DB_USER, 
SCHEMA_NAME,
to_decimal(CPU_TIME/1000000,8,2) as CPU_TIME, --指定计算语句消耗的 CPU 时间(秒为单位)
to_decimal(MEMORY_SIZE/1024/1024/1024,8,2) as MEMORY_SIZE,--指定语句执行期间的峰值内存使用量(G为单位)
TO_CHAR(STATEMENT_STRING) AS STATEMENT_STRING --执行语句
FROM "M_EXPENSIVE_STATEMENTS" 
WHERE 1=1
--AND "STATEMENT_STRING" LIKE '%部分查询语句%' --这里写具体的语句可以找到
--AND SCHEMA_NAME = 'HANABI_SCHEMA' --可以指定schema名
ORDER BY CPU_TIME DESC
--ORDER BY MEMORY_SIZE DESC

二、M_EXPENSIVE_STATEMENTS记录的信息

要在SAP HANA studio中配置阈值,可以在SAP HANA studio的Performance Expensive Statements Trace屏幕中激活耗时语句跟踪。点击Configure以打开Trace Configuration对话框。在那里,你可以激活跟踪并调整阈值。

可能会被记录的操作或语句

2.1 操作

COMPILE:编译语句。

FETCH:获取结果集。

CURSOR_CLOSE:关闭光标。

AGGREGATED_EXECUTION:计算SELECT查询的总执行时间,包括编译时间。

2.2 DML语句

CALL

DELETE

DEQUEUE

EXPLAIN_PLAN

INSERT

SELECT

SELECT_FOR_UPDATE

UPDATE

EXECUTE_DML:表示上述未列出的较少见的DML语句。

2.3 DDL语句

CREATE_TABLE

CREATE_VIEW

EXECUTE_DDL:表示上述未列出的较少见的DDL语句。

2.4 除DML和DDL之外的语句:

EXECUTE:表示较少见的SQL语句。

考虑一个客户端发送的包含4个会话请求的查询:

Prepare:10毫秒

Execute:20毫秒

Fetch:15毫秒

Close:5毫秒

假设所有操作的时间都超过阈值,它们会显示为:OPERATION DURATION COMPILE 10 SELECT 20 FETCH 15 CURSOR_CLOSE 5 AGGREGATED_EXECUTION 40 (20+15+5)。

附加信息

Column name

Description

HOST

指定主机名

PORT

 指定内部端口

CONNECTION_ID

 指定连接 ID

TRANSACTION_ID

 指定事务对象 ID

UPDATE_TRANSACTION_ID

 指定写入事务 ID

STATEMENT_ID

 指定语句 ID

PARENT_STATEMENT_ID

 指定父语句 ID

STATEMENT_HASH

 指定 SQL 字符串的唯一标识符

DB_USER

 指定用户名

SCHEMA_NAME

 schema名字

APP_USER

 指定应用程序用户名

START_TIME

 指定语句开始时间

DURATION_MICROSEC

 指定语句持续时间

OBJECT_NAME

 指定相关对象

OPERATION

 指定操作类型(准备、执行、获取或关闭)

RECORDS

 指定记录数

STATEMENT_STRING

 指定语句字符串

PARAMETERS

 指定语句参数

ERROR_CODE

 指定错误代码

ERROR_TEXT

 指定错误消息

LOCK_WAIT_COUNT

 指定累积锁等待计数

LOCK_WAIT_DURATION

 指定累积锁等待持续时间

ALLOC_MEM_SIZE_ROWSTORE

 已弃用,请勿使用

ALLOC_MEM_SIZE_COLSTORE

 已弃用,请勿使用

MEMORY_SIZE

指定语句执行期间的峰值内存使用量。在查询在分布式系统(即查询在多个主机上分布执行)中执行的情况下,MEMORY_SIZE 是所有涉及主机中最高的峰值内存使用量。因此,如果主机 A 的峰值使用量为 2 GB,主机 B 的峰值使用量为 3 GB,则 MEMORY_SIZE 显示为 3 GB。

此值由于缓存原因而保留或在语句执行后释放。

REUSED_MEMORY_SIZE

指定从缓存的数据结构中重用的内存。如果缓存为空,则该值为 0。

CPU_TIME

指定计算语句消耗的 CPU 时间(以微秒为单位)。

PASSPORT_ROOT_CONTEXT_ID

指定标识请求来源的 SAP EPP Passport GUID。

PASSPORT_TRANSACTION_ID

指定标识业务交易的 SAP EPP Passport GUID。

PASSPORT_CONNECTION_ID

指定标识连接的 SAP EPP Passport GUID

PASSPORT_CONNECTION_COUNTER

指定 SAP EPP Passport 连接计数器。

STATEMENT_START_TIME

指定语句执行的第一个操作开始的时间。语句执行的所有操作(准备、执行、获取或关闭)共享相同的语句开始时间。

APPLICATION_SOURCE

指定应用程序定义 SAP HANA 调用的源文件。使用由应用程序确定。该值还显示在 M_PREPARED_STATEMENTS.APPLICATION_SOURCE 中。

APPLICATION_NAME

指定应用程序的名称。

NETWORK_MESSAGE_ID

指定物理服务器连接上的客户端消息 ID,也可在 M_SQL_CLIENT_NETWORK_IO 和 MESSAGE_ID 中找到

WORKLOAD_CLASS_NAME

指定有效的工作负载类的名称

PRIORITY

指定有效的语句优先级

STATEMENT_THREAD_LIMIT

指定有效的语句线程限制

STATEMENT_MEMORY_LIMIT

指定有效的语句内存限制

SESSION_VARIABLES

指定语句的会话变量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值