问题解决之 HANA 数据库行表访问性能下降

作者:ABAP技巧与实战 约 6 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:Basis, 系统管理

原创 无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)

**点击蓝字** 关注我们

问题描述

运行一段时间后,生产系统每天上午都很卡,表现为

• 执行简单显示事务系统无响应

• 登陆无响应

• 简单查询语句无响应

过2-3个小时后,系统趋于正常.

一般情况下,上述系统无响应的原因可以通过查看系统是否有空闲进程来判断原因.实际检查时发现(TCODE:SM50/SM66),系统还有大量空闲进程.

那基本上问题可以确定在数据库服务的响应上.因为所有无响应的事务都有一个共同点, 需要查询数据库.

问题分析-进程概览

系统进程大量卡在访问队列或后台作业相关的表(TCODE:SM66),如图一

• TRFCQIN

• TRFCQOUT

• ARFCSSTATE

• ARFCSDATA

• ARFCRSTATE

• QREFTID

• TRFCQDATA

• TRFCQSTATE

• TSTCS

• TSTCY

• TSTCP

问题解决之 HANA 数据库行表访问性能下降 - 封面图
问题解决之 HANA 数据库行表访问性能下降 - 封面图

图一

问题分析-归纳

这些表都是与后台作业或队列相关的表.

• 进一步查询队列情况(TCODE:SMQ1/SMQ2)

• 进一步查询后台作业情况 (TCODE: SM37)

发现系统响应很慢. 尤其时队列情况. 入站队列只有2000个左右, 但是SMQ2查询需要10分钟或更久.

DB02中查看表的情况: 索引占用空间远大于表占用空间(考虑删除索引后重建索引). 如图二

这些表还有如下共性

• 行表存储(通过TCODE SE11->技术设置可以看到如图三

• 表里的当前记录不大(使用完就会被删除)

注意到这些表是行存储的表. 基于从前ORACLE数据库的经验,行存储的表删除的条目还是会占用磁盘空间.

需要通过重组(类似于从前机械硬盘年代的磁盘重组)释放空间.HANA中的行表是否也可以通过 REORGANIZATION 来优化?

问题解决之 HANA 数据库行表访问性能下降 - 封面图
问题解决之 HANA 数据库行表访问性能下降 - 封面图

图二

问题解决之 HANA 数据库行表访问性能下降 - 封面图
问题解决之 HANA 数据库行表访问性能下降 - 封面图

图三

问题分析-一个优化方案

查询NOTES 发现了一个优化上述相关表访问的NOTES

查询到NOTES: 2700051 - Delivery of Statement Hints (SAP HANA >=

1.00.122.03)这个NOTES中提到对一些查询指定索引.

目前TRFCQIN等表中的记录不大, 但是查询很慢.

NOTES 2700051实际上是指定一些查询语句使用特定的索引来优化查询结果. 使用后没有效果.

问题分析-重组行表

带着这个问题通过关键字 REORGANIZATION查询了NOTES

查询到NOTES 1813245 - SAP HANA Row Store Reorganization

通过NOTES 1813245 得知

HANA行表的reorganization 根据版本不同, 有多种方式处理

• 重启数据库会触发离线重组

• 在线重组 HAHA2 SPS00->SPS03

• 在线重组 HANA2 >=SPS04

HANA数据库的版本可以通过GUI菜单->系统->状态查看

问题解决之 HANA 数据库行表访问性能下降 - 封面图
问题解决之 HANA 数据库行表访问性能下降 - 封面图
问题解决之 HANA 数据库行表访问性能下降 - 封面图
问题解决之 HANA 数据库行表访问性能下降 - 封面图
问题解决之 HANA 数据库行表访问性能下降 - 封面图
问题解决之 HANA 数据库行表访问性能下降 - 封面图

问题分析-检查HANA状态

参考下面这个NOTES 检查表 CALL CHECK_TABLE_CONSISTENCY('CHECK', 'SAPABAP1', 'TRFCQIN');

返回空信息

1977584 - Technical Consistency Checks for SAP HANA Databases

问题解决之 HANA 数据库行表访问性能下降 - 封面图
问题解决之 HANA 数据库行表访问性能下降 - 封面图

问题的解决

重启数据库自动触发

offline row store reorganization 解决问题

同时表的索引问题也得以解决

问题解决之 HANA 数据库行表访问性能下降 - 封面图
问题解决之 HANA 数据库行表访问性能下降 - 封面图

总结

特定版本的HANA系统(不确定最新版本的是否还有这个问题)对于频繁删除的行表 (比如后台作业相关表或队列相关表),没有定时重组表.

导致该表占用过大的空间(删除后的记录任然占用了空间),同时影响了表的查询性能并且占用了大量的数据库服务器资源.

生产系统每天早上都有大量的接口传递到S4系统处理, 这些处理同时启用队列及后台作业. 导致大量数据库资源被占用,无法响应一些新的简单查询.

导致系统异常卡顿.

重启数据库后,触发了系统的重组行表机制,解决了问题.

但是因为生产系统数据库不能总是通过重启解决问题,所以最终解决办法还是需要通过升级数据库, 或者定时通过脚本在线重组行表实现.

参考NOTES: 1813245

** THE **

** END **

**约定**

如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.

( **如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程.

越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.** )

问题解决之 HANA 数据库行表访问性能下降 - 封面图
问题解决之 HANA 数据库行表访问性能下降 - 封面图

**公众号 : syjf1976_abap**

**ABAP开发技巧**

**微信号 : 392077**

**请扫码加入公众号群,提问或参与话题讨论**

问题解决之 HANA 数据库行表访问性能下降 - 封面图
问题解决之 HANA 数据库行表访问性能下降 - 封面图
ABAP技巧与实战

关于作者:ABAP技巧与实战

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「问题解决之HANA数据库行表访问性能下降.md」整理生成,仅用于内部技术分享与学习交流。