最近一直在做一些HANA性能分析的东西,觉得还是缺乏系统的指导,读一些文档,记一记笔记,翻译过来共同学习。主要记录一些用于分析的工具,或者是系统视图表的功能。整体来讲,Performance页面不是很好用,反应比较慢,而且可做的筛选和SQL语句没法比,还是看这些相关视图比较灵活。SAP还开发了一些语句来帮助判断系统运行状态,参考SAP Note 1969700。
分析系统性能时,首先打开管理工具HANA Studio的Performance界面,查看如下几点:
- 在thread页面,检查多少线程正在运行,他们在运行什么,有没有被block
- 在session页面,检查有没有block事务的session
- 有没有长时间运行的thread或者session,是否占用了大量资源
- (分布式部署情况下)比较不同主机的performance界面
线程页面
- 线程类型:比较重要的是SqlExecutor和JobWorker(早期版本是PlanExecutor) SqlExecutor处理SQL的编译,执行,或是获取上层应用(比如ERP,BW)执行结果。JobWorker用来处理列存储语句,并且会有一个SqlExecutor线程作为父节点。
- 线程执行内容: 检查Thread Detail, Thread Method, Thread Status
- 被事务阻碍(transactionally blocked)的线程:是指一个线程因为其他线程的占用,而无法获取所需事务锁时的状态。事务锁可以是表中的记录,也可以是等待网络或者磁盘资源。Transactional Lock Type会显示锁的具体类型,方便定位潜在问题。
线程相关视图:
- M_SERVICE_THREADS (历史记录)
- M_SERVICE_THREAD_SAMPLES (最近状态)
会话页面
会话页面可以看到:
- 活动/非活动会话及他们和应用的关系
- 会话是否被阻碍
- 被会话阻碍是事务
- 会话中语句运行的数据
- 活动会话中处理的运算
会话相关视图:
- M_CONNECTIONS
- M_TRANSACTIONS
作业过程页面
- 触发作业的连接
- 作业执行时间
- 作业步骤
相关视图:M_JOB_PROGRESS
还有最重要的SQL页面,内容会多一些,单独来写吧。