美文网首页SAP
问题解决之 HANA数据库行表访问性能下降

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

作者: syjf1976_abap | 来源:发表于2021-07-16 06:23 被阅读0次

点击蓝字 关注我们

问题描述

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

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

  • 登陆无响应

  • 简单查询语句无响应

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

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

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

问题分析-进程概览

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

  • TRFCQIN

  • TRFCQOUT

  • ARFCSSTATE

  • ARFCSDATA

  • ARFCRSTATE

  • QREFTID

  • TRFCQDATA

  • TRFCQSTATE

  • TSTCS

  • TSTCY

  • TSTCP

图一

问题分析-归纳

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

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

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

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

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

这些表还有如下共性

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

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

注意到这些表是行存储的表. 基于从前ORACLE数据库的经验,行存储的表删除的条目还是会占用磁盘空间. 需要通过重组(类似于从前机械硬盘年代的磁盘重组)释放空间.HANA中的行表是否也可以通过 REORGANIZATION 来优化?

图二

图三

问题分析-一个优化方案

查询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状态

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

1977584 - Technical Consistency Checks for SAP HANA Databases

问题的解决

重启数据库自动触发

offline row store reorganization 解决问题

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

总结

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

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

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

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

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

参考NOTES:  1813245

THE

END

约定

相关文章

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

    点击蓝字 关注我们 一 问题描述 运行一段时间后,生产系统每天上午都很卡,表现为: 执行简单显示事务系统无响应 登...

  • 初识分库分表

    1. 为什么要分库分表? 什么场景下需要分库分表? 单表数据上亿,查询性能下降; 解决大数据存储,提高访问性能; ...

  • 数据高性能, 2022-06-06

    (2022.06.06 Mon)随着数据量的提升,数据库的访问和更新速度会有下降。本文介绍几种提升数据库性能的方向...

  • 分库分表

    数据库分表可以解决单表海量数据的查询性能问题,分库可以解决单台数据库的并发访问压力问题。 分库分表目前有很多的中间...

  • 第十天-《企业应用架构模式》-数据源架构模式

    1. 表数据入口 充当数据库表访问入口的对象,一个实例处理表中所有的行。 1)运行机制: 表数据入口包含了用于访问...

  • sharding-jdbc分库分表入门知识点

    为什么要分库分表 随着业务扩大,系统访问量增大,数据表数据增大,导致数据库性能出现瓶颈 如何分库分表 水平分库分表...

  • Cobar

    一、背景介绍 在MySQL数据库中,由于表的越来越大,导致了在单机环境下的性能下降,所以采用中间件对大表进...

  • Oracle分区表

    1.分区表概念当系统内数据量比较大的时候,访问性能就会急剧下降,直接影响到系统的性能问题。那么这个时候就要考虑使用...

  • SAP Hana 数据库编程接口 - Python

    Python Hana DB 驱动 Python 终于在 Hana 平台上成为一等公民了,可以轻松访问 Hana ...

  • 分布式事务解决方案

    何为分布式事务? 随着公司业务发展和数据量的增长,数据库单表超过千万级别时,数据库性能会直线下降,这时需要数据分区...

网友评论

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

    本文链接:https://www.haomeiwen.com/subject/xmjspltx.html